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

Discord.js如何让消息收集器将收集内容转为大写实现大小写不敏感匹配

问题原因

你之前添加的let msg = message.content.toUpperCase();是对触发verify指令的原始消息内容做大写转换,这个变量和后续消息收集器返回的消息对象完全无关:收集器回调函数的参数命名也为msg,直接覆盖了外层的变量,你所有匹配逻辑判断的都是用户后续回复的原始未转换内容,自然无法实现大小写不敏感匹配。

修复步骤
  1. 在收集器的collect事件回调第一行,先对用户回复的内容做统一大写转换
  2. 将所有匹配判断的条件值也改为全大写,和转换后的输入内容对齐
  3. 修复代码里隐藏的状态角色判断数组语法错误:原代码把两个州角色ID写在了同一个字符串里,会导致已拥有州角色的判断逻辑失效
修改后的核心代码示例
collector.on('collect', async msg=>{
  // 新增:统一将用户输入转为全大写
  const input = msg.content.toUpperCase();
  // 匹配判断改为用转换后的input变量,条件值改为全大写
  if(input === "DIXIE" ){
    // 修复数组语法错误:两个ID拆分为独立元素
    const arr = ['878755312159588462', '878764278931410996', '878764342462517298']
    if(message.member.roles.cache.some(r => arr.includes(r.id))) return message.channel.send('⚠️ You already have a state')
    if(msg.member.roles.cache.has(Dixie)) {
      message.channel.send(`🚫 Already have the state of ${msg.content}`)
    }  else {
      try{
        message.member.roles.add(Dixie)
        message.channel.send(`State of ${msg.content} Assigned✅`);
        message.channel.send({ embed: PartyMenu });
      } catch(error) {
        message.channel.send("⚠️Error has occurred, please contact server adminstrator.");
        console.log(error)
      } 
    }
  }
  // 其余所有判断逻辑都按该规则修改即可:
  // 把原判断里的msg.content替换为input,判断的字符串改为全大写
  // 示例:移除Dixie的判断改为if(input === "RDIXIE"),Pacifica匹配改为if(input === "PACIFICA"),确认的yes改为if(input === "YES"),以此类推
})
其他说明

给用户的提示回复可以保留原始的msg.content输出,不需要用转换后的大写内容,不会影响用户使用体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:51:02