Exemplo n.º 1
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}!");
        }
Exemplo n.º 2
0
        static async Task Main(string[] args)
        {
            // Initial Logging for before the Dependency Injection is setup
            Bootstrap.SetupLogging();

            // Set up Dependency Injection
            var serviceProvider = Bootstrap.Initialize(args);
            var chatService     = serviceProvider.GetRequiredService <IChatService>();
            var settings        = serviceProvider.GetRequiredService <ISettings>();

            ConsoleHelper.ColorWriteLine(ConsoleColor.Red, $"{settings.BotName}");
            ConsoleHelper.ColorWriteLine(ConsoleColor.Blue, @$ "MIT License

Copyright(c) 2021 Kyle Givler (JoyfulReaper)
{settings.BotWebsite}" + "\n\n");

            if (settings.EnableLavaLink)
            {
                _logger.Warning("Unable to parse StartLavaLink, using {value}", _startLavaLink);
            }

            if (chatService != null)
            {
                try
                {
                    if (_startLavaLink)
                    {
                        LavaLinkHelper.StartLavaLink();
                    }

                    // Start the DiscordBot
                    _logger.Information("DiscordBot Starting");
                    await Task.Run(chatService.Start, _cts.Token);
                }
                catch (Exception e)
                {
                    // Catch all exceptions if they aren't handeled anywhere else, log and exit.
                    _logger.Error(e, "Unhandeled Exception Caught!");

                    Console.WriteLine("Unhandeled Exception Caught!");
                    Console.WriteLine(e.Message);
                    Console.WriteLine(e.StackTrace);

                    while (e.InnerException != null)
                    {
                        e = e.InnerException;
                        Console.WriteLine(e.Message);
                        Console.WriteLine(e.StackTrace);
                    }

                    ExitCleanly();
                }
            }
            else
            {
                _logger.Fatal("Failed to retrieve ChatService!");
                Console.WriteLine("Failed to start DiscordBot!");

                ExitCleanly();
            }

            while (true)
            {
                // If the "Q" key is pressed quit the bot!
                Console.WriteLine("Press 'Q' to quit!");
                var key = Console.ReadKey(true).KeyChar;

                if (char.ToLowerInvariant(key) == 'q')
                {
                    break;
                }
            }
            ExitCleanly();
        }