【发布时间】:2020-07-30 09:26:14
【问题描述】:
我正在用 Python 编写一个不和谐的机器人,但遇到了一个我目前无法修复的相当愚蠢的错误。 该机器人应该通过允许用户注册基于昵称的字符来补充在线笔和纸 rpgs,这些字符可以滚动支票等。
如果玩家上线,机器人应该检查该玩家是否在其所有者键下的角色数据库中。如果是这种情况,机器人应该为用户分配一个特定的角色,这允许进一步的命令。 出于持久性原因,在服务器(也就是我的机器)上为每个注册角色创建一个文件,并且一个用户可以拥有多个角色(因为我同时与同一个人玩多个活动)。您可以看到这是一长串根据在线、离线、昵称等自动分配和撤销角色的第一步。
我只为此编写了代码的基础,但遇到了一个令我困惑且似乎无法解决的问题。
我的代码:
# on_member_update the bot recognizes if someone comes online and their name shows up in the character database
# if so the bot should assign them the role "Spieler" on the server. Right now prints to console for testing.
@bot.event
async def on_member_update(before,after):
if before.status == discord.Status.offline and str(after) in characters:
print("Rollenwechsel!")
else:
print("Studenten verteilen Flugblätter. Nichts geschieht.")
如果我在我的电脑或笔记本电脑上运行它,它会在状态更改时触发两次,在昵称或角色等更改时触发一次。
如何停止双重触发?额外问题:为什么要这样做?
提前致谢。
ps:如果需要,请询问更多代码。 pps:我对编码很陌生。记住这一点。 ppps:如果其他地方已经回答了这个问题,我深表歉意。经过大约一个小时的激烈谷歌搜索后,我写了这篇文章。
【问题讨论】:
-
对我来说,在这两种情况下,发布的代码只触发一次。您还有其他正在处理的事件吗?也许将您的代码剥离为仅此事件并验证双重触发?
-
将其简化为仅此事件。对我来说仍然是双重触发。
标签: python discord.py