You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现当特定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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 02:57:31