【发布时间】:2018-06-27 11:51:54
【问题描述】:
我对编程很陌生,只是在学习。我认为制作一个不和谐的机器人是一种很好的学习方式,我很享受它,我只是有点卡住了。所以我的机器人是私有的,并且在我们的不和谐服务器中有一个正在运行的笑话,即每当用户发送“k”时,所有机器人都会以“k”响应。 ATM 我们有 Dyno,我朋友的私人机器人,希望是我的。我的所有代码都能正常工作,除了因为命令和答案相同,我的机器人只是用“k”向服务器发送垃圾邮件,直到我关闭机器人,我该如何停止它?
代码:
@client.event
async def on_message(message):
if message.content ==("k"):
await client.send_message(message.channel, "k")
await client.process_commands(message)
【问题讨论】:
-
对我来说听起来像是一个逻辑问题。你的机器人发送
k。此消息再次到达您的机器人本身,被解释为另一个触发器,因此您的机器人发送k再次,从而关闭无限循环。 (暂时)让您的机器人仅对x做出反应并回复k怎么样?然后它不能触发自己。正确的解决方案是更仔细地查看触发消息,如果可以发现它是来自机器人本身的消息,则忽略它。 -
您需要添加一个测试来检查发布“K”的实体的用户名,或者...您需要添加一个超时时间,然后才能再次响应,比如 5 秒跨度>
-
我现在确实有一个临时解决方法,它以 k 响应!所以它不是无限的,但它仍然重复就像两三遍。我将更多地研究如何忽略某些用户,即它本身和所有其他机器人。它并不多,但它的开始:D