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

Tmi.js开发指南:如何让聊天机器人命令支持接收参数

Tmi.js 命令带参数实现方案

核心思路是将收到的指令消息按规则拆分为主命令、子命令、参数列表三个部分,不再直接匹配完整消息内容,修改后可直接适配你给出的!poll weights [50, 60, 75]需求,修改后的代码如下:

client.on('message', (target, context, msg, self) => {
  if (self) { return; }
  const msgcon = msg.trim();
  if (msgcon.startsWith('!')) {
    // 按任意数量空格切割消息,避免多空格导致的解析错误
    const args = msgcon.split(/\s+/);
    // 取出第一个元素作为主命令,统一转小写兼容大小写输入
    const command = args.shift().toLowerCase();

    if (command === '!poll') {
      // 第一个参数为子命令,对应示例中的weights
      const subCommand = args[0];
      // 剩余内容统一归为参数数组
      const params = args.slice(1);
      
      // 示例逻辑:处理weights子命令
      if (subCommand === 'weights') {
        // 拼接参数提取方括号内的数字数组
        const weightStr = params.join(' ');
        const weights = weightStr.match(/\d+/g)?.map(Number) || [];
        // 后续可自行添加weights参数的业务逻辑
        client.say(target, `已设置投票权重为:${weights.join(', ')}`);
        console.log('获取到的权重参数:', weights);
      }

      console.log(`* 执行命令 ${command},子命令 ${subCommand},参数 ${JSON.stringify(params)},目标频道 ${target}`);
    } else {
      console.log(`* 未知命令 ${command},尝试执行位置 ${target}`);
    }
  }
});

核心修改说明

  • 拆分逻辑兼容多空格输入,不会因为用户多打空格导致命令匹配失败
  • 主命令统一转小写处理,用户输入!Poll、!POLL都可以正常触发命令
  • 特殊格式参数支持:针对方括号包裹的数组类参数,直接用正则提取即可得到可用的数值数组,不需要手动处理括号、逗号等特殊符号
  • 扩展性强:后续要新增!poll start、!poll end等其他子命令,直接在!poll的判断分支内加对应子命令的判断即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 21:24:05