如何使 discord.py 机器人私人/直接消息不是作者的人?
问题描述
假设我想制作一个具有poke"功能的机器人(也就是当有人说!poke @user#0000"时向用户发送一个说Boop"的 pm),我该怎么做?当我这样做时效果很好:
Say I want to make a bot with a "poke" feature (aka sends a pm to a user saying "Boop" when someone says "!poke @user#0000"), how would I do this? It works perfectly when I do this:
@bot.command(pass_context=True)
async def poke(ctx, message):
await client.send_message(ctx.message.author, 'boop')
但前提是我想戳消息的作者.我想戳那些被@'d 的人.
but only if I want to poke the author of the message. I want to poke whoever's being @'d.
我知道 discord.py 文件说我可以使用这个:
I know the discord.py documents say I can use this:
start_private_message(user)
但我不知道用什么代替用户.
but I don't know what to put in place of user.
解决方案
其实比那个简单
@bot.command(pass_context=True)
async def poke(ctx, member: discord.Member):
await bot.send_message(member, 'boop')
send_message
包含私人消息的逻辑,因此您不必自己使用 start_private_message
.: discord.Member
称为转换器,描述为 在此处的文档中
send_message
contains logic for private messages, so you don't have to use start_private_message
yourself. The : discord.Member
is called a converter, and is described in the documentation here
相关文章