当另一个人使用命令时,如何对 discord.py 机器人进行编程以通知我?

Posted

技术标签:

【中文标题】当另一个人使用命令时,如何对 discord.py 机器人进行编程以通知我?【英文标题】:How to program a discord.py bot to dm me when a command is used by another person? 【发布时间】:2021-09-05 14:52:48 【问题描述】:

我想创建一个命令,人们可以使用它向我发送建议。他们会使用命令“!suggest”,然后是他们的输入,然后机器人私下将整个消息发送给我。但是,我正在努力让机器人 dm 我而不是命令的作者。

if message.content.startswith('!suggest'):
            await message.author.send(message.content)

这里的问题在于代码中的author 部分-而不是每次都 dming 我,它会 dm 键入命令的人,这对我没用。我怎样才能用我的不和谐 ID 替换“作者”,以使其与我和只有我有关?我以前问过这个问题,但所有答案都对我不起作用。这些是我得到但不起作用的解决方案:

message.author.dm_channel.send("message"),但这是同一个问题,并没有摆脱作者问题。

me = await client.get_user_info('MY_SNOWFLAKE_ID')
await client.send_message(me, "Hello!")

这段代码对我也不起作用。每次 dming 的用户都是相同的,所以我不需要首先运行 get_user_info。每当第二行运行时,我都会收到错误代码,因为 MyClient 无法使用 send_message 属性。

【问题讨论】:

【参考方案1】:

您的代码来自旧的不和谐版本。它已在 discord.py 重写中进行了更改。我还建议您使用discord.ext.commands 而不是使用on_message 手动读取命令。 至于dm,只需使用

your_id = 123456789012345678
me = client.get_user(your_id)
await me.send("Hello")

请注意,它需要启用成员意图。如果您没有启用它,请使用await fetch_user(your_id)。另外,请注意,如果多个用户同时使用命令,也可能会导致速率限制。

文档:

get_user fetch_user User.send

【讨论】:

【参考方案2】:
@client.command()
async def suggest(ctx, message = None):
       if message == None:
           await ctx.send("Provide a suggestion")
       else:
          await ctx.your_id.send("message")

请不要介意缩进

【讨论】:

【参考方案3】:

您可以通过以下方式对用户进行 dm:

user = client.get_user(your_id_here)
await user.send('work!')

常见问题解答:https://discordpy.readthedocs.io/en/stable/faq.html#how-do-i-send-a-dm

如果你想要这里的完整代码:

@client.command()
async def suggest(ctx, *, suggest_text):
       user_suggestor = ctx.author
       user = client.get_user(user_id) # replace the user_id to your user id
       if suggest_text == None:
           await ctx.send("Enter your suggestion! example : !suggest your suggest here")
       else:
           await user.send(f"user_suggestor.name sent an suggestion! \nSuggestion : suggest_text") # the \n thing is to space

稍后谢谢我:D

【讨论】:

我在使用user = client.get_user时仍然不断收到错误,它一直说它没有'send'属性。

以上是关于当另一个人使用命令时,如何对 discord.py 机器人进行编程以通知我?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Discord.py 对特定用户进行 dm?

如何在调用函数时使用 discord.py 添加反应?

如何在 discord.py 中使用高级命令处理

如何将 discord.py 帮助命令放入嵌入中?

如何将错误添加到特定命令 discord.py

当命令 discord.py 的参数不正确时如何显示消息?