Exemplo n.º 1
0
        public async Task Start()
        {
            try
            {
                ShowJoinAndPartMessages = bool.Parse(_configuration.GetSection("ShowBotJoinMessages").Value);
            }
            catch (Exception ex)
            {
                _logger.LogWarning(ex, "Failed to parse ShowBotJoinMessages. Using false.");
                ShowJoinAndPartMessages = false;
            }

            var settings = await _discordBotSettingsRepository.Get();

            if (settings == null)
            {
                settings = GetTokenFromConsole();
            }

            try
            {
                await _client.LoginAsync(TokenType.Bot, settings.Token);
            }
            catch (Discord.Net.HttpException ex)
            {
                if (ex.Reason == "401: Unauthorized")
                {
                    _logger.LogCritical("Token is not correct!");
                    Console.WriteLine("\nToken is incorrect.");
                    Console.Write("Enter Token: ");
                    settings.Token = Console.ReadLine();

                    await _discordBotSettingsRepository.EditAsync(settings);

                    Start();
                }
                else
                {
                    _logger.LogCritical(ex, "An unhandeled HttpException has occured!");
                    Console.WriteLine("An unhandeled HttpException has occured!");
                    Console.WriteLine(ex.Message);
                    Console.WriteLine(ex.StackTrace);

                    Console.WriteLine("Discord Bot is quiting!");

                    if (LavaLinkHelper.isLavaLinkRunning())
                    {
                        LavaLinkHelper.StopLavaLink();
                    }

                    Environment.Exit(0);
                }
            }

            await _client.StartAsync();

            await _commands.AddModulesAsync(Assembly.GetEntryAssembly(), _serviceProvider);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Attempt to kill the bot cleanly.
        /// </summary>
        /// <param name="exitCode">Exit code to pass to the OS</param>
        public static void ExitCleanly(int exitCode = 0)
        {
            Console.WriteLine("Discord Bot is quiting!");
            _cts.Cancel();

            if (LavaLinkHelper.isLavaLinkRunning())
            {
                LavaLinkHelper.StopLavaLink();
            }

            Environment.Exit(exitCode);
        }
Exemplo n.º 3
0
        public async Task LavaLink([Summary("start or stop lavalink")] string enable = null)
        {
            await Context.Channel.TriggerTypingAsync();

            _logger.LogInformation("{username}#{discriminator} executed lavalink ({option}) on {server}/{channel}",
                                   Context.User.Username, Context.User.Discriminator, enable, Context.Guild?.Name ?? "DM", Context.Channel.Name);

            if (enable == null)
            {
                await ReplyAsync("LavaLink is " + (LavaLinkHelper.isLavaLinkRunning() ? "" : "not") + " running.");

                return;
            }

            if (enable.ToLowerInvariant() == "start")
            {
                LavaLinkHelper.StartLavaLink();
                await Task.Delay(5000);

                if (!_lavaNode.IsConnected)
                {
                    await _lavaNode.ConnectAsync();
                }
            }
            else if (enable.ToLowerInvariant() == "stop")
            {
                if (_lavaNode.IsConnected)
                {
                    await _lavaNode.DisconnectAsync();
                }

                LavaLinkHelper.StopLavaLink();
            }
            else
            {
                await ReplyAsync("Would you like to `start` or `stop` lavalink?");

                return;
            }

            await Context.Channel.SendEmbedAsync("Lava Link", $"Lavalink was {(enable.ToLowerInvariant() == "start" ? "started" : "stopped")}!",
                                                 ColorHelper.GetColor(await _servers.GetServer(Context.Guild)));

            await _servers.SendLogsAsync(Context.Guild, "Lavalink", $"Lavalink was {(enable.ToLowerInvariant() == "start" ? "started": "stopped")} by {Context.User.Mention}!");
        }