Exemplo n.º 1
0
        public EspeonBot(
            ILogger <EspeonBot> logger,
            IOptions <Discord> discordOptions,
            EspeonPrefixProvider prefixProvider,
            DiscordBotConfiguration configuration)
            : base(TokenType.Bot, discordOptions.Value.Token, prefixProvider, configuration)
        {
            this._logger = logger;
            this._localisationService = this.GetRequiredService <LocalisationService>();
            Ready                  += OnReadyAsync;
            Ready                  += OnFirstReadyAsync;
            JoinedGuild            += OnGuildJoined;
            LeftGuild              += OnGuildLeft;
            CommandExecuted        += OnCommandExecuted;
            CommandExecutionFailed += OnCommandExecutionFailed;
            this.GetRequiredService <EspeonScheduler>().OnError += OnSchedulerError;

            AddTypeParser(new UserReminderTypeParser());
            AddTypeParser(new IMessageTypeParser());
            AddTypeParser(new ModuleTypeParser());
            AddTypeParser(new CommandTypeParser());
            AddTypeParser(new IMemberTypeParser());
            AddModules(Assembly.GetEntryAssembly(), type => type != typeof(TagModule));
            AddExtensionAsync(new InteractivityExtension());
        }
Exemplo n.º 2
0
    public DiscordBot(DiscordBotConfiguration botConfiguration, ILogger <DiscordBot> logger)
    {
        this._logger           = logger;
        this._client           = new();
        this._botConfiguration = botConfiguration;

        this._client.Log += this.LogAsync;
    }
Exemplo n.º 3
0
        public static IServiceCollection AddDiscordClient(this IServiceCollection services,
                                                          DiscordBotConfiguration configuration)
        {
            var configAdapter       = DiscordBotConfigurationAdapter.Create(configuration) as IAdapter <DiscordSocketConfig>;
            var discordSocketConfig = configAdapter.Convert();

            var client = new DiscordSocketClient(discordSocketConfig);

            return(services.AddSingleton(client));
        }
Exemplo n.º 4
0
        public static IServiceCollection AddCommandService(this IServiceCollection services,
                                                           DiscordBotConfiguration configuration)
        {
            var configAdapter        = DiscordBotConfigurationAdapter.Create(configuration) as IAdapter <CommandServiceConfig>;
            var commandServiceConfig = configAdapter.Convert();

            var service = new CommandService(commandServiceConfig);

            return(services.AddSingleton(service));
        }
Exemplo n.º 5
0
        public static IServiceCollection AddConfigurations(this IServiceCollection services,
                                                           IConfiguration configuration)
        {
            var discordBotConfiguration = new DiscordBotConfiguration();

            configuration.Bind("DiscordBot", discordBotConfiguration);
            services.AddSingleton(discordBotConfiguration);

            return(services);
        }
Exemplo n.º 6
0
    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddLogging()
        .AddHttpLogging(options => { options.LoggingFields = HttpLoggingFields.RequestPropertiesAndHeaders | HttpLoggingFields.RequestBody; });

        DiscordBotConfiguration botConfiguration = LoadDiscordConfig();

        services.AddSingleton(botConfiguration);

        // register the bot for DI
        services.AddSingleton <IDiscordBot, DiscordBot>()
        .AddSingleton(x => (DiscordBot)x.GetRequiredService <IDiscordBot>());

        // register publishers
        services.AddSingleton <IPublisher <Push>, PushPublisher>()
        .AddSingleton <IPublisher <Status>, StatusPublisher>()
        .AddSingleton <IPublisher <Deploy>, DeployPublisher>()
        .AddSingleton <IOctopusClientFactory, OctopusClientFactory>();

        string uri    = this.Configuration.GetValue <string>(key: @"ServerOctopus:Url");
        string apiKey = this.Configuration.GetValue <string>(key: @"ServerOctopus:ApiKey");

        OctopusServerEndpoint ose = new(octopusServerAddress : uri, apiKey : apiKey);

        services.AddSingleton(ose);

        // Add framework services
        services.Configure <GzipCompressionProviderOptions>(configureOptions: options => options.Level = CompressionLevel.Fastest)
        .Configure <BrotliCompressionProviderOptions>(configureOptions: options => options.Level       = CompressionLevel.Fastest)
        .AddResponseCompression(configureOptions: options =>
        {
            options.EnableForHttps = true;

            // Explicitly enable Gzip
            options.Providers.Add <BrotliCompressionProvider>();
            options.Providers.Add <GzipCompressionProvider>();

            // Add Custom mime types
            options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[]
            {
                "image/svg+xml"
            });
        })
        .AddMvc()
        .AddMvcOptions(setupAction: _ =>
        {
            // Note Additional ModelMetadata providers that require DI are enabled elsewhere
        })
        .AddJsonOptions(configure: options => JsonSerialiser.Configure(options.JsonSerializerOptions));

        services.AddRouting();

        services.AddHostedService <BotService>();
    }
