如何实现当特定ID用户发送含指定内容的消息时退出Discord机器人程序?
修复你的Discord机器人退出逻辑问题
我看了你的代码,有几个语法和逻辑上的小问题导致功能无法正常工作,下面是修正后的完整代码,以及问题的详细说明:
@bot.event async def on_message(message): # 检查消息发送者ID是否匹配,注意用==而不是= if message.author.id == 581122734306754595: # 合并判断条件,让代码更简洁 target_strings = ["(1/5)", "(2/5)", "(3/5)"] if any(s in message.content for s in target_strings): exit() # 调用exit函数,必须加括号 # 确保处理命令的语句在事件函数内部 await bot.process_commands(message)
原代码的问题拆解:
- 赋值运算符错误:Python中判断相等要用
==,而你用了=(赋值运算符),这会直接把ID赋值给message.author.id,导致语法错误。 - 缺少冒号:每个
if语句结尾必须加:,这是Python的语法要求,否则解释器会报错。 - 未调用exit函数:
exit是内置函数,必须加括号exit()才会执行退出操作,只写exit只是引用函数对象,不会触发退出。 - 代码缩进错误:
await bot.process_commands(message)需要缩进,放在on_message函数内部,否则会被当作全局代码执行,引发错误。
另外,我把三个判断条件合并成了any()函数的形式,这样代码更简洁,后续要添加更多目标字符串时也更容易维护。
内容的提问来源于stack exchange,提问作者Mana
相关产品推荐
相关产品推荐

