示例#1
0
        /// <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);
        }
示例#2
0
        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(); };
        }