discord.py消息计数器始终停留在1的问题求助
解决discord.py消息计数器始终停在1的问题
嘿,这问题一看就明白啦!你代码里的问题很典型:每次on_message事件触发(收到消息时),你都先把message_counter重置为0,然后再加1——这不就等于每次都只计数1嘛,完全没法实现累加效果。
问题根源
你把message_counter = 0写在了on_message函数内部,这意味着每收到一条消息,计数器就会被重新初始化一次,之前的计数直接被清零,累加操作根本起不了作用。
修正后的代码
我们只需要把计数器的初始化移到事件函数外面,让它只在程序启动时设置一次,然后在事件里只做累加操作就行。另外别忘了加上await cord.process_commands(),否则你的机器人命令可能会失效:
# 在全局作用域初始化计数器,程序启动时只执行一次 message_counter = 0 @cord.event async def on_message(message): global message_counter # 移除重置为0的代码,直接执行累加 message_counter += 1 # 必须添加这行,保证机器人的命令能正常被处理 await cord.process_commands()
额外优化:排除机器人自身消息
如果不想把机器人自己发送的消息也算进计数器,可以加个判断跳过这类消息:
message_counter = 0 @cord.event async def on_message(message): global message_counter # 跳过所有机器人账号发送的消息 if message.author.bot: return message_counter += 1 await cord.process_commands()
这样修改后,计数器就能正常累加每条收到的有效消息啦!
内容的提问来源于stack exchange,提问作者Zen
相关产品推荐
相关产品推荐

