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

Discord机器人异常问题:匹配指定短语却响应所有消息

问题原因

你的代码把存储短语的列表转成了字符串,导致message.content in List的逻辑完全错误——它不再检查消息是否匹配文件里的短语,而是检查消息内容是否是这个列表字符串的子串(比如消息里的任何字符只要出现在["xxx", "yyy"]这种格式里,都会被匹配),所以才会响应所有消息。此外,每次收到消息都重新读取文件也会影响性能。

修正后的代码
# 在机器人启动时读取一次文件,避免重复IO
with open("D:/code/code/DIscord bot/myFile.txt", "r", encoding="utf-8") as f:
    # 去掉每行的换行符和空白字符,过滤空行
    trigger_phrases = {line.strip() for line in f if line.strip()}

@client.event
async def on_message(message):
    # 忽略机器人自己发的消息
    if message.author == client.user:
        return

    # 情况1:消息内容完全等于某个短语时回复
    if message.content.strip() in trigger_phrases:
        await message.reply("REAL!")
    
    # 情况2:消息内容中包含任意一个短语时回复(如果需要这种逻辑就打开下面的代码)
    # for phrase in trigger_phrases:
    #     if phrase in message.content:
    #         await message.reply("REAL!")
    #         break
关键修改点
  • 提前读取文件:在机器人启动时就读取并处理好短语集合,不用每次收到消息都读文件,提升效率。
  • 正确存储短语:用集合存储处理后的短语(去掉换行、空白,过滤空行),集合的查找速度比列表更快。
  • 修正匹配逻辑:直接检查消息内容(或内容包含)是否在短语集合里,而不是错误的字符串子串匹配。

内容的提问来源于stack exchange,提问作者Isohel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:05:54