Exemplo n.º 7
0
 public DiscordBot(IServiceProvider services, DiscordBotConfiguration configuration,
                   DiscordShardedClient client, DiscordRestClient rest,
                   QCommandsHandler commands, DiscordEventHandler eventHandler)
 {
     Commands           = new Dictionary <string, Command>();
     Config             = configuration;
     Client             = client;
     Rest               = rest;
     this._services     = services;
     this._commands     = commands;
     this._eventHandler = eventHandler;
 }
Exemplo n.º 8
0
    private static DiscordBotConfiguration LoadDiscordConfig()
    {
        string configFile = Path.Combine(path1: ApplicationConfig.ConfigurationFilesPath, path2: "buildbot-config.json");

#if DEBUG
        if (!File.Exists(configFile))
        {
            return(new());
        }
#endif
        return(DiscordBotConfiguration.Load(configFile));
    }
Exemplo n.º 9
0
        public BotService(IServiceProvider services)
        {
            _services = services;

            _client         = services.GetRequiredService <DiscordSocketClient>();
            _commandService = services.GetRequiredService <CommandService>();

            _botConfiguration = services.GetRequiredService <DiscordBotConfiguration>();

            _client.MessageReceived         += HandleCommand;
            _commandService.CommandExecuted += OnCommandExecuted;

            _commandService.AddModulesAsync(Assembly.GetEntryAssembly(), _services);
        }
Exemplo n.º 10
0
    public DiscordBot(IServiceProvider serviceProvider, IOptions <DiscordBotConfiguration> configuration,
                      CommandService commandService, DiscordSocketClient bot, ILogger <DiscordBot> logger,
                      ICommandHandlingService commandHandlingService)
    {
        _configuration = configuration.Value;
        _bot           = bot;
        _logger        = logger;

        _bot.Log             += Log;
        _bot.MessageReceived += message =>
                                commandHandlingService.HandleMessageReceivedAsync(message, _bot, commandService);

        commandService.CommandExecuted += commandHandlingService.HandleCommandExecutedAsync;
        commandService.AddModuleAsync <ChannelsManagementModule>(serviceProvider).ConfigureAwait(false).GetAwaiter()
        .GetResult();
    }
Exemplo n.º 11
0
 public static IHostBuilder ConfigureEspeon(
     this IHostBuilder builder,
     Action <IServiceProvider, DiscordBotConfiguration> botConfigAction,
     Func <IServiceProvider, EspeonPrefixProvider> prefixProviderSupplier)
 {
     return(builder.ConfigureServices((_, serviceCollection) => {
         serviceCollection.AddSingleton(provider => {
             var espeonLogger = provider.GetRequiredService <ILogger <EspeonBot> >();
             var discordOptions = provider.GetRequiredService <IOptions <Discord> >();
             var prefixProvider = prefixProviderSupplier(provider);
             var botConfig = new DiscordBotConfiguration();
             botConfigAction(provider, botConfig);
             botConfig.ProviderFactory = _ => provider;
             return new EspeonBot(
                 espeonLogger,
                 discordOptions,
                 prefixProvider,
                 botConfig);
         });
     }));
 }
Exemplo n.º 12
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // set up an ILogger
            Microsoft.Extensions.Logging.ILogger logger = this._loggerFactory.CreateLogger("BuildBot");
            services.AddSingleton(logger);

            DiscordBotConfiguration botConfiguration = DiscordBotConfiguration.Load("buildbot-config.json");
            DiscordBot bot = new DiscordBot(botConfiguration, logger);

            // waiting a Task is normally a big no no because of deadlocks, but we're in a start up task here so it should be ok
            bot.Start().Wait();

            // register the bot for DI
            services.AddSingleton <IDiscordBot>(bot);

            // register publishers
            services.AddSingleton <IPublisher <Push>, PushPublisher>();
            services.AddSingleton <IPublisher <Status>, StatusPublisher>();

            // Add framework services
            services.AddMvc();
        }
Exemplo n.º 13
0
 public CommandHandlingService(IServiceProvider serviceProvider,
                               IOptions <DiscordBotConfiguration> discordBotConfiguration)
 {
     _serviceProvider         = serviceProvider;
     _discordBotConfiguration = discordBotConfiguration.Value;
 }
 private DiscordBotConfigurationAdapter(DiscordBotConfiguration discordBotConfiguration)
 {
     _discordBotConfiguration = discordBotConfiguration;
 }
 public static DiscordBotConfigurationAdapter Create(DiscordBotConfiguration configuration) =>
Exemplo n.º 16
0
 public DiscordService(AbfConfigurationProvider configProvider, IPrefixProvider prefixProvider, IServiceProvider services, DiscordBotConfiguration discordConfig = null)
     : base(TokenType.Bot, configProvider.Configuration.DiscordToken, prefixProvider, discordConfig)
 {
     _logger        = LogService.GetLogger("Discord");
     _configuration = configProvider.Configuration;
 }
Exemplo n.º 17
0
 public ServerManager(IExceptionShield <SocketCommandContext> shield, DiscordBotConfiguration configuration)
 {
     Conf    = configuration;
     _shield = shield;
 }