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>()); } }
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(); }