Exemplo n.º 1
0
        //public Task<IResult> ExecuteAsync(ICommandContext context, string input, IServiceProvider services, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception);
        public async Task ExecuteAsync(CommandContext context, ulong userid, string emoji, IServiceProvider services)
        {
            var serviceScopeFactory = (IServiceScopeFactory)services.GetService(typeof(IServiceScopeFactory));

            using (var scope = serviceScopeFactory.CreateScope())
            {
                var services2 = scope.ServiceProvider;
                var _db       = services.GetRequiredService <GameBotDbContext>();

                var monkey = new ReactionCommands(_db);
                await monkey.ReactToThis(context, userid, emoji);
            }
        }
Exemplo n.º 2
0
        public override Task StartAsync(CancellationToken cancellationToken)
        {
            Log.Information("Provisioning Services");
            _httpClient = new HttpClient();

            Log.Information("Configuring Discord client");
            var _dService = new Services(_config);


            var _dBuilder = new DependencyCollectionBuilder();

            _dBuilder.AddInstance <Services>(_dService);
            _dBuilder.AddInstance <IConfiguration>(_config);

            (_discord, _commands) = _dService.CreateDiscordClient(_dBuilder.Build());

            _commands.RegisterCommands <MessageCommands>();
            _commands.RegisterCommands <AttachmentCommands>();

            #region processors

            var _processors = new Processors(_config, _dService, _supportChannel);

            _discord.MessageCreated += async e =>
            {
                if (e.Message.Attachments != null && e.Message.Attachments.Any())
                {
                    await _processors.ProcessWithOCR(_discord, e);
                }
            };
            #endregion

            #region reactions

            var _reactionsWorker = new ReactionCommands(_config, _dService);

            _discord.MessageReactionAdded += async e =>
            {
                await _reactionsWorker.RunCommand_Reaction(_discord, e, _supportChannel);
            };

            #endregion

            _discord.ConnectAsync();

            var _assemblyVersion = typeof(Worker).Assembly.GetCustomAttribute <AssemblyFileVersionAttribute>().Version;

            // setup support channels
            try
            {
                var _supportUserId = _config["Discord:SupportUser"];
                var _supportUser   = _discord.GetUserAsync(ulong.Parse(_supportUserId)).Result;

                _supportChannel = _discord.CreateDmAsync(_supportUser).Result;
                _supportChannel.SendMessageAsync($"I'm alive! Now running version {_assemblyVersion}");
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Error setting up support channels");
            }

            return(base.StartAsync(cancellationToken));
        }