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

如何让Discord Bot仅识别独立指令词'Ed'而非单词内嵌字符?

解决Discord Bot误识别名字为单词后缀的问题

你现在的问题是Bot会把单词里的'ed'(比如need里的)当成呼叫指令,加空格的判断方式又处理不了句首的情况。用正则表达式的单词边界匹配就能精准解决这个问题,它能准确识别独立的"Ed"/"ed",不管是在句首还是句子中间。

改进后的代码

首先导入Python自带的re正则模块,然后修改判断逻辑:

import re
import random

@bot.listen()
async def on_message(positive):
    if positive.author == bot.user:
        return
    
    # 统一转小写后匹配,用正则定位独立的'ed'
    content_lower = positive.content.lower()
    if 'positivity' in content_lower and re.search(r'\bed\b', content_lower):
        await positive.channel.send(random.choice(positivity))

代码说明

  • re.search(r'\bed\b', content_lower)里的\b是单词边界,它会匹配两种合法呼叫场景:
    1. "ed"在句子开头(比如"Ed, positivity"转小写后,开头的ed前是字符串边界,符合\b规则)
    2. "ed"前后是空格、标点这类非字母字符(比如"hey ed, positivity"里的独立ed)
  • 这种方式完全不会匹配到need、liked这类单词里的'ed'后缀。

可选优化

如果要支持用户输入带标点的呼叫(比如"Ed!"、"ed?"),当前正则依然有效——转小写后,标点会被排除在单词边界外,\b依然能识别到独立的ed。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:30:47