python - 阻止不和谐机器人对其自身做出响应
问题描述
我对编码真的很陌生,我只是想知道我是否可以在基于 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'] )
任何帮助都将不胜感激,因为我对脚本/编码非常陌生,并且已经花了几个小时来尝试研究解决方案。
解决方案
做一个message.author.id == otherBotID: #stuff
。
如果您要与多个其他机器人进行对话,请切换到 NOT 运算符并将其作为您自己的机器人 ID,然后检查消息作者是否是机器人。
编辑
将其替换为if not message.author.bot == client.user:
.
最初,您正在检查消息的作者是否不是用户。如果它不是用户,你会做一些事情。
但是由于您自己的机器人本身不是用户,因此当您的机器人发送消息(并接收它自己的消息)时,if 语句也会通过。
因此,我们放置一个 if 语句来检查机器人的 ID 是否等于目标机器人的 ID。
推荐阅读
- python - 在 Django 中设置 PasswordResetForm 的语言?
- c# - 在 DDD 整体中跨服务/模块时,在我的处理程序中调用调解器是否正确
- python - 无法创建多个 sqlite 表
- javascript - ASP.net c# WebForms在page_load上向多个文本框添加一个属性
- php - 如何在 Laravel 中向 mongodb 集合插入任意 JSON 响应?
- c# - 为什么我的 OpenFileDialog 不允许我进入或越过它?
- unity3d - Unity LWPR 看不到某些层
- python - BeautifulSoup find_all('href') 只返回部分值
- google-sheets - 为什么 INDEX(...,COUNTA(...),..) 可以找到一个数组的最后一个值,而不能找到另一个?
- python - 如何将字典的内容附加到python中的列表?