【问题标题】:How do you send a private message on_ready aka on a @client.event. Discord.py您如何在@client.event 上发送私人消息 on_ready aka。不和谐.py
【发布时间】:2022-01-20 15:58:51
【问题描述】:

我进行了多次尝试。

# One of the attempts
 ch = client.get_user(USERID)
 await ch.send("IDK")

#Another
 client = discord.Client()

 @client.event
 async def on_ready():
  user = "@name"
  user = discord.Member

  await user.send(user, "here")

#Another
 client = discord.Client()

 @client.event
 async def on_ready():
  user = discord.utils.get(client.get_all_members(), id='USERID')

  if user is not None:
    await client.send(user, "A message for you")
  else:
    await client.send(user, "A message for you")

#Another
 @client.event
 async def on_ready():
    ch = client.get_all_members()
    await ch.send("Hello")

# Another
    ch = client.start_private_message(USERID)
    await ch.send("IDK")

如您所见,我弄乱了变量,因为我注意到您可以像这样通过渠道发送消息

channel = client.get_channel(CHANNELID)
await channel.send("Something)

但这不适用于 get_user。在此先感谢,也很抱歉我的帖子/代码有多糟糕。

【问题讨论】:

    标签: discord.py


    【解决方案1】:

    请允许我告诉您您提供的代码有什么问题。

    await client.send(user, "A message for you") 是较旧的语法,自v1.0 migration 以来一直未使用。

    client.get_all_members() 在这种情况下不应使用,因为您只会获取与机器人共享服务器的所有成员,而不是单个用户。

    client.start_private_message(USERID) 据我所知不存在,因此我们可以假设这行不通。

    我的建议是使用我将详细介绍的两种方法之一。

    第一种方法是使用client.fetch_user(),它将请求发送到 Discord API 而不是其内部缓存(就像第二种方法一样)。使用此方法您将面临的唯一问题是,如果您在短时间内检索到太多用户,这将使您受到速率限制。除此之外,我推荐这种方法。

    第二种方法是通过client.get_guild() 获取服务器,并通过guild.get_member() 获取您的用户。但是,此方法将要求用户位于其缓存中,因此在我看来,这不应该是您的首选方法。

    请在下面的代码中查看这两种方法。

    @client.event
    async def on_ready():
        # Method 1: Using fetch
        user = await client.fetch_user(USER_ID)
        await user.send("A message!")
    
        # Method 2: Using 'get'
        guild = client.get_guild(GUILD_ID)
        user = guild.get_member(USER_ID)
        await user.send("A message!")
    

    其他链接

    【讨论】:

      猜你喜欢
      • 2020-05-11
      • 2021-06-30
      • 2020-07-28
      • 2021-03-13
      • 2021-06-28
      • 1970-01-01
      • 2018-11-19
      • 2020-09-13
      • 2019-03-12
      相关资源
      最近更新 更多