当有人提到它时,我如何让机器人做出回应?不和谐.py

Vid*_*ero 2 discord.py discord.py-rewrite

这是我试过的代码:

@client.event
async def on_message(message):
    if client.user.mention in message.content.split():
        await client.say("You can type `!vx help` for more info.")
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用。

Dig*_*gy. 5

使用命令装饰器时,您可以执行以下操作:

from discord.ext import commands # necessary for this task

client = commands.Bot(command_prefix=commands.when_mentioned_or("!"))
Run Code Online (Sandbox Code Playgroud)

或者使用on_message()事件,这是您可以检查提及的多种方法之一:

@client.event
async def on_message(message):
    if client.user.mentioned_in(message):
        await message.channel.send("You can type `!vx help` for more info")
Run Code Online (Sandbox Code Playgroud)

另外,我注意到您向频道发送消息的方法不太正确。

在 d.py rewrite (v1.x) 中,您有一个abc.Messageable对象,顾名思义,它类似于服务器的文本频道、DM 或群聊。

这个对象有一个方法被调用send(),它允许你发送内容。您会发现这种情况的一些常见情况是;ctx.send()当您使用命令装饰器时 - 它们Context作为第一个参数 -message.channel.send()当您on_message()像您一样使用事件时。它也会出现在其他一些地方,但这些将是最常见的。

您对它是一个协程有正确的想法,因此需要await它。在文档中,它会说明某些东西是否是协程。


参考: