插件要求
Twitch作为插件提供,未与核心安装捆绑在一起。 通过CLI(npm注册表)安装:- 为机器人创建一个专用的Twitch账号(或使用现有账号)。
- 生成凭据:Twitch令牌生成器
- 选择Bot Token
- 确保已选中作用域
chat:read和chat:write - 复制客户端ID和访问令牌
- 确保已选中作用域
- 查找您的Twitch用户ID:https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/
- 配置令牌:
- 环境变量:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(仅限默认账号)- 或配置文件:
channels.twitch.accessToken - 如果同时设置了环境变量和配置文件,则以配置文件为准(环境变量仅作为默认账号的后备)。
- 或配置文件:
- 启动网关。
allowFrom或allowedRoles),以防止未经授权的用户触发机器人。requireMention默认为true。
最小配置:
但它是什么
- 由网关拥有的Twitch频道。
- 确定性路由:回复始终返回到Twitch。
- 每个账号映射到一个隔离的会话密钥
agent:<agentId>:twitch:<accountName>。 username是机器人的账号(用于身份验证),channel是要加入的聊天室。
设置(详细)
生成凭据
使用Twitch令牌生成器:- 选择Bot Token
- 确保已选中作用域
chat:read和chat:write - 复制Client ID和Access Token
配置机器人
环境变量(仅限默认账号):访问控制(推荐)
"moderator"、"owner"、"vip"、"subscriber"、"all"。
为什么使用用户ID? 用户名可能会更改,从而导致冒充。用户ID是永久性的。
查找您的Twitch用户ID:https://www.streamweasels.com/tools/convert-twitch-username-%20to-user-id/(将您的Twitch用户名转换为ID)
令牌刷新(可选)
来自Twitch令牌生成器的令牌无法自动刷新——过期后需重新生成。 若要实现自动令牌刷新,请在Twitch开发者控制台中创建您自己的Twitch应用,并将其添加到配置中:多账号支持
使用channels.twitch.accounts配合每个账号的令牌。有关共享模式的详细信息,请参阅gateway/configuration。
示例(一个机器人账号在两个频道中):
访问控制
基于角色的限制
按用户ID的白名单(最安全)
白名单与角色相结合
位于allowFrom中的用户会绕过角色检查:
禁用@提及要求
默认情况下,requireMention为true。要禁用并响应所有消息:
机器人不回复消息
检查访问控制: 暂时设置allowedRoles: ["all"]进行测试。
检查机器人是否在频道中: 机器人必须加入channel中指定的频道。
令牌问题
“连接失败”或身份验证错误:- 确认
accessToken是OAuth访问令牌的值(通常以oauth:为前缀) - 检查令牌是否具有
chat:read和chat:write作用域 - 如果使用令牌刷新功能,确保已设置
clientSecret和refreshToken
令牌刷新不起作用
检查日志中的刷新事件:- 确保提供了
clientSecret - 确保提供了
refreshToken
配置
账号配置:username- 机器人用户名accessToken- OAuth访问令牌,包含chat:read和chat:writeclientId- Twitch客户端ID(来自令牌生成器或您的应用)channel- 要加入的频道(必填)enabled- 启用此账号(默认:true)clientSecret- 可选:用于自动令牌刷新refreshToken- 可选:用于自动令牌刷新expiresIn- 令牌有效期(秒)obtainmentTimestamp- 令牌获取时间戳allowFrom- 用户ID白名单allowedRoles- 基于角色的访问控制("moderator" | "owner" | "vip" | "subscriber" | "all")requireMention- 要求@提及(默认:true)
channels.twitch.enabled- 启用或禁用频道启动channels.twitch.username- 机器人用户名(简化单账号配置)channels.twitch.accessToken- OAuth访问令牌(简化单账号配置)channels.twitch.clientId- Twitch Client ID(简化单账号配置)channels.twitch.channel- 要加入的频道(简化单账号配置)channels.twitch.accounts.<accountName>- 多账号配置(包含上述所有账号字段)
工具操作
代理可以调用twitch执行以下操作:
send- 向频道发送消息
安全与运维
- 将令牌视为密码 - 切勿将令牌提交到Git
- 对长期运行的机器人使用自动令牌刷新
- 使用用户ID白名单而不是用户名进行访问控制
- 监控日志以查看令牌刷新事件和连接状态
- 尽可能缩小令牌的作用域 - 仅请求
chat:read和chat:write - 如果卡住:在确认没有其他进程占用会话后重启网关
限制
- 每条消息最多500个字符(在单词边界处自动分块)
- 在分块之前会剥离Markdown
- 无速率限制(使用Twitch内置的速率限制)