public async Task Install(IServiceProvider _services) { // Create Command Service, inject it into Dependency Map client = _services.GetService <DiscordSocketClient>(); commands = new CommandService(); //_map.Add(commands); services = _services; config = _services.GetService <Config>(); events = _services.GetService <EventStorage>(); service = _services.GetService <EmergencyQuestService>(); await commands.AddModulesAsync(Assembly.GetEntryAssembly(), services); //await HelpModule.Install(commands); client.MessageReceived += HandleCommand; }
private async Task RunAsync() { socketClient = new DiscordSocketClient(new DiscordSocketConfig { //WebSocketProvider = WS4NetProvider.Instance, LogLevel = LogSeverity.Verbose }); socketClient.Log += Log; restClient = new DiscordRestClient(new DiscordRestConfig { LogLevel = LogSeverity.Verbose }); restClient.Log += Log; if (File.Exists("./update")) { var temp = File.ReadAllText("./update"); ulong.TryParse(temp, out updateChannel); File.Delete("./update"); Console.WriteLine($"Found an update file! It contained [{temp}] and we got [{updateChannel}] from it!"); } config = Config.Load(); events = EventStorage.Load(); var map = new ServiceCollection().AddSingleton(socketClient).AddSingleton(config).AddSingleton(events).BuildServiceProvider(); await socketClient.LoginAsync(TokenType.Bot, config.Token); await socketClient.StartAsync(); await restClient.LoginAsync(TokenType.Bot, config.Token); if (File.Exists("./deadlock")) { Console.WriteLine("We're recovering from a deadlock."); File.Delete("./deadlock"); foreach (var u in config.OwnerIds) { (await restClient.GetUserAsync(u))? .SendMessageAsync($"I recovered from a deadlock.\n`{DateTime.Now.ToShortDateString()}` `{DateTime.Now.ToLongTimeString()}`"); } } eqService = new EmergencyQuestService(); await eqService.Install(map); map = new ServiceCollection().AddSingleton(socketClient).AddSingleton(config).AddSingleton(events).AddSingleton(eqService).BuildServiceProvider(); socketClient.Disconnected += SocketClient_Disconnected; socketClient.GuildAvailable += Client_GuildAvailable; handler = new CommandHandler(); await handler.Install(map); //await Task.Delay(3000); //var avatar = new Image(File.OpenRead(".\\TaranzaSOUL.png")); //await client.CurrentUser.ModifyAsync(x => x.Avatar = avatar); await Task.Delay(-1); }