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

时间:2017-12-20 13:41:29

标签: 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)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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)

应该按照需要运作

答案 1 :(得分:2)

我知道这个问题是从几年前开始的,但是如果其他任何人都像我一样搜索这个问题,则传递给on_message的消息对象内部将包含一个author对象,该对象具有名为“ bot”的属性,该属性为true或false(如果是机器人则为true)。因此,您可以通过在开头添加以下if语句,将功能配置为安全地忽略其他漫游器发出的任何消息:

operator->