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

Twitch IRC集成:NAMES命令返回421错误,如何获取频道用户列表?

嘿,我帮你搞定这个Twitch IRC获取在线用户列表的问题!你遇到的421 Unknown Command错误其实是因为Twitch对NAMES命令的要求和标准IRC不太一样,加上几个小调整就能解决:

1. 修正NAMES命令的格式

Twitch IRC要求NAMES命令必须指定目标频道,不能直接发裸的NAMES。正确的格式是:

NAMES #你的频道名

你之前的names方法里只发了NAMES,没有带频道参数,所以服务器才返回未知命令错误。

2. 确保membership权限已生效

你已经在onOpen里发送了CAP REQ :twitch.tv/membership,这步是对的——这个权限是获取用户列表的前提。不过可以在onMessage里加个监听,确认Twitch已经确认了这个权限:

// 在onMessage的条件判断里加这个分支
else if(parsed.command === "CAP") {
  console.log('权限确认:', parsed.message);
}

当Twitch返回CAP * ACK :twitch.tv/membership时,就说明权限生效了。

3. 修改你的names方法

把原来的names方法改成带频道参数的版本:

chatClient.prototype.names = function names(){
  var socket = this.webSocket;
  if (socket !== null && socket.readyState === 1) {
    // 带上频道名发送NAMES命令
    socket.send('NAMES ' + this.channel);
  }
}
4. 处理NAMES的响应结果

当服务器收到正确的NAMES命令后,会返回两个关键响应:

  • 353:包含当前频道的在线用户列表(可能分批返回)
  • 366:表示用户列表已经发送完毕

你需要在onMessage里添加这两个命令的处理逻辑,比如:

chatClient.prototype.onMessage = function onMessage(message){
  if(message !== null){
    var parsed = this.parseMessage(message.data);
    if(parsed !== null){
      console.log(parsed)
      if(parsed.command === "PRIVMSG") {
        // 你的积分统计逻辑保持不变
        userPoints = localStorage.getItem(parsed.username);
        if(userPoints === null){
          localStorage.setItem(parsed.username, 10);
        } else {
          localStorage.setItem(parsed.username, parseFloat(userPoints) + 0.25);
        }
      } else if(parsed.command === "PING") {
        this.webSocket.send("PONG :" + parsed.message);
      } else if(parsed.command === "353") {
        // 解析用户列表,split后得到用户数组
        var onlineUsers = parsed.message.trim().split(' ');
        console.log('当前在线用户:', onlineUsers);
        // 这里可以把用户列表渲染到你的UI里
      } else if(parsed.command === "366") {
        console.log('用户列表已全部加载完成');
      }
    }
  }
};
小提示
  • 你的parseMessage方法已经能处理353这类命令的结构,但可以测试一下如果解析出问题的话,稍微调整一下切割逻辑。
  • Twitch可能会把大量用户分成多个353响应返回,所以一定要等366再确认列表完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:17:55