如何使我的Python Discord bot检查机器人本身是否发送了一条消息?

Eri*_*son 6 python python-3.x discord.py

我正在使用Python(v.3.6.1)编写Discord bot,它检测通道中发送的所有消息并在同一通道中回复它们.但是,机器人自己回复消息,导致无限循环.

@bot.event async def on_message(message) await bot.send_message(message.channel, message.content)

我该如何解决这个问题?

exc*_*aza 6

message类包含在邮件的信息author,你可以利用,以确定是否要对消息作出回应.author是一个Member对象(User如果通道是私有的,则是它的超类),它具有一个id属性,但也支持用户之间的直接逻辑比较.

例如:

@bot.event
async def on_message(message):
    if message.author != bot.user:
        await bot.send_message(message.channel, message.content)
Run Code Online (Sandbox Code Playgroud)

应该按照要求运作


小智 5

我知道这个问题是几年前的问题,但以防万一其他人像我一样在谷歌上搜索这个问题,传递给 on_message 的消息对象内部有一个作者对象,它有一个名为“bot”的属性,该属性是 true 或 false (true如果它是一个机器人)。因此,您可以通过在开头包含此 if 语句来将您的函数配置为安全地忽略其他机器人发送的任何消息:

def on_message(self, message):
    if (message.author.bot):
        return #if this is true: then it is by a bot.
Run Code Online (Sandbox Code Playgroud)