Esempio n. 1
0
        private async Task OnReady()
        {
            SocketSelfUser user = _client.CurrentUser;

            _logger.LogInformation($"Logged in as {user.Username}#{user.Discriminator}");
            await Task.CompletedTask;
        }
Esempio n. 2
0
        public async void UseLocalAvatar(DiscordShardedClient client, string AlbumName, string ArtistName, string LastFMName)
        {
            try
            {
                trackString = ArtistName + " - " + AlbumName + Environment.NewLine + LastFMName;
                _logger.Log("Changed avatar to: " + trackString);
                //FileStream fileStream = new FileStream(GlobalVars.CoversFolder + ArtistName + " - " + AlbumName + ".png", FileMode.Open);
                FileStream fileStream = new FileStream(GlobalVars.ImageFolder + "censored.png", FileMode.Open);
                Image      image      = new Image(fileStream);
                await client.CurrentUser.ModifyAsync(u => u.Avatar = image).ConfigureAwait(false);

                fileStream.Close();

                await Task.Delay(5000).ConfigureAwait(false);

                ulong BroadcastServerID  = Convert.ToUInt64(ConfigData.Data.BaseServer);
                ulong BroadcastChannelID = Convert.ToUInt64(ConfigData.Data.FeaturedChannel);

                SocketGuild       guild   = client.GetGuild(BroadcastServerID);
                SocketTextChannel channel = guild.GetTextChannel(BroadcastChannelID);

                EmbedBuilder   builder  = new EmbedBuilder();
                SocketSelfUser SelfUser = client.CurrentUser;
                builder.WithThumbnailUrl(SelfUser.GetAvatarUrl());
                builder.AddField("Featured:", trackString);

                await channel.SendMessageAsync("", false, builder.Build()).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                _logger.LogException("UseLocalAvatar", e);
            }
        }
Esempio n. 3
0
 private async Task DiscordShardedClientOnCurrentUserUpdated(SocketSelfUser arg1, SocketSelfUser arg2)
 {
     if (CurrentUserUpdated != null)
     {
         await CurrentUserUpdated.Invoke(this, arg1, arg2).ConfigureAwait(false);
     }
 }
        private List <string> GetPrefixes(SocketSelfUser botUser)
        {
            if (this.prefixes != null)
            {
                return(this.prefixes);
            }

            var prefixesRaw = new List <string>();

            prefixesRaw.Add($"<@{botUser.Id}> ");
            prefixesRaw.Add($"<@!{botUser.Id}> ");
            prefixesRaw.Add($"@{botUser.Username}#{botUser.Discriminator} ");

            // By optional alias.
            if (this.settings.BotOptionalPrefix != null)
            {
                prefixesRaw.Add(this.settings.BotOptionalPrefix + " ");
            }

            // Allow double spaces
            if (AllowDoubleSpaces)
            {
                foreach (string prefix in prefixesRaw.ToList())
                {
                    prefixesRaw.Add(prefix + " ");
                }
            }

            prefixesRaw   = prefixesRaw.OrderByDescending(s => s.Length).ToList();
            this.prefixes = prefixesRaw;

            return(this.prefixes);
        }
Esempio n. 5
0
 public BotConfig GetBotConfig(SocketSelfUser Bot)
 {
     using (StatusBotContext SC = new StatusBotContext())
     {
         return(SC.BotConfigs.FirstOrDefault(c => c.BotId == Bot.Id));
     }
 }
