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

如何使用Python代码向Twitch仅粉丝可见聊天室发送消息?

解决方案

核心原因

Twitch的仅粉丝可见/仅订阅可见等受限聊天室,依赖IRC扩展能力做权限校验,你当前的代码没有申请Twitch专属IRC能力、且未等待聊天室加入确认就直接发消息,是消息发送失败的核心原因。

需要修改的内容

  • 首先确认前置条件:你的账号已经关注对应频道(仅粉丝聊天室要求发送者是频道粉丝,频道主本人无需关注),且生成OAuth令牌时已授予chat:edit、chat:read权限。
  • 连接完成发送PASS、NICK命令后,需要额外发送Twitch IRC能力请求命令,告知服务器你需要使用受限聊天室相关的扩展能力。
  • 发送JOIN命令后不要立刻发消息,先监听服务器返回的响应,直到收到明确的JOIN成功报文后再发送私聊消息。
  • 增加PING报文响应逻辑,避免连接被Twitch服务器主动断开。

修改后代码示例

import socket
import socks

channel = 'some_channel'
name = 'some_nickname'
oauthtoken = 'oauth:sometoken123456'
message = 'hello chat'

s = socks.socksocket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("irc.chat.twitch.tv" , 6667))
s.send(f"PASS {oauthtoken}\r\n".encode())
s.send(f"NICK {name}\r\n".encode())
# 新增:申请Twitch IRC扩展能力
s.send(b"CAP REQ :twitch.tv/commands\r\n")
s.send(b"CAP REQ :twitch.tv/tags\r\n")

# 发送加入请求
join = f"JOIN #{channel}\r\n"
s.send(join.encode())

# 等待加入成功确认
joined = False
while not joined:
    resp = s.recv(4096).decode('utf-8')
    print(resp)
    # 处理PING保活
    if resp.startswith("PING"):
        s.send(f"PONG {resp.split()[1]}\r\n".encode())
        continue
    # 检查是否加入成功
    if f"JOIN #{channel}" in resp:
        joined = True

# 加入成功后再发消息
message = f"PRIVMSG #{channel} :{message}\r\n"
s.send(message.encode())

# 可选:接收发送后的响应
final_resp = s.recv(4096).decode('utf-8')
print(final_resp)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:57:00