我正在使用Python(v.3.6.1)编写Discord bot,它检测通道中发送的所有消息并在同一通道中回复它们。但是,机器人自己回复消息,导致无限循环。
@bot.event
async def on_message(message)
await bot.send_message(message.channel, message.content)
我该如何解决这个问题?
答案 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->