public async Task AddCommand(CommandOptions options) { options.Id = Guid.NewGuid(); _logger.LogInformation("Adding bot command {commandId} ({commandAliases} - {commandType})", options.Id, string.Join(",", options.Aliases ?? new string[0]), options.Type); _channelBotState.State.Commands.Add(options.Id, options); var command = _registeredCommands[options.Type].Processor(); var registration = _registeredCommands[options.Type]; await _chatBot.RegisterMessageProcessor(registration.ProcessorType, options); await _channelBotState.WriteStateAsync(); }
private async Task StartBot(string oauthToken) { var botChatAuthenticated = Twitch.AuthenticateBot() .FromOAuthToken(oauthToken) .Build(); _chatBot = new TwitchChatBot(botChatAuthenticated, _appClient, ServiceProvider, ServiceProvider.GetRequiredService <ILogger <TwitchChatBot> >()); var orleansTaskScheduler = TaskScheduler.Current; _botCancellationSource = new CancellationTokenSource(); var cancellationToken = _botCancellationSource.Token; _botTask = Task.Run(() => _chatBot.StartAsync(cancellationToken)); _chatBot.SetChannel(_channelId); foreach ((var key, var processorInfo) in _channelBotState.State.Commands) { var registration = _registeredCommands[processorInfo.Type]; await _chatBot.RegisterMessageProcessor(registration.ProcessorType, processorInfo); } }