/// <summary> /// Starts the bot asynchronously. /// </summary> public async Task Start() { Console.WriteLine("Fetching meta repositories..."); if (Directory.Exists("git")) { FileHelper.NormalizeAttributes("git"); Directory.Delete("git", true); } Meta = new MetaHandler(Settings.Meta); Commands = new Dictionary <string, Func <BotCommand, Task> >(); Directory.CreateDirectory(PluginsFolder); Console.WriteLine("Loading plugins."); Plugins = new PluginLoader <IBotPlugin>(); foreach (IBotPlugin plugin in Plugins.Load(PluginsFolder)) { plugin.Load(this); } Console.WriteLine("Reloading meta."); Meta.Reload(); if (Settings.Chat.Discord.Enabled) { DiscordConnection = new DiscordConnection(); DiscordConnection.Configure(this, Settings.Chat.Discord); Connections.Add(DiscordConnection); Console.WriteLine("Beginning asynchronous Discord connection."); _ = DiscordConnection.ConnectAsync(); } Console.WriteLine("Setting up command system."); RegisterCommands(typeof(Bot).Assembly); Console.WriteLine("Successful startup."); await Task.Delay(-1); }