Esempio n. 1
0
        public DatadogRoutine(
            AccountService accounts,
            AchievementService achievements,
            IAsyncEventingExecutor <IDiscordMessage> commandPipeline,
            Config config,
            IDiscordClient discordClient)
        {
            if (string.IsNullOrWhiteSpace(config.DatadogHost))
            {
                Log.Warning("Metrics are not being collected");
                return;
            }

            DogStatsd.Configure(new StatsdConfig
            {
                StatsdServerName = config.DatadogHost,
                StatsdPort       = 8125,
                Prefix           = "miki"
            });

            CreateAchievementsMetrics(achievements);
            CreateAccountMetrics(accounts);
            CreateEventSystemMetrics(commandPipeline);
            CreateDiscordMetrics(discordClient);
            Log.Message("Datadog set up!");
        }
Esempio n. 2
0
        private void CreateEventSystemMetrics(IAsyncEventingExecutor <IDiscordMessage> system)
        {
            if (system == null)
            {
                return;
            }

            system.OnExecuted += OnCommandProcessedAsync;
        }
Esempio n. 3
0
        public async Task StartAsync()
        {
            ServiceCollection serviceCollection = new ServiceCollection();

            await ConfigureAsync(serviceCollection);

            serviceCollection.AddSingleton(this);
            Services = serviceCollection.BuildServiceProvider();

            Pipeline = ConfigurePipeline(Services);
            var providers = ConfigureProviders(Services, Pipeline);

            await providers.StartAsync();

            await Task.Delay(-1); // Halts the thread.
        }
Esempio n. 4
0
        public override ProviderCollection ConfigureProviders(
            IServiceProvider services, IAsyncEventingExecutor <IDiscordMessage> pipeline)
        {
            var _             = services.GetService <DatadogRoutine>(); // Eager loading
            var discordClient = services.GetService <IDiscordClient>();

            discordClient.Events.GuildJoin.SubscribeTask(ClientJoinedGuildAsync);

            discordClient.Events.MessageCreate
            .SubscribeTask(async msg => await pipeline.ExecuteAsync(msg));

            pipeline.OnExecuted += LogErrorsAsync;

            return(new ProviderCollection()
                   .Add(new ProviderAdapter(
                            () => discordClient.StartAsync(default),
Esempio n. 5
0
        public override ProviderCollection ConfigureProviders(
            IServiceProvider services, IAsyncEventingExecutor <IDiscordMessage> pipeline)
        {
            var _             = services.GetService <DatadogRoutine>(); // Eager loading
            var discordClient = services.GetService <IDiscordClient>();

            discordClient.GuildJoin += ClientJoinedGuildAsync;

            discordClient.MessageCreate += async e => await pipeline.ExecuteAsync(e);

            pipeline.OnExecuted += LogErrorsAsync;

            return(new ProviderCollection()
                   .Add(new ProviderAdapter(
                            discordClient.Gateway.StartAsync,
                            discordClient.Gateway.StopAsync)));
        }
Esempio n. 6
0
 public abstract ProviderCollection ConfigureProviders(
     IServiceProvider services, IAsyncEventingExecutor <IDiscordMessage> pipeline);