/// <summary> /// Start the bot without user interface /// </summary> /// <returns>Returns the boot loader for the Discord Bot for Linux</returns> private static async Task <Boot> StartNoGUI() { Console.Clear(); Console.ForegroundColor = ConsoleColor.DarkYellow; Console.WriteLine("Discord BOT for Linux\n\nCreated by: Wizzy\nDiscord: Wizzy#9181\nBased on windows version\nNote: All updates will come on windows platform first !\nCommands:"); Console.WriteLine( "/lp | /loadplugins -> load all plugins\n/sd | /shutdown -> close connectong to the server (stop bot)"); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("============================ Discord BOT - Linux ============================"); string token = Functions.readCodeFromFile((Functions.dataFolder + "DiscordBotCore.data"), "BOT_TOKEN", '\t'); string prefix = Functions.readCodeFromFile((Functions.dataFolder + "DiscordBotCore.data"), "BOT_PREFIX", '\t'); var discordbooter = new Boot(token, prefix); await discordbooter.Awake(); return(discordbooter); }
private void FormLoaded() { buttonCopyToken.AutoSize = true; buttonManagePlugins.AutoSize = true; buttonReloadPlugins.AutoSize = true; buttonStartBot.AutoSize = true; groupBox1.AutoSize = true; AutoSize = true; InitializeFormControls(); InitializeTheme(); initializeFiles(); FormClosing += (sender, e) => { try { File.WriteAllText(Path.Combine(dataFolder, "DiscordBotSettings.data"), "BotLanguage=" + Language.ActiveLanguage.LanguageName); } catch (Exception ex) { WriteLogFile(ex.Message); } }; buttonCopyToken.Click += async(sender, e) => { if (labelClipboardCopy.Visible) { return; } Clipboard.SetText(textBoxToken.Text); labelClipboardCopy.Visible = true; await Task.Delay(2000); labelClipboardCopy.Visible = false; }; buttonStartBot.Click += async(sender, e) => { if (discordBooter != null) { return; } if (!textBoxPrefix.ReadOnly) { string prefix = textBoxPrefix.Text; if (prefix.Length != 1) { return; } string token = textBoxToken.Text; if (token == null || token.Length != 59) { return; } textBoxPrefix.ReadOnly = true; textBoxToken.ReadOnly = true; File.WriteAllText(@".\Data\Resources\DiscordBotCore.data", $"BOT_TOKEN\t{token}\nBOT_PREFIX\t{prefix}\n"); } discordBooter = new Boot(textBoxToken.Text, textBoxPrefix.Text, richTextBox1, labelConnectionStatus); await discordBooter.Awake(); }; buttonReloadPlugins.Click += async(sender, e) => { if (labelConnectionStatus.Text != "ONLINE") { if (labelFailedLoadPlugin.Visible) { return; } labelFailedLoadPlugin.Visible = true; await Task.Delay(2000); labelFailedLoadPlugin.Visible = false; } else { var loader = new PluginLoader(discordBooter.client); richTextBox1.AppendText(Language.ActiveLanguage.LanguageWords["PLUGIN_LOADING_START"] + "\n"); loader.onCMDLoad += (name, success, exception) => { if (success) { richTextBox1.AppendText(Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["PLUGIN_LOAD_SUCCESS"], name) + "\n"); WriteLogFile(Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["PLUGIN_LOAD_SUCCESS"], name)); } else { richTextBox1.AppendText( Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["PLUGIN_LOAD_FAIL"], name, exception.Message) + "\n"); WriteLogFile(Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["PLUGIN_LOAD_FAIL"], name, exception.Message)); } }; loader.onADDLoad += (name, success, exception) => { if (success) { richTextBox1.AppendText(Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["ADDON_LOAD_SUCCESS"], name) + "\n"); WriteLogFile(Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["ADDON_LOAD_SUCCESS"], name)); } else { richTextBox1.AppendText( Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["ADDON_LOAD_FAIL"], name, exception.Message) + "\n"); WriteLogFile(Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["ADDON_LOAD_FAIL"], name, exception.Message)); } }; loader.onEVELoad += (name, success, exception) => { if (success) { richTextBox1.AppendText(Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["EVENT_LOAD_SUCCESS"], name) + "\n"); WriteLogFile(Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["EVENT_LOAD_SUCCESS"], name)); } else { richTextBox1.AppendText( Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["EVENT_LOAD_FAIL"], name, exception.Message) + "\n"); WriteLogFile(Language.ActiveLanguage.FormatText( Language.ActiveLanguage.LanguageWords["EVENT_LOAD_FAIL"], name, exception.Message)); } }; buttonManagePlugins.Click += (o, args) => { buttonManagePlugins.Enabled = false; new Plugins_Manager(discordBooter.client, ForeColor, BackColor).ShowDialog(); buttonManagePlugins.Enabled = true; }; loader.LoadPlugins(); buttonReloadPlugins.Enabled = false; } }; languageToolStripMenuItem.Click += (sender, e) => { languageToolStripMenuItem.DropDownItems.Clear(); foreach (string file in Directory.EnumerateFiles(langFolder)) { string langName = readCodeFromFile(file, "LANGUAGE_NAME", '='); ToolStripItem ms = languageToolStripMenuItem.DropDownItems.Add(langName); ms.Click += (_, __) => { LoadLanguageFile(file); }; } ToolStripItem menuitem = languageToolStripMenuItem.DropDownItems.Add("Download new Language"); menuitem.Click += (_, __) => { new LanguageList().ShowDialog(); }; languageToolStripMenuItem.DoubleClickEnabled = false; languageToolStripMenuItem.ShowDropDown(); }; downloadPluginsToolStripMenuItem.Click += (sender, e) => { new PluginsList().ShowDialog(); }; }