public GarlicBreadCommandContext(DiscordBotBase bot, IPrefix prefix, CachedUserMessage message, IServiceScope scope, RuntimeFlags flags) : base(bot, prefix, message, scope.ServiceProvider) { ServiceScope = scope; Flags = flags; Member = base.Member; }
/// <summary> /// Initializes a new instance of the <see cref="TranslateService"/> class. /// </summary> /// <param name="bot">The discord bot.</param> /// <param name="config">The bot's default configuration.</param> /// <param name="logger">The log handler.</param> public TranslateService(DiscordBotBase bot, Config config, Logger logger) { Config = config; Logger = logger; translator = new GoogleTranslator(); bot.ReactionAdded += ReactionAddedAsync; }
public TypeLoaderService(ILogger <TypeLoaderService> logger, DiscordBotBase client) : base(logger, client) { _typeInfos = new List <TypeInfo>(); _extensionMethods = new List <MethodInfo>(); PopulateTypeCache(); PopulateExtensionCache(); }
public ReminderService( SchedulingService scheduler, IServiceProvider services, ILogger <ReminderService> logger, DiscordBotBase bot) : base(logger, bot) { _services = services; _scheduler = scheduler; _scheduledReminderDict = new Dictionary <int, ScheduledTask>(); }
/// <summary> /// Initializes a new instance of the <see cref="EventHandler"/> class. /// </summary> /// <param name="bot">The discord bot events should be logged for.</param> /// <param name="logger">The log handler, used for handling generic logging.</param> public EventHandler(DiscordBotBase bot, Logger logger, InteractivityExtension ext, CachingMechanism.EntityCache cache) { _cache = cache; Bot = bot; Logger = logger; Ext = ext; Bot.Logger.Logged += Logger_MessageLogged; if (bot is DiscordBotSharder sharder) { sharder.ShardReady += Bot_ShardReady; } Bot.Ready += ReadyAsync; Bot.CommandExecuted += CommandExecutedAsync; Bot.CommandExecutionFailed += CommandExecutionFailedAsync; Bot.ReactionAdded += Bot_ReactionAdded; Bot.ReactionRemoved += Bot_ReactionRemoved; }
/// <summary> /// Initializes a new instance of the <see cref="EventHandler"/> class. /// </summary> /// <param name="bot">The discord bot events should be logged for.</param> /// <param name="logger">The log handler, used for handling generic logging.</param> public EventHandler(DiscordBotBase bot, Logger logger) { Bot = bot; Logger = logger; Bot.Logger.Logged += Logger_MessageLogged; if (bot is DiscordBotSharder sharder) { sharder.ShardReady += Bot_ShardReady; } Bot.Ready += ReadyAsync; Bot.CommandExecuted += CommandExecutedAsync; Bot.CommandExecutionFailed += CommandExecutionFailedAsync; #if DEBUG Bot.MessageReceived += Bot_MessageReceived; #endif }
public EmoteService(HttpClient httpClient, FileTypeGuesser fileTypeGuesser, ILogger <EmoteService> logger, DiscordBotBase bot) : base(logger, bot) { _httpClient = httpClient; _httpClient.DefaultRequestHeaders.UserAgent.Clear(); _httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Global.BotName, Global.BotVersion)); _httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue($"({Global.BotRepo})")); _fileTypeGuesser = fileTypeGuesser; _logger = logger; }
public AatroxCommandContext(DiscordBotBase bot, CachedUserMessage message, IPrefix prefix) : base(bot, prefix, message) { _databaseContext = new DatabaseCommandContext( this, ServiceProvider.GetRequiredService <AatroxDbContext>()); }
public EntrantPollingService(ILogger <EntrantPollingService> logger, DiscordBotBase bot) : base(logger, bot) { _bot = bot; _random = bot.Services.GetRequiredService <Random>(); }
/// <summary> /// Instantiates a new <see cref="DiscordBotService"/> with the specified logger and bot client. /// </summary> /// <param name="logger"> The logger to use. </param> /// <param name="bot"> The bot client to use. </param> protected DiscordBotService( ILogger logger, DiscordBotBase bot) : base(logger, bot) { }
public DocumentationLoaderService(IConfiguration configuration, ILogger <DocumentationLoaderService> logger, DiscordBotBase bot) : base(logger, bot) { _documentation = new Dictionary <string, string>(); _nugetCacheLocation = configuration["nuget:cache_location"]; LoadDocs(); }
public async Task <DiscordBotBase> ConfigureAsync() { var config = Config.ParseArguments(args); logger = new Logger(Logger.LogLevel.Info, Path.Combine(Config.FilesPath, "logs")); DbConnection.Initialize(config); // Ensure the database is migrated to the latest version prior to any other code execution. using (var db = new DataContext()) { await db.Database.MigrateAsync(); await db.SaveChangesAsync(); } IServiceCollection botServiceCollection = new ServiceCollection() .AddSingleton <HttpClient>() .AddSingleton(new CachingMechanism.EntityCache(60)); // Gets services marked with the Service attribute, adds them to the service collection var services = Assembly.GetExecutingAssembly().GetServices(); foreach (var type in services) { botServiceCollection = botServiceCollection.AddSingleton(type); } var interactive = new InteractivityExtension(); var token = config.GetOrAddEntry(Config.Defaults.Token.ToString(), () => { logger.Log( $"Please input bot token, can be found at: " + $"{Constants.DeveloperApplicationLink}", Logger.Source.Bot); return(Console.ReadLine()); }); var prefix = config.GetOrAddEntry(Config.Defaults.Prefix.ToString(), () => { logger.Log("Please input bot prefix", Logger.Source.Bot); return(Console.ReadLine()); }); var shardCount = int.Parse(config.GetOrAddEntry(Config.Defaults.ShardCount.ToString(), () => { logger.Log( $"Please input desired shard count (discord allows a maximum of 2500 guilds per shard): ", Logger.Source.Bot); string value; // Iterate until valid integer is provided. do { value = Console.ReadLine(); }while (!int.TryParse(value, out var x) || x <= 0); return(value); })); bool multiProcessSharding = false; if (shardCount > 1) { multiProcessSharding = bool.Parse(config.GetOrAddEntry("MultiProcess", () => { logger.Log( $"Using multi-process sharding? (true/false): ", Logger.Source.Bot); string value; do { value = Console.ReadLine(); }while (!bool.TryParse(value, out var x)); return(value); })); } var prefixProvider = new DefaultPrefixProvider().AddPrefix(prefix); DiscordBotBase bot; if (!multiProcessSharding) { bot = new DiscordBotSharder( TokenType.Bot, token, prefixProvider, new DiscordBotSharderConfiguration { ProviderFactory = bot => botServiceCollection .AddSingleton(bot) .AddSingleton(config) .AddSingleton(logger) .AddSingleton(interactive) .BuildServiceProvider(), ShardCount = shardCount }); } else { bot = new DiscordBot(TokenType.Bot, token, prefixProvider, new DiscordBotConfiguration() { ProviderFactory = bot => botServiceCollection .AddSingleton(bot) .AddSingleton(config) .AddSingleton(logger) .AddSingleton(interactive) .BuildServiceProvider(), ShardCount = shardCount, ShardId = int.Parse(config.GetOrAddEntry("ShardId", () => { logger.Log( $"Please input shard ID:", Logger.Source.Bot); string value; // Iterate until valid integer is provided. do { value = Console.ReadLine(); }while (!int.TryParse(value, out var x) || x < 0); return(value); })) });
public DocSearchService(SearchService searchService, ILogger <DocSearchService> logger, DiscordBotBase client) : base(logger, client) { _searchService = searchService; }
public DiscordBotRunnerService( ILogger <DiscordBotRunnerService> logger, DiscordBotBase bot) : base(logger, bot) { }
public SearchService(TypeLoaderService typeLoaderService, DocumentationLoaderService documentationLoaderService, ILogger <SearchService> logger, DiscordBotBase client) : base(logger, client) { _typeLoaderService = typeLoaderService; _documentationLoaderService = documentationLoaderService; _allSearchables = new List <ISearchable>(); _searchableTypes = new List <SearchableType>(); BuildCaches(); }