Python discord.py如何检测仅使用代码本身中定义的协同路由发送消息?

Python discord.py如何检测仅使用代码本身中定义的协同路由发送消息?,python,discord.py,Python,Discord.py,我是一名中级python程序员,刚刚开始使用discord.py模块编写discord机器人程序。有一个问题总是萦绕在我的脑海中,模块如何使用代码中声明的on_message()协同路由来检测发送的消息,而没有这样的检测构造 async def on_message(mssg): #our conditions and responses 考虑上面的代码。当我们在代码中声明on_message()时,模块中是否有一个等价的预定义协程调用,或者是否有其他东西使它能够检测消息并将其传递给函

我是一名中级python程序员,刚刚开始使用discord.py模块编写discord机器人程序。有一个问题总是萦绕在我的脑海中,模块如何使用代码中声明的on_message()协同路由来检测发送的消息,而没有这样的检测构造

async def on_message(mssg):
    #our conditions and responses

考虑上面的代码。当我们在代码中声明on_message()时,模块中是否有一个等价的预定义协程调用,或者是否有其他东西使它能够检测消息并将其传递给函数参数,或者检测任何其他事件?在youtube或其他网站上,他们只是让你学习语法,出于某种原因,你必须使用async…等待文档。

因此,如果内存没有问题,On_message()就是每次发送消息时调用bot来侦听发送的每条消息。因此,使用您的代码:

async def on_message(mssg):
    #our conditions and responses
实际上,我们可以通过一些交互工作来修饰它,比如:

@bot.listen('on_message')

这是一个bot事件,因此每次发送消息时,都会调用此函数

async def stuff(消息):

传递消息,以便bot知道要扫描的内容

if message.content.startswith(“buttlerprefix”):

以if语句开始,这样bot就可以检查用户的消息了

如果我键入
buttlerprefix
并按enter键,它将响应以下消息:

msg=wait message.channel.send(“我的前缀是`>`”)

如果您想执行额外的步骤,并保持通道declutterd,您可以将响应设置为一个变量
msg
,以备以后需要对其进行操作时使用,因此在这种情况下,将其设置为自动删除

await asyncio.sleep(10)
await msg.delete()
因此,如果我们把所有这些放在一起:

@bot.listen('on_message') 
async def stuff(message):

    if message.content.startswith("buttlerprefix"):
        msg = await message.channel.send("my prefix is `>`")
        await asyncio.sleep(10)
        await msg.delete()
我们得到了一个函数,它现在正在扫描通过该机器人运行的公会发送的每一条消息,无论是哪个频道,因为每次发送消息时都会调用
@bot.listen
函数