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

如何为Node.js Twitch Bot实现!Timeout @(user)超时命令?

实现Twitch Bot管理员超时命令功能

你的现有代码存在几个问题:仅匹配了无参数的!timeout命令、错误使用了发送者ID而非目标用户、超时时间不符合需求,同时未覆盖主播作为管理员的场景。以下是修正后的完整实现:

client.on("message", (channel, user, message, self) => {
  if (self) return;

  // 匹配带目标用户的!timeout命令,支持@用户名或纯用户名格式
  const timeoutMatch = message.match(/^!timeout\s+@?(\w+)$/);
  if (timeoutMatch) {
    // 验证发送者是管理员(频道 moderator 或主播)
    const isAdmin = user.mod || (user.badges?.broadcaster === '1');
    if (!isAdmin) {
      client.say(channel, "只有管理员才能使用该命令");
      return;
    }

    const targetUser = timeoutMatch[1];
    // 发送Twitch超时命令,设置600秒超时
    client.say(channel, `/timeout ${targetUser} 600`);
    client.say(channel, `已将@${targetUser}设置为600秒超时`);
  }
});

关键细节说明:

  • 命令解析:通过正则表达式/^!timeout\s+@?(\w+)$/精准匹配带目标用户的命令,自动提取去掉@符号的纯用户名。
  • 权限验证:同时判断发送者是频道 moderator(user.mod)或主播(通过user.badges中的broadcaster标识),覆盖所有合法管理员身份。
  • 超时执行:Twitch的/timeout命令无需带@符号,直接传入用户名即可,超时时间严格设置为需求的600秒。
  • 交互反馈:执行完成后发送聊天消息确认操作,让管理员和观众清晰知晓结果。

如果后续需要支持自定义超时时间,可以扩展正则捕获时间参数,比如/^!timeout\s+@?(\w+)\s+(\d+)$/,将第二个分组作为超时时间传入命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:45:24