首页 > 解决方案 > 阻止不和谐机器人对其自身做出响应

问题描述

我对编码真的很陌生,我只是想知道我是否可以在基于 Frost Bot 的不和谐机器人上获得一些帮助。

这个想法很简单,Frost 会响应用户,但我已经删除了提及它以获得响应的需要。我也有一个双胞胎机器人,想法是让他们交谈,他们确实这样做了,但似乎他们正试图回应他们自己所说的话,这导致积压的回复出现。

这是用 Python 编写的大部分代码——如果这很重要的话。

@client.event
async def on_ready():
    print('Logged in as '+client.user.name+' (ID:'+client.user.id+') | '+str(len(client.servers))+' servers')
    await client.change_presence(game=discord.Game(name='chat with me!'))

@client.event
async def on_message(message):
    if not message.author.bot == client.user:
        await client.send_typing(message.channel)
        txt = message.content.replace(message.server.me.mention,'') if message.server else message.content
        r = json.loads(requests.post('https://cleverbot.io/1.0/ask', json={'user':user, 'key':key, 'nick':'frost', 'text':txt}).text)
        if r['status'] == 'success':
            await client.send_message(message.channel, r['response'] )

任何帮助都将不胜感激,因为我对脚本/编码非常陌生,并且已经花了几个小时来尝试研究解决方案。

标签: pythonbotsdiscord

解决方案


做一个message.author.id == otherBotID: #stuff

如果您要与多个其他机器人进行对话,请切换到 NOT 运算符并将其作为您自己的机器人 ID,然后检查消息作者是否是机器人。

编辑

将其替换为if not message.author.bot == client.user:.
最初,您正在检查消息的作者是否不是用户。如果它不是用户,你会做一些事情。
但是由于您自己的机器人本身不是用户,因此当您的机器人发送消息(并接收它自己的消息)时,if 语句也会通过。
因此,我们放置一个 if 语句来检查机器人的 ID 是否等于目标机器人的 ID。


推荐阅读