Exemplo n.º 1
0
        public async Task <Result <bool> > ToggleListeningAsync(string channel)
        {
            try
            {
                if (!_isListening)
                {
                    // initialize twitch client based on credentials
                    var tokenResult = await GetAccessTokenAsync();

                    if (tokenResult?.ResultType != ResultType.Ok)
                    {
                        return(new InvalidResult <bool>(tokenResult?.Errors?.FirstOrDefault() ?? "Unable to get access token. Sign in first"));
                    }

                    var credentials   = new ConnectionCredentials(channel, tokenResult?.Data);
                    var clientOptions = new ClientOptions
                    {
                        MessagesAllowedInPeriod = 750,
                        ThrottlingPeriod        = TimeSpan.FromSeconds(30)
                    };
                    var customClient = new WebSocketClient(clientOptions);
                    _twitchClient = new TwitchClientObject(customClient);
                    _twitchClient.Initialize(credentials, channel);
                    _twitchClient.OnMessageReceived += TwitchClient_OnMessageReceived;
                    _twitchClient.Connect();
                }
                else if (_twitchClient != null)
                {
                    _twitchClient.Disconnect();
                    _twitchClient.OnMessageReceived -= TwitchClient_OnMessageReceived;
                }

                return(new SuccessResult <bool>(true));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return(new UnexpectedResult <bool>());
            }
        }
Exemplo n.º 2
0
        public Bot()
        {
            var credentials   = new ConnectionCredentials(Keys.TwitchAccount, Keys.TwitchToken);
            var clientOptions = new ClientOptions
            {
                MessagesAllowedInPeriod = 750,
                ThrottlingPeriod        = TimeSpan.FromSeconds(30)
            };
            var customClient = new WebSocketClient(clientOptions);

            client = new TwitchClientObject(customClient);
            client.Initialize(credentials, Keys.TwitchChannel);

            client.OnLog             += Client_OnLog;
            client.OnJoinedChannel   += Client_OnJoinedChannel;
            client.OnMessageReceived += Client_OnMessageReceived;
            client.OnWhisperReceived += Client_OnWhisperReceived;
            client.OnNewSubscriber   += Client_OnNewSubscriber;
            client.OnConnected       += Client_OnConnected;

            client.Connect();
        }