/// <summary> /// Initializes a new instance of the <see cref="EventHandler"/> class. /// </summary> /// <param name="client"> /// The client. /// </param> /// <param name="homeService"> /// The home Service. /// </param> /// <param name="config"> /// The config. /// </param> /// <param name="service"> /// The service. /// </param> /// <param name="levels"> /// The levels. /// </param> /// <param name="channelHelper"> /// The channel Helper. /// </param> /// <param name="commandService"> /// The command service. /// </param> /// <param name="prefixService"> /// The prefix Service. /// </param> public EventHandler(DiscordShardedClient client, TranslateLimitsNew limits, WaitService waits, DBLApiService dblService, TranslateMethodsNew translationMethods, TranslationService translationService, HomeService homeService, ConfigModel config, IServiceProvider service, LevelHelper levels, ChannelHelper channelHelper, CommandService commandService, PrefixService prefixService) { Client = client; Config = config; Provider = service; CommandService = commandService; prefixOverride = DatabaseHandler.Settings.UsePrefixOverride; PrefixService = prefixService; _ChannelHelper = channelHelper; _LevelHelper = levels; _HomeService = homeService; _Translate = translationService; Limits = limits; Waits = waits; TranslationMethods = translationMethods; DBLApi = dblService; CancellationToken = new CancellationTokenSource(); }
/// <summary> /// Initialization of our service provider and bot /// </summary> /// <returns> /// The <see cref="Task" />. /// </returns> public static async Task StartAsync() { // This ensures that our bots setup directory is initialized and will be were the database config is stored. if (!Directory.Exists(Path.Combine(AppContext.BaseDirectory, "setup/"))) { Directory.CreateDirectory(Path.Combine(AppContext.BaseDirectory, "setup/")); } LogHandler.LogMessage("Loading initial provider", LogSeverity.Verbose); var services = new ServiceCollection() .AddSingleton <DatabaseHandler>() .AddSingleton(x => x.GetRequiredService <DatabaseHandler>().Execute <ConfigModel>(DatabaseHandler.Operation.LOAD, id: "Config")) .AddSingleton(new CommandService(new CommandServiceConfig { ThrowOnError = false, IgnoreExtraArgs = false, DefaultRunMode = RunMode.Async })) .AddSingleton( x => { if (File.Exists(Path.Combine(AppContext.BaseDirectory, "setup/DBConfig.json"))) { var Settings = JsonConvert.DeserializeObject <DatabaseObject>(File.ReadAllText("setup/DBConfig.json")); return(Settings); } return(new DatabaseObject()); }) .AddSingleton(x => { if (File.Exists(Path.Combine(AppContext.BaseDirectory, "setup/DBConfig.json"))) { var Settings = JsonConvert.DeserializeObject <DatabaseObject>(File.ReadAllText("setup/DBConfig.json")); if (!string.IsNullOrEmpty(Settings.ProxyUrl)) { return(new HttpClientHandler { Proxy = new WebProxy(Settings.ProxyUrl), UseProxy = true }); } } return(new HttpClientHandler()); }) .AddSingleton(x => new HttpClient(x.GetRequiredService <HttpClientHandler>())) .AddSingleton <BotHandler>() .AddSingleton <EventHandler>() .AddSingleton <Events>() .AddSingleton(x => x.GetRequiredService <DatabaseHandler>().InitializeAsync().Result) .AddSingleton(new Random(Guid.NewGuid().GetHashCode())) .AddSingleton(x => new DiscordShardedClient( new DiscordSocketConfig { MessageCacheSize = 0, AlwaysDownloadUsers = false, LogLevel = LogSeverity.Info, TotalShards = x.GetRequiredService <ConfigModel>().Shards })) .AddSingleton( x => { var config = x.GetRequiredService <ConfigModel>().Prefix; var store = x.GetRequiredService <IDocumentStore>(); return(new PrefixService(config, store)); }) .AddSingleton <TagService>() .AddSingleton <PartnerService>() .AddSingleton <LevelService>() .AddSingleton <ChannelService>() .AddSingleton <HomeService>() .AddSingleton <ChannelHelper>() .AddSingleton <PartnerHelper>() .AddSingleton <Interactive>() .AddSingleton( x => { var limits = new TranslateLimitsNew(x.GetRequiredService <IDocumentStore>()); limits.Initialize(); return(limits); }) .AddSingleton(x => new TranslateMethodsNew(x.GetRequiredService <DatabaseObject>(), x.GetRequiredService <TranslateLimitsNew>(), x.GetRequiredService <ConfigModel>())) .AddSingleton <LevelHelper>() .AddSingleton <TranslationService>() .AddSingleton( x => { var birthdayService = new BirthdayService(x.GetRequiredService <DiscordShardedClient>(), x.GetRequiredService <IDocumentStore>()); birthdayService.Initialize(); return(birthdayService); }) .AddSingleton( x => { var gameService = new GameService(x.GetRequiredService <IDocumentStore>(), x.GetRequiredService <DatabaseObject>()); gameService.Initialize(); return(gameService); }) .AddSingleton <TimerService>() .AddSingleton <DBLApiService>() .AddSingleton <WaitService>(); var provider = services.BuildServiceProvider(); LogHandler.LogMessage("Initializing HomeService", LogSeverity.Verbose); provider.GetRequiredService <HomeService>().Update(); LogHandler.LogMessage("Initializing PrefixService", LogSeverity.Verbose); await provider.GetRequiredService <PrefixService>().InitializeAsync(); LogHandler.LogMessage("Initializing BotHandler", LogSeverity.Verbose); await provider.GetRequiredService <BotHandler>().InitializeAsync(); LogHandler.LogMessage("Initializing EventHandler", LogSeverity.Verbose); await provider.GetRequiredService <EventHandler>().InitializeAsync(); // Indefinitely delay the method from finishing so that the program stays running until stopped. await Task.Delay(-1); }
public Translate(TranslateLimitsNew limits, TranslateMethodsNew methods) { Limits = limits; Methods = methods; }