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

Discord.js拉取消息时如何实现关键词大小写不敏感匹配

Discord.js 消息关键词大小写不敏感匹配方案

原代码的大小写敏感问题来自String.includes()本身的严格匹配特性,.toLowerCase()是所有JavaScript字符串的原生方法,不存在“仅能用于指令处理场景”的使用限制——拉取到的消息对象的content属性本身就是标准字符串类型,可直接调用所有字符串实例方法。

实现思路

把待匹配的关键词、待检测的消息内容统一转换为全小写(或全大写)格式后再做包含判断,即可完全消除大小写差异带来的匹配误差。

修正后代码

banlist.messages.fetch({limit : 30}).then(messages => {
    // 循环外提前转换关键词格式,避免重复计算损耗性能
    const targetKeyword = check.toLowerCase()
    const positive = messages.some(msgs => {
        return msgs.content.toLowerCase().includes(targetKeyword)
    })
    if (!positive) {
        // 未匹配到关键词的业务逻辑
        // ...
    } else {
        // 匹配到关键词的业务逻辑
        // ...
    }
})

进阶拓展(可选)

如果需要实现更严谨的匹配规则,比如整词匹配、避免关键词被其他长单词误命中,可以用带i(大小写不敏感)标识的正则实现:

// 转义关键词中的正则特殊字符,避免语法错误
const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
// 构造大小写不敏感的整词匹配正则
const keywordReg = new RegExp(`\\b${escapeRegExp(check)}\\b`, 'i')
const positive = messages.some(msgs => keywordReg.test(msgs.content))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:09:26