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