Esempio n. 1
0
        /// <summary>
        /// On Guild Available event handler
        /// </summary>
        /// <param name="guild">Guild that has become available</param>
        /// <returns>void</returns>
        private async Task OnGuildAvaiable(SocketGuild guild)
        {
            // Check if BotConfig has been loaded yet
            // Will not fire if setup has not been performed
            if (BotConfig.GuildId != 0 && BotConfig.ChannelId != 0 && BotConfig.MessageId != 0 && BotConfig.BotEmbedMessage == null)
            {
                var config = BotConfig;
                config.BotEmbedMessage = await guild.GetTextChannel(config.ChannelId)?.GetMessageAsync(config.MessageId) !as IUserMessage;

                BotConfig = config;
            }
        }
Esempio n. 2
0
        private async Task MainAsync()
        {
            if (!File.Exists(ConfigHelper.ConfigName))
            {
                ConfigHelper.CreateConfigFile();
            }

            BotConfig = ConfigHelper.LoadConfigFile();

            discord = new DiscordSocketClient(new DiscordSocketConfig
            {
                LogLevel       = LogSeverity.Info,
                GatewayIntents = GatewayIntents.Guilds | GatewayIntents.GuildMessages | GatewayIntents.GuildMessageReactions | GatewayIntents.GuildVoiceStates
            });

            var services       = ConfigureServices();
            var loggingService = services.GetRequiredService <LoggingService>();
            await services.GetRequiredService <CommandHandlerService>().InitializeAsync(services);

            services.GetRequiredService <ReactionsHelper>();
            await discord.LoginAsync(TokenType.Bot, BotConfig.Token);

            await discord.StartAsync();

            discord.GuildAvailable += OnGuildAvaiable;

            discord.Ready += async() =>
            {
                _ = Task.Run(async() =>
                {
                    var node = services.GetRequiredService <LavaNode>();

                    if (!node.IsConnected)
                    {
                        await node.ConnectAsync();
                    }
                });
                //Sets Listening activity
                await discord.SetGameAsync("music", type : ActivityType.Listening);
            };

            // Voice state updated handler
            // user -> SocketUser
            // before -> VoiceState before
            // after -> VoiceState after
            // discord.UserVoiceStateUpdated += async (user, before, after) =>
            // {
            //     if (user.Id == discord.CurrentUser.Id && before.VoiceChannel == null)
            //     {
            //         try
            //         {
            //             var node = services.GetRequiredService<LavaNode>();
            //             var player = node.GetPlayer((user as IGuildUser).Guild);
            //             await player.UpdateVolumeAsync(BotConfig.Volume);
            //         }
            //         catch { }
            //     }
            // };

            // Trap Ctrl+C
            Console.CancelKeyPress += (s, e) => BotExit(services);

            // Trap process exit
            AppDomain.CurrentDomain.ProcessExit += (s, e) => BotExit(services);

            await Task.Delay(-1);
        }