Esempio n. 6
0
        public ReactionEvent(BotConfig bc, DiscordSocketClient client, CurrencyService cs, int amount)
        {
            _bc         = bc;
            _log        = LogManager.GetCurrentClassLogger();
            _client     = client;
            _botUser    = client.CurrentUser;
            Source      = new CancellationTokenSource();
            CancelToken = Source.Token;

            var _ = Task.Run(async() =>
            {
                var users = new List <ulong>();
                while (!CancelToken.IsCancellationRequested)
                {
                    await Task.Delay(1000).ConfigureAwait(false);
                    while (_toGiveTo.TryDequeue(out var usrId))
                    {
                        users.Add(usrId);
                    }

                    if (users.Count > 0)
                    {
                        await cs.AddToManyAsync("", amount, users.ToArray()).ConfigureAwait(false);
                    }

                    users.Clear();
                }
            }, CancelToken);
        }
 public Task Self_CurrentUserUpdated(SocketSelfUser old_user, SocketSelfUser new_user)
 {
     foreach (ISelfCurrentUserUpdatedEventHandler handler in this.SelfCurrentUserUpdatedEventHandler)
     {
         new Thread(() => handler.Self_CurrentUserUpdated(old_user, new_user)).Start();
     }
     return(Task.CompletedTask);
 }
Esempio n. 8
0
        private Task BotUpdated(SocketSelfUser oldBot, SocketSelfUser newBot)
        {
            Formatter.GenerateLog(_logger, LogSeverity.Info, "Self", "Bot Updated - " + newBot.ToString());

            var botDetails = new DiscordUser(newBot);

            return(SendEvent("bot", "Update", "GMBot.Bot.Update", botDetails.ToString()));
        }
