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

使用TwitchLib PubSub无法监听预测、频道积分兑换事件如何解决?

问题排查及修复方案
  • 缺失有效认证令牌与权限
    Twitch PubSub的频道积分兑换、预测事件属于权限类事件,必须提供携带对应权限的OAuth令牌才能正常监听,你当前代码未对TwitchPubSub实例配置令牌,服务端会直接拒绝你的监听请求且无业务事件推送。
    需先在Twitch开发者控制台为你的应用申请两个权限scope:channel:read:redemptions、channel:read:predictions,生成有效OAuth令牌后,在调用Connect()方法前执行client.SetAuthToken("你的OAuth令牌")。
  • 未添加错误事件监听无法定位故障
    当前代码仅监听了连接成功和业务触发事件,未添加监听请求响应、服务端报错类回调,无法感知到监听被拒绝、令牌无效、权限不足等错误。建议额外添加错误事件监听打印故障信息:
    client.OnListenResponse += (s, e) => {
        if (!e.Success)
            Console.WriteLine($"监听失败:{e.Error}");
    };
    client.OnPubSubServiceError += (s, e) => {
        Console.WriteLine($"服务端错误:{e.Exception.Message}");
    };
    client.OnConnectionError += (s, e) => {
        Console.WriteLine($"连接错误:{e.Error}");
    };
    
  • 主线程提前退出导致进程终止
    如果你在控制台程序的Main方法中仅实例化了PubSub类就结束执行,程序会直接退出,后台的PubSub连接线程也会被销毁,无法接收后续推送事件。需要在入口逻辑添加阻塞代码保持进程运行,比如在Main方法最后加Console.ReadKey();。

修正后核心代码示例

using TwitchLib.PubSub;
using TwitchLib.PubSub.Events;

namespace PubSub_app
{
    class PubSub
    {
        TwitchPubSub client;
        public PubSub()
        {
            client = new TwitchPubSub();
            // 配置OAuth令牌,替换为你自己的有效令牌
            client.SetAuthToken("你的带对应权限的OAuth令牌");
            
            client.OnPubSubServiceConnected += Pubsub_OnPubSubServiceConnected;
            client.OnChannelPointsRewardRedeemed += Pubsub_OnChannelPointsRewardRedeemed;
            client.OnPrediction += Pubsub_OnPrediction;  
            // 添加错误事件监听
            client.OnListenResponse += (s, e) => {
                if (!e.Success)
                    Console.WriteLine($"监听频道{e.ChannelId}失败,错误:{e.Error}");
            };
            client.OnPubSubServiceError += (s, e) => {
                Console.WriteLine($"PubSub服务错误:{e.Exception?.Message ?? "未知错误"}");
            };
            client.OnConnectionError += (s, e) => {
                Console.WriteLine($"连接错误:{e.Error}");
            };

            client.Connect();
        }

        private void Pubsub_OnPubSubServiceConnected(object sender, System.EventArgs e)
        {
            client.ListenToChannelPoints("62651386");
            client.ListenToPredictions("62651386");
            Console.WriteLine("PubSub Connected");
        }            
        
        private void Pubsub_OnPrediction(object sender, OnPredictionArgs e)
        {
            Console.WriteLine("Prediction");
            Console.WriteLine(e.Title);
        } 

        private void Pubsub_OnChannelPointsRewardRedeemed(object sender, OnChannelPointsRewardRedeemedArgs e)
        {
            Console.WriteLine("Points redeemed");
            Console.WriteLine(e.RewardRedeemed);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            new PubSub();
            // 阻塞主线程保持进程运行
            Console.ReadKey();
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:08