如何使 discord.py 机器人私人/直接消息不是作者的人?

2022-01-15 00:00:00 python discord 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

相关文章