Esempio n. 9
0
 public void UpdateQueue(SocketGuild guild, LavaPlayer player, SocketSelfUser selfUser)
 {
     embedBuilder.Author.IconUrl = guild.IconUrl;
     embedBuilder.Author.Name    = $"{guild.Name}";
     if (player is null || player.Queue.Count == 0)
     {
         embedBuilder.AddField("**Плэйлист**", "Плэйлист пуст" + '\n' + $"[Пригласить бота]({InviteBot})");
     }
Esempio n. 10
0
        public async Task statusAsync()
        {
            ISelfUser SelfUser = Context.Client.CurrentUser;

            EmbedAuthorBuilder eab = new EmbedAuthorBuilder
            {
                IconUrl = SelfUser.GetAvatarUrl(),
                Name    = SelfUser.Username
            };

            EmbedBuilder builder = new EmbedBuilder();

            builder.WithAuthor(eab);
            builder.WithDescription(SelfUser.Username + " Statistics");

            TimeSpan startTime = (DateTime.Now - Process.GetCurrentProcess().StartTime);

            DiscordShardedClient client = Context.Client as DiscordShardedClient;

            SocketSelfUser SocketSelf = Context.Client.CurrentUser as SocketSelfUser;

            string status = "Online";

            switch (SocketSelf.Status)
            {
            case UserStatus.Offline: status = "Offline"; break;

            case UserStatus.Online: status = "Online"; break;

            case UserStatus.Idle: status = "Idle"; break;

            case UserStatus.AFK: status = "AFK"; break;

            case UserStatus.DoNotDisturb: status = "Do Not Disturb"; break;

            case UserStatus.Invisible: status = "Invisible/Offline"; break;
            }

            string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();

            int fixedCmdGlobalCount         = GlobalVars.CommandExecutions + 1;
            int fixedCmdGlobalCount_Servers = GlobalVars.CommandExecutions_Servers + 1;
            int fixedCmdGlobalCount_DMs     = GlobalVars.CommandExecutions_DMs + 1;

            builder.AddField("Bot Uptime: ", startTime.ToReadableString(), true);
            builder.AddField("Server Uptime: ", GlobalVars.SystemUpTime().ToReadableString(), true);
            builder.AddField("Usercount: ", (await userService.GetUserCountAsync()).ToString(), true);
            builder.AddField("Servercount: ", client.Guilds.Count, true);
            builder.AddField("Commands used since bot start: ", fixedCmdGlobalCount);
            builder.AddField("Commands in servers: ", fixedCmdGlobalCount_Servers);
            builder.AddField("Commands in DMs ", fixedCmdGlobalCount_DMs);
            builder.AddField("Bot status: ", status, true);
            builder.AddField("Latency: ", client.Latency + "ms", true);
            builder.AddField("Shards: ", client.Shards.Count, true);
            builder.AddField("Bot version: ", assemblyVersion, true);

            await Context.Channel.SendMessageAsync("", false, builder.Build()).ConfigureAwait(false);
        }
Esempio n. 11
0
 public HelpEmbed(SocketSelfUser selfUser)
 {
     embedBuilder  = new EmbedBuilder();
     Username      = selfUser.Username;
     UserAvatarUrl = selfUser.GetAvatarUrl();
     Commands.Add(".p | .play (название трека / ссылка)", "ищет и транслирует песню в голосовом канале");
     Commands.Add(".panel | .controlpanel", "выводит панель управления и сведения о текущим треком ");
     Commands.Add(".q | .queue", "показывает текущий плэйлист");
 }
Esempio n. 12
0
        internal async Task RemoveReaction(IEmote e, IUserMessage msg = null,
                                           SocketSelfUser bot         = null)
        {
            options.Remove(e.ToString());
            msg ??= await GetUiMessage();

            _ = msg.RemoveReactionAsync(e,
                                        bot ?? Handlers.DiscordBotHandler.Client.CurrentUser);
        }
Esempio n. 13
0
 public static Embed CreateAwaitingOpponentEmbed(SocketSelfUser self)
 {
     return(new EmbedBuilder()
            .WithAuthor(self)
            .WithTitle("Waiting for other player…")
            .WithImageUrl("https://res.cloudinary.com/jbakeacake/image/upload/v1598238947/test/UnknownPlayer_yvpyjh.png")
            .WithFooter(footer => footer.Text = "Waiting Since ")
            .WithCurrentTimestamp()
            .Build());
 }
        public DiscordUser(SocketSelfUser user)
        {
            ID            = user.Id;
            Discriminator = user.Discriminator;
            Username      = user.Username;
            Status        = user.Status;
            IsBot         = user.IsBot;

            ActivityType = user.Activity.Type;
            ActivityName = user.Activity.Name;
        }
Esempio n. 15
0
        public static EmbedBuilder Create(SocketSelfUser author, SocketUser user)
        {
            EmbedBuilder embed = new EmbedBuilder();

            embed.WithCurrentTimestamp();
            embed.WithColor(Color.Gold);
            embed.WithAuthor(author);
            embed.WithFooter($"Requested by: {user}", user.GetAvatarUrl());

            return(embed);
        }
Esempio n. 16
0
 public VoteEmbed(SocketGuildUser user, LavaPlayer player, SocketSelfUser selfuser)
 {
     embedBuilder        = new EmbedBuilder();
     this.user           = user;
     _player             = player;
     Channel             = player.VoiceChannel;
     embedBuilder.Footer = new EmbedFooterBuilder
     {
         Text    = "Для просмотра плейлиста | . q",
         IconUrl = selfuser.GetAvatarUrl()
     };
 }
Esempio n. 17
0
        public bool BotPrefixMentioned(SocketUserMessage message, SocketSelfUser botUser, ref int argPos)
        {
            foreach (string prefix in this.GetPrefixes(botUser))
            {
                if (message.HasStringPrefix(prefix, ref argPos))
                {
                    return(true);
                }
            }

            return(false);
        }
 public MessageHandler(SocketSelfUser self)
 {
     _self     = self;
     _handlers = new List <IHandleableMessage>
     {
         new NewThreadFromPost(),
         new NewThreadFromPostAndText(),
         new NewThreadFromText(),
         new NewEmptyThread(),
         new ReplyToThread()
     };
 }
Esempio n. 19
0
        public static Embed CreateLosingPlayerEmbed(SocketSelfUser self, BattlePlayer player)
        {
            var pokemon      = player.CurrentPokemon;
            var pokemonStats = pokemon.Stats.ToString();

            return(new EmbedBuilder()
                   .WithAuthor(self)
                   .WithTitle("You whited out!")
                   .WithDescription($"Your pokemon gained SOME experience...\n**{pokemon.Name.ToUpper()}**: \n{pokemonStats}")
                   .WithFooter(footer => footer.Text = "Loser at ")
                   .WithCurrentTimestamp()
                   .Build());
        }
Esempio n. 20
0
        public static Embed CreateInvitationMessage(SocketSelfUser self, SocketUser sender, SocketUser receiver)
        {
            var embeddedMessage = new EmbedBuilder()
                                  .WithAuthor(self)
                                  .WithTitle($"Duel Invitation for {receiver.Username}")
                                  .WithDescription($"{sender.Username} has sent you, {receiver.Mention}, an invite to duel!\n\nPress ✅ to accept\nPress ❌ to decline\n\n")
                                  .WithFooter(footer => footer.Text = "Sent ")
                                  .WithThumbnailUrl("https://i.etsystatic.com/15539528/r/il/da9a71/1266529816/il_570xN.1266529816_5abl.jpg")
                                  .WithCurrentTimestamp()
                                  .Build();

            return(embeddedMessage);
        }
Esempio n. 21
0
            public static Embed NewEmbed(string username, SocketSelfUser synthbot, Uri signinUri)
            {
                var linkEmbed = new EmbedFieldBuilder()
                                .WithName($"Click the link below to connect your Spotify account and run \"@{synthbot.Username} join\" to start listening!")
                                .WithValue(signinUri.AbsoluteUri);
                var embed = new EmbedBuilder()
                            .WithColor(Color.Green)
                            .WithAuthor(synthbot)
                            .WithTitle($"Hey {username}, you just joined a voice channel with an active Synthbot channel")
                            .AddField(linkEmbed)
                            .WithCurrentTimestamp();

                return(embed.Build());
            }
Esempio n. 22
0
        public static Embed CreatePokemonDetailEmbed(SocketSelfUser self, PokeEntity pokemon)
        {
            var pokemonStats = pokemon.Stats.ToString();

            return(new EmbedBuilder()
                   .WithAuthor(self)
                   .WithColor(Color.Red)
                   .WithTitle($"🎴 POKÉDEX")
                   .WithThumbnailUrl(pokemon.FrontSpriteUrl)
                   .WithDescription($"▼**{pokemon.Name.ToUpper()}**\n{pokemonStats}\n\n ►► Moves ◄◄ \n 1.) {pokemon.Moves[0].Name}\n2.) {pokemon.Moves[1].Name}\n3.) {pokemon.Moves[2].Name}\n4.) {pokemon.Moves[3].Name}")
                   .WithFooter(footer => footer.Text = "Detailed at ")
                   .WithCurrentTimestamp()
                   .Build());
        }
Esempio n. 23
0
        internal async Task InstallAsync(DiscordSocketClient c)
        {
            _client = c;                                                 // Save an instance of the discord client.
            _cmds   = new CommandService();                              // Create a new instance of the commandservice.
            _client.MessageReceived += HandleCommandAsync;
            await _cmds.AddModulesAsync(Assembly.GetEntryAssembly());    // Load all modules from the assembly.

            SocketSelfUser user = _client.CurrentUser;

            _client.Ready                 += ClientReady;
            _client.UserJoined            += UserJoinedGuild;
            _client.JoinedGuild           += FetchUsers;
            _client.UserVoiceStateUpdated += UserVoiceChannelState;
        }
Esempio n. 24
0
        public async Task Self_CurrentUserUpdated(SocketSelfUser oldUser, SocketSelfUser newUser)
        {
            string logs = "FINALLY FIRED [Self_CurrentUserUpdated] " + Users.Ferrone.Mention + breaker + "(User) => " + GetUserInfos(oldUser);

            breaker.Debug(oldUser.Username, newUser.Username);
            breaker.Debug(oldUser.IsVerified.ToString(), newUser.IsVerified.ToString());
            breaker.Debug(oldUser.IsMfaEnabled.ToString(), newUser.IsMfaEnabled.ToString());
            breaker.Debug(oldUser.Email, newUser.Email);
            breaker.Debug(oldUser.Discriminator, newUser.Discriminator);
            breaker.Debug(oldUser.Activity.Name, newUser.Activity.Name);
            breaker.Debug(oldUser.Activity.Type.ToString(), newUser.Activity.Type.ToString());

            await SendLogs("Self_CurrentUserUpdated", logs, EmoteManager.Guilds.Prod.Edit);
        }
Esempio n. 25
0
        public static Embed CreateWinningPlayerEmbed(SocketSelfUser self, BattlePlayer player)
        {
            var pokemon      = player.CurrentPokemon;
            var pokemonStats = pokemon.Stats.ToString();

            return(new EmbedBuilder()
                   .WithAuthor(self)
                   .WithTitle("You Won!")
                   .WithDescription($"Your pokemon gained ALOT of experience!\n**{pokemon.Name.ToUpper()}**: \n{pokemonStats}")
                   .WithImageUrl("https://garyland.neocities.org/images/kingGary.jpg")
                   .WithFooter(footer => footer.Text = "Winner at ")
                   .WithCurrentTimestamp()
                   .Build());
        }
Esempio n. 26
0
        public async void ChangeToNewAvatar(DiscordShardedClient client, string thumbnail)
        {
            try
            {
                WebRequest  request  = WebRequest.Create(thumbnail);
                WebResponse response = await request.GetResponseAsync().ConfigureAwait(false);

                using (Stream output = File.Create(GlobalVars.ImageFolder + "newavatar.png"))
                    using (Stream input = response.GetResponseStream())
                    {
                        input.CopyTo(output);
                        if (File.Exists(GlobalVars.ImageFolder + "newavatar.png"))
                        {
                            File.SetAttributes(GlobalVars.ImageFolder + "newavatar.png", FileAttributes.Normal);
                        }

                        output.Close();
                        input.Close();
                    }

                if (File.Exists(GlobalVars.ImageFolder + "newavatar.png"))
                {
                    FileStream fileStream = new FileStream(GlobalVars.ImageFolder + "newavatar.png", FileMode.Open);
                    await client.CurrentUser.ModifyAsync(u => u.Avatar = new Image(fileStream)).ConfigureAwait(false);

                    fileStream.Close();
                }

                await Task.Delay(5000).ConfigureAwait(false);


                ulong BroadcastServerID  = Convert.ToUInt64(ConfigData.Data.BaseServer);
                ulong BroadcastChannelID = Convert.ToUInt64(ConfigData.Data.FeaturedChannel);

                SocketGuild       guild   = client.GetGuild(BroadcastServerID);
                SocketTextChannel channel = guild.GetTextChannel(BroadcastChannelID);

                EmbedBuilder   builder  = new EmbedBuilder();
                SocketSelfUser SelfUser = client.CurrentUser;
                builder.WithThumbnailUrl(SelfUser.GetAvatarUrl());
                builder.AddField("Featured:", trackString);

                await channel.SendMessageAsync("", false, builder.Build()).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                _logger.LogException("ChangeToNewAvatar", e);
            }
        }
Esempio n. 27
0
        /// <summary>
        ///     Determines whether the current user can access the supplied emoji
        /// </summary>
        /// <param name="user">The user for whom to determine emoji access.</param>
        /// <param name="emoji">The emoji that the user is attempting to access</param>
        /// <returns>A flag indicating whether the user can access the supplied emoji.</returns>
        public static bool CanAccessEmoji(this SocketSelfUser user, GuildEmote emoji)
        {
            if (user is null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            if (emoji is null)
            {
                throw new ArgumentNullException(nameof(emoji));
            }

            var accessibleEmotes = user.MutualGuilds.SelectMany(x => x.Emotes);

            return(accessibleEmotes.Any(x => x.Id == emoji.Id));
        }
Esempio n. 28
0
 public static Embed CreateWaitingForOtherPlayerEmbed(SocketSelfUser self, PokemonForReturnDto chosenPokemon, string thumbnailUrl)
 {
     return(new EmbedBuilder()
            .WithAuthor(self)
            .WithTitle("Your Opponent is waiting on you…")
            .WithThumbnailUrl(thumbnailUrl)
            .WithDescription($"Your Opponent's Pokemon:\n" +
                             $"► {chosenPokemon.Name}\n" +
                             $"► Lv. {chosenPokemon.Level}\n" +
                             $"► `{chosenPokemon.Type}`\n" +
                             $"► {chosenPokemon.MaxHP} / {chosenPokemon.MaxHP} HP\n" +
                             $"► {chosenPokemon.Experience} / {Math.Pow(chosenPokemon.Level + 1, 3)}")
            .WithFooter(footer => footer.Text = "Waiting Since ")
            .WithCurrentTimestamp()
            .Build());
 }
Esempio n. 29
0
        public static async Task <Embed> CreateBattleSceneEmbed(SocketSelfUser self, BattlePlayer playerInControl, BattlePlayer opponent, PokemonController pokemonController)
        {
            var controllerPokemon = playerInControl.CurrentPokemon;
            var opponentPokemon   = opponent.CurrentPokemon;
            var backFacingSprite  = (await pokemonController.GetPokemonData(controllerPokemon.PokeId)).BackSpriteUrl;
            var frontFacingSprite = (await pokemonController.GetPokemonData(opponentPokemon.PokeId)).FrontSpriteUrl;

            string controllerHealthbar = GetPokemonHealthBar(controllerPokemon);
            string opponentHealthBar   = GetPokemonHealthBar(opponentPokemon);

            var opponentField = new EmbedFieldBuilder()
                                .WithName($"`{opponentHealthBar}`\n{(int)opponentPokemon.Stats.HP}/{(int)opponentPokemon.Stats.MaxHP}")
                                .WithValue($"`{opponentPokemon.Name} Lv. {opponentPokemon.Stats.Level}`");
            var controllerField = new EmbedFieldBuilder()
                                  .WithName($"`{controllerHealthbar}`\n {(int)controllerPokemon.Stats.HP}/{(int)controllerPokemon.Stats.MaxHP}")
                                  .WithValue($"`{controllerPokemon.Name} Lv. {controllerPokemon.Stats.Level}`")
                                  .WithIsInline(true);
            var moves   = "▄▄▄▄▄▄▄▄▄▄▄\n\n►► Moves ◄◄\n";
            int counter = 1;

            foreach (var move in controllerPokemon.Moves)
            {
                moves += $"║ {counter}. {move.Name} :: {move.PP} PP\n";
                counter++;
            }
            var fieldEmpty1 = new EmbedFieldBuilder()
                              .WithName(".")
                              .WithValue(".");
            var fieldEmpty2 = new EmbedFieldBuilder()
                              .WithName(".")
                              .WithValue(".");
            var fieldEmpty3 = new EmbedFieldBuilder()
                              .WithName(".")
                              .WithIsInline(true)
                              .WithValue(".");
            var fieldEmpty4 = new EmbedFieldBuilder()
                              .WithName(".")
                              .WithIsInline(true)
                              .WithValue(".");

            return(new EmbedBuilder()
                   .WithFields(new[] { opponentField, fieldEmpty1, fieldEmpty2, fieldEmpty3, fieldEmpty4, controllerField })
                   .WithFooter(footer => footer.Text = moves)
                   .WithThumbnailUrl(frontFacingSprite)
                   .WithImageUrl(backFacingSprite)
                   .Build());
        }
Esempio n. 30
0
            public static Embed Notify(SocketSelfUser bot, SocketVoiceChannel newChannel, FullPlaylist newPlaylist, EmbedFieldBuilder previousPlaybackField = null)
            {
                var embedNewPlayback = new EmbedFieldBuilder()
                                       .WithName($"Joined Channel: {newChannel.Name}\t")
                                       .WithValue($"Active Playlist: [{newPlaylist.Name}]({newPlaylist.ExternalUrls.First().Value}) From: [{newPlaylist.Owner.Id}]({newPlaylist.Owner.ExternalUrls.First().Value})\t")
                                       .WithIsInline(false);
                var embed = new EmbedBuilder()
                            .WithColor(Color.Green)
                            .WithAuthor(bot)
                            .WithTitle($"There's an active playback session in {newChannel.Name}, run \"@{bot.Username} join\" to start listening")
                            .WithCurrentTimestamp();

                if (previousPlaybackField != null)
                {
                    embed.AddField(previousPlaybackField);
                }
                embed.AddField(embedNewPlayback);
                return(embed.Build());
            }