Beispiel #1
0
        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();
        }
Beispiel #2
0
        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);
            }
        }