コード例 #1
0
        /// <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();
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
 public Translate(TranslateLimitsNew limits, TranslateMethodsNew methods)
 {
     Limits  = limits;
     Methods = methods;
 }