Ejemplo n.º 1
0
        public async Task ReplyMovieCollectionAsync(ulong chanId, string collectionName)
        {
            var search = await _client.SearchCollectionAsync(collectionName);

            if (search.Results.Count < 1)
            {
                await _discordMessage.SendDiscordMessageAsync(chanId, $"No Results Found for {collectionName}");

                return;
            }

            var collection = await _client.GetCollectionAsync(search.Results.First().Id);

            var embed = new DisukuEmbed
            {
                Title       = collection.Name,
                Description = collection.Overview,
                ImageUrl    = $"http://image.tmdb.org/t/p/w500{collection.BackdropPath}",
                Thumbnail   = $"http://image.tmdb.org/t/p/w500{collection.PosterPath}",
                Url         = $"https://www.themoviedb.org/collection/{collection.Id}",
                Footer      = $"Collection Size: {collection.Parts.Count}"
            };

            await _discordMessage.SendDiscordEmbedAsync(chanId, embed);
        }
Ejemplo n.º 2
0
        public async Task SendDiscordEmbedAsync(ulong chanId, DisukuEmbed embed)
        {
            var channel = GetSocketTextChannel(chanId);

            var discordEmbed = DisukuEntityConverter.ConvertEmbed(embed);
            await channel.SendMessageAsync(embed : discordEmbed);
        }
Ejemplo n.º 3
0
        public async Task SendDiscordMessageAsync(ulong chanId, DisukuUser user)
        {
            var formattedRoles = new StringBuilder();

            foreach (var role in user.Roles)
            {
                if (role.Name == "@everyone")
                {
                    formattedRoles.Append($"{role.Name}, "); continue;
                }
                formattedRoles.Append($"<@&{role.Id}>, ");
            }

            var embed = new DisukuEmbed
            {
                Title       = $"Profile: {user.Username}",
                Description =
                    $"**User ID:** {user.UserId}\n" +
                    $"**Guild ID:** {user.GuildId}\n" +
                    $"**Account Created:** {user.CreatedAt}\n" +
                    $"**Joined Server:** {user.JoinedAt}\n" +
                    "**Roles:**\n" +
                    $"{formattedRoles}",
                Thumbnail = user.AvatarUrl
            };

            await SendDiscordEmbedAsync(chanId, embed);
        }
Ejemplo n.º 4
0
        public async Task Find(ulong chanId, string quoteName)
        {
            var quotes = await _dataStore.LoadRecordsAsync <Quote>(x => x.Name == quoteName, TableName);

            if (!quotes.Any())
            {
                await _discordMessage.SendDiscordMessageAsync(chanId, "Quote with that Name was not found."); return;
            }

            var selectedQuote = quotes.FirstOrDefault();
            var quoteUrl      = $"https://discordapp.com/channels/{selectedQuote.ServerId}/{selectedQuote.ChanId}/{selectedQuote.MessageId}";

            if (!IsCodeblock(selectedQuote.Message))
            {
                var embed = new DisukuEmbed
                {
                    Description = $"\n**Quote:** {selectedQuote.Message}\n\n" +
                                  $"Jump: [Click Here]({quoteUrl})",
                    Author = new Author(selectedQuote.AuthorUsername, selectedQuote.AuthorAvatarUrl, $"Id {selectedQuote.MessageId}")
                };

                await _discordMessage.SendDiscordEmbedAsync(chanId, embed);
            }
            else
            {
                var sb = new StringBuilder();
                sb.Append($"{selectedQuote.AuthorUsername} : Id: <{selectedQuote.MessageId}>");
                sb.Append($"{selectedQuote.Message}");
                await _discordMessage.SendDiscordMessageAsync(chanId, $"{sb}");
            }
        }
Ejemplo n.º 5
0
        public async Task SendDiscordMessageAsync(ulong chanId, DisukuGuild guild)
        {
            var embed = new DisukuEmbed
            {
                Title       = $"Guild Profile: {guild.Name}",
                Thumbnail   = guild.GuildAvatar,
                Description =
                    $"**ID:** {guild.GuildId}\n" +
                    "**Channel Count:** \n" +
                    $"⠀⠀▷ Text: {guild.TextChannelCount}, Voice: {guild.VoiceChannelCount}\n" +
                    $"**Creation Date:** {guild.CreationDate}\n" +
                    $"**Members:** {guild.MemberCount}"
            };

            await SendDiscordEmbedAsync(chanId, embed);
        }
