Python discord.py如何检测仅使用代码本身中定义的协同路由发送消息?
我是一名中级python程序员,刚刚开始使用discord.py模块编写discord机器人程序。有一个问题总是萦绕在我的脑海中,模块如何使用代码中声明的on_message()协同路由来检测发送的消息,而没有这样的检测构造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()时,模块中是否有一个等价的预定义协程调用,或者是否有其他东西使它能够检测消息并将其传递给函
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
函数