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()); }
public DiscordBot(DiscordBotConfiguration botConfiguration, ILogger <DiscordBot> logger) { this._logger = logger; this._client = new(); this._botConfiguration = botConfiguration; this._client.Log += this.LogAsync; }
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)); }
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)); }
public static IServiceCollection AddConfigurations(this IServiceCollection services, IConfiguration configuration) { var discordBotConfiguration = new DiscordBotConfiguration(); configuration.Bind("DiscordBot", discordBotConfiguration); services.AddSingleton(discordBotConfiguration); return(services); }
// 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>(); }
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; }
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)); }
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); }
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(); }
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); }); })); }
// 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(); }
public CommandHandlingService(IServiceProvider serviceProvider, IOptions <DiscordBotConfiguration> discordBotConfiguration) { _serviceProvider = serviceProvider; _discordBotConfiguration = discordBotConfiguration.Value; }
private DiscordBotConfigurationAdapter(DiscordBotConfiguration discordBotConfiguration) { _discordBotConfiguration = discordBotConfiguration; }
public static DiscordBotConfigurationAdapter Create(DiscordBotConfiguration configuration) =>
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; }
public ServerManager(IExceptionShield <SocketCommandContext> shield, DiscordBotConfiguration configuration) { Conf = configuration; _shield = shield; }