Ejemplo n.º 6
0
        public async Task GetCharacterInfoAsync(ulong chanId, string name, string realm, string region)
        {
            Region definedRegion;

            switch (region.ToLower())
            {
            case "eu":
                definedRegion = Region.EU;
                break;

            case "us":
                definedRegion = Region.US;
                break;

            case "kr":
                definedRegion = Region.KR;
                break;

            case "tw":
                definedRegion = Region.TW;
                break;

            default:
                definedRegion = Region.EU;
                break;
            }

            var client        = new RaiderIOClient(definedRegion, realm, name);
            var characterData = await client.GetCharacterStatsAsync();

            var armoryURL     = $"https://worldofwarcraft.com/en-gb/character/{realm}/{name}/";
            var wowanalyzeURL = $"https://www.wowanalyzer.com/character/EU/{realm}/{name}/";

            var embed = new DisukuEmbed
            {
                Title       = $"{characterData.Name} {characterData.Realm} | Character Info",
                Description = $"**Name**: {characterData.Name}\n" +
                              $"**Links**: [Raider.IO]({characterData.Url}) | [Armory]({armoryURL}) | [WowAnalzyer]({wowanalyzeURL})\n" +
                              $"**Class**: {characterData.Race}, {characterData.SpecName} {characterData.Class}\n" +
                              $"**Item Level**: Equipped: {characterData.Gear.ItemLevelEquiped} | Overall: {characterData.Gear.ItemLevelAverage}\n" +
                              $"**Raid Progression (Uldir)**: {characterData.GetRaidProgression.Uldir.Summary}\n" +
                              $"**Mythic+**: {characterData.GetMythicPlusScores.Overall}",
                Thumbnail = characterData.Thumbnail
            };

            await _discordMessage.SendDiscordEmbedAsync(chanId, embed);
        }
Ejemplo n.º 7
0
        public async Task ReplyTvShowAsync(ulong chanId, string name)
        {
            var search = await _client.SearchTvShowAsync(name);

            var result = search.Results.First();

            var embed = new DisukuEmbed
            {
                Title       = result.Name,
                Description = result.Overview,
                Url         = $"https://www.themoviedb.org/tv/{result.Id}",
                Thumbnail   = $"http://image.tmdb.org/t/p/w500{result.PosterPath}",
                ImageUrl    = $"http://image.tmdb.org/t/p/w500{result.BackdropPath}"
            };

            await _discordMessage.SendDiscordEmbedAsync(chanId, embed);
        }
Ejemplo n.º 8
0
        public async Task ReplyMovieAsync(ulong chanId, string name)
        {
            var search = await _client.SearchMovieAsync(name);

            var result = search?.Results.First();

            var movieEmbed = new DisukuEmbed
            {
                Title       = result.Title,
                Description = result.Overview,
                Thumbnail   = $"http://image.tmdb.org/t/p/w500{result.PosterPath}",
                Url         = $"https://www.themoviedb.org/movie/{result.Id}",
                ImageUrl    = $"http://image.tmdb.org/t/p/w500{result.BackdropPath}",
                Footer      = $"Release: {result.ReleaseDate?.ToShortDateString()}"
            };

            await _discordMessage.SendDiscordEmbedAsync(chanId, movieEmbed);
        }
Ejemplo n.º 9
0
        public static Embed ConvertEmbed(DisukuEmbed embed, bool inlineFields = false)
        {
            var discordEmbed = new EmbedBuilder()
                               .WithTitle(embed.Title)
                               .WithDescription(embed.Description)
                               .WithCurrentTimestamp()
                               .WithColor(Color.Blue);

            if (embed.Author != null && !string.IsNullOrWhiteSpace(embed.Author.Description))
            {
                discordEmbed.WithAuthor($"{embed.Author.Username} <{embed.Author.Description}>", embed.Author.AvatarUrl);
            }
            if (embed.Author != null && string.IsNullOrWhiteSpace(embed.Author.Description))
            {
                discordEmbed.WithAuthor(embed.Author.Username, embed.Author.AvatarUrl);
            }
            if (!string.IsNullOrWhiteSpace(embed.Url))
            {
                discordEmbed.WithUrl(embed.Url);
            }
            if (!string.IsNullOrWhiteSpace(embed.Thumbnail))
            {
                discordEmbed.WithThumbnailUrl(embed.Thumbnail);
            }
            if (!string.IsNullOrWhiteSpace(embed.Footer))
            {
                discordEmbed.WithFooter(embed.Footer);
            }
            if (!string.IsNullOrWhiteSpace(embed.ImageUrl))
            {
                discordEmbed.WithImageUrl(embed.ImageUrl);
            }

            if (embed.Fields.Count != 0)
            {
                foreach (var field in embed.Fields)
                {
                    discordEmbed.AddField(field.Title, field.Description, inlineFields);
                }
            }

            return(discordEmbed.Build());
        }
Ejemplo n.º 10
0
        public async Task GetAffixesAsync(ulong chanId)
        {
            var affixes     = await new RaiderIOClient(Region.EU).GetAffixesAsync(Region.EU);
            var description = new StringBuilder();

            foreach (var affix in affixes.CurrentAffixes)
            {
                description.Append($"**[{affix.Name}]({affix.Url})**\n{affix.Description}\n\n");
            }
            var embed = new DisukuEmbed
            {
                Title       = affixes.Title,
                Description = description.ToString(),
                Footer      = ("Powered by Raider.IO"),
                Thumbnail   = "https://media.forgecdn.net/avatars/117/23/636399071197048271.png"
            };

            await _discordMessage.SendDiscordEmbedAsync(chanId, embed);
        }