コード例 #1
0
        public async Task ListDungeons()
        {
            var account                    = EntityConverter.ConvertUser(Context.User);
            var defaultDungeons            = EnemiesDatabase.DefaultDungeons.Where(d => !d.Requirement.IsLocked(account));
            var availableDefaultDungeons   = defaultDungeons.Where(d => d.Requirement.Applies(account)).Select(s => s.Name).ToArray();
            var unavailableDefaultDungeons = defaultDungeons.Where(d => !d.Requirement.Applies(account)).Select(s => s.Name).ToArray();

            var unlockedDungeons     = account.Dungeons.Where(EnemiesDatabase.HasDungeon).Select(EnemiesDatabase.GetDungeon).Where(d => !d.Requirement.IsLocked(account));
            var availablePermUnlocks = availableDefaultDungeons
                                       .Concat(unlockedDungeons.Where(d =>
                                                                      !d.IsOneTimeOnly &&
                                                                      d.Requirement.FulfilledRequirements(account))
                                               .Select(s => s.Name)
                                               .ToArray());
            var unavailablePermUnlocks = unavailableDefaultDungeons
                                         .Concat(unlockedDungeons.Where(d =>
                                                                        !d.IsOneTimeOnly &&
                                                                        !d.Requirement.FulfilledRequirements(account))
                                                 .Select(s => s.Name)
                                                 .ToArray());

            var availableOneTimeUnlocks   = unlockedDungeons.Where(d => d.IsOneTimeOnly && d.Requirement.FulfilledRequirements(account)).Select(s => s.Name).ToArray();
            var unavailableOneTimeUnlocks = unlockedDungeons.Where(d => d.IsOneTimeOnly && !d.Requirement.FulfilledRequirements(account)).Select(s => s.Name).ToArray();

            var embed = new EmbedBuilder();

            embed.WithTitle("Dungeons");

            if (availablePermUnlocks.Any())
            {
                embed.AddField("<:mapopen:606236181503410176> Places Discovered", $"Available: {string.Join(", ", availablePermUnlocks)} \nUnavailable: {string.Join(", ", unavailablePermUnlocks)}");
            }
            if (availableOneTimeUnlocks.Length + unavailableOneTimeUnlocks.Length > 0)
            {
                embed.AddField("<:cave:607402486562684944> Dungeon Keys", $"Available: {string.Join(", ", availableOneTimeUnlocks)} \nUnavailable: {string.Join(", ", unavailableOneTimeUnlocks)}");
            }
            await Context.Channel.SendMessageAsync("", false, embed.Build());
        }
コード例 #2
0
        public async Task Status([Remainder] SocketUser user = null)
        {
            user ??= Context.User;
            var account = EntityConverter.ConvertUser(user);
            var factory = new PlayerFighterFactory();
            var p       = factory.CreatePlayerFighter(account);

            var author = new EmbedAuthorBuilder();

            author.WithName($"{(user is SocketGuildUser sguser ? sguser.DisplayName() : user.Username)}");
            author.WithIconUrl(user.GetAvatarUrl());

            var embed = new EmbedBuilder()
                        .WithColor(Colors.Get(account.Element.ToString()))
                        .WithAuthor(author)
                        .WithTitle($"Level {account.LevelNumber} {account.GsClass} {string.Join("", account.TrophyCase.Trophies.Select(t => t.Icon))} (Rank {UserAccounts.GetRank(account) + 1})")
                        .AddField("Current Equip", account.Inv.GearToString(AdeptClassSeriesManager.GetClassSeries(account).Archtype), true)
                        .AddField("Psynergy", p.GetMoves(false), true)
                        .AddField("Djinn", account.DjinnPocket.GetDjinns().GetDisplay(DjinnDetail.None), true)

                        .AddField("Stats", p.Stats.ToString(), true)
                        .AddField("Elemental Stats", p.ElStats.ToString(), true)

                        .AddField("Unlocked Classes", account.BonusClasses.Count == 0 ? "none" : string.Join(", ", account.BonusClasses))

                        .AddField("XP", $"{account.Xp} - next in {account.XPneeded}{(account.NewGames >= 1 ? $"\n({account.TotalXp} total | {account.NewGames} resets)" : "")}", true)
                        .AddField("Colosso wins | Dungeon Wins", $"{account.ServerStats.ColossoWins} | {account.ServerStats.DungeonsCompleted}", true)
                        .AddField("Endless Streaks", $"Solo: {account.ServerStats.EndlessStreak.Solo} | Duo: {account.ServerStats.EndlessStreak.Duo} \nTrio: {account.ServerStats.EndlessStreak.Trio} | Quad: {account.ServerStats.EndlessStreak.Quad}", true);

            if (user is SocketGuildUser socketGuildUser)
            {
                var footer = new EmbedFooterBuilder();
                footer.WithText("Joined this Server on " + socketGuildUser.JoinedAt.Value.Date.ToString("dd-MM-yyyy"));
                footer.WithIconUrl(Sprites.GetImageFromName("Iodem"));
                embed.WithFooter(footer);
            }
            await Context.Channel.SendMessageAsync("", false, embed.Build());
        }
コード例 #3
0
        private async Task SetupIodemTask()
        {
            await Context.Guild.DownloadUsersAsync();

            foreach (var gm in Context.Guild.Users)
            {
                var user = EntityConverter.ConvertUser(gm);
                Console.WriteLine($"{user.Name} registered");

                var elRole = gm.Roles.FirstOrDefault(r => r.Name.Contains("Adepts"));
                if (elRole != null && user.Element == Element.none)
                {
                    var chosenElement = new[] { Element.Venus, Element.Mars, Element.Jupiter, Element.Mercury }
                    .First(e => elRole.Name.Contains(e.ToString()));
                    user.Element = chosenElement;
                    var tags = new[] { "VenusAdept", "MarsAdept", "JupiterAdept", "MercuryAdept" };
                    user.Tags.RemoveAll(s => tags.Contains(s));
                    user.Tags.Add(tags[(int)chosenElement]);
                    Console.WriteLine($"Updated Element for {user.Name}.");
                }
            }
            await Task.CompletedTask;
        }
コード例 #4
0
        public async Task Codes(SocketUser target = null)
        {
            target ??= Context.User;

            var user  = EntityConverter.ConvertUser(target);
            var embed = new EmbedBuilder();

            embed.WithColor(Colors.Get("Iodem"));
            embed.WithAuthor(target);

            if (user.arePublicCodes || target.Equals(Context.User))
            {
                embed.WithDescription($"PoGo: {user.PoGoCode} \n" +
                                      $"Switch: {user.SwitchCode} \n" +
                                      $"3DS: {user.N3DSCode}");
            }
            else
            {
                embed.WithDescription(Utilities.GetAlert("CODE_IS_PRIVATE"));
            }

            await Context.Channel.SendMessageAsync("", false, embed.Build());
        }
コード例 #5
0
        public async Task Repair([Remainder] string item)
        {
            var account = EntityConverter.ConvertUser(Context.User);
            var inv     = account.Inv;
            var embed   = new EmbedBuilder();

            embed.WithColor(Colors.Get("Iodem"));
            if (ColossoPvE.UserInBattle(EntityConverter.ConvertUser(Context.User)))
            {
                return;
            }

            if (inv.Repair(item))
            {
                UserAccountProvider.StoreUser(account);
                embed.WithDescription($"Item repaired successfully");
            }
            else
            {
                embed.WithDescription($":x: No such item to repair, or not enough funds.");
            }
            await Context.Channel.SendMessageAsync("", false, embed.Build());
        }
コード例 #6
0
        private async Task ReleaseDjinnHidden(string DjinnName)
        {
            var acc         = EntityConverter.ConvertUser(Context.User);
            var userDjinn   = acc.DjinnPocket;
            var chosenDjinn = userDjinn.GetDjinn(DjinnName);

            if (chosenDjinn == null)
            {
                return;
            }
            await ReplyAsync(embed : new EmbedBuilder()
                             .WithDescription($"Are you sure that you want to release your djinni {chosenDjinn.Emote} {chosenDjinn.Name}?")
                             .Build());

            var response = await Context.Channel.AwaitMessage(m => m.Author == Context.User);

            if (response.Content.Equals("Yes", StringComparison.CurrentCultureIgnoreCase))
            {
                userDjinn.Djinn.Remove(chosenDjinn);
                UserAccountProvider.StoreUser(acc);
                _ = ReplyAsync(embed: new EmbedBuilder().WithDescription($"You set {chosenDjinn.Emote} {chosenDjinn.Name} free, who swiftly rushes off to find another master.").Build());
            }
        }
コード例 #7
0
        public async Task RandomQuote([Remainder] string name = "")
        {
            if (Quotes.GetQuotesCount() == 0)
            {
                await ReplyAsync("I don't recall any quotes.");
                return;
            }

            var embed = new EmbedBuilder();
            embed.WithColor(Colors.Get("Iodem"));

            var q = Quotes.QuoteList.Random();
            if (!name.IsNullOrEmpty())
            {
                q = Quotes.QuoteList.Where(q => q.Name.Equals(name, StringComparison.OrdinalIgnoreCase)).Random();
                if (q.Name.IsNullOrEmpty())
                {
                    embed.WithDescription("I don't remember anything this person said.");
                    await ReplyAsync(embed: embed.Build());
                    return;
                }
            }

            q.Name = Utilities.ToCaps(q.Name);

            embed.WithAuthor(q.Name);
            embed.WithThumbnailUrl(Sprites.GetImageFromName(q.Name));
            embed.WithDescription(q.Quote);
            if (q.Quote.Contains(@"#^@%!"))
            {
                var userAccount = EntityConverter.ConvertUser(Context.User);
                await GoldenSunCommands.AwardClassSeries("Curse Mage Series", Context.User, Context.Channel);
            }

            await ReplyAsync("", false, embed.Build());
        }
コード例 #8
0
        public async Task SetCode(string type, [Remainder] string code)
        {
            var embed = new EmbedBuilder();

            type = type.ToLower();
            embed.WithColor(Colors.Get("Iodem"));
            embed.WithThumbnailUrl(Sprites.GetImageFromName("Iodem"));
            var account = EntityConverter.ConvertUser(Context.User);

            code = code.RemoveBadChars();
            switch (type)
            {
            case "3ds":
            case "n3ds":
                account.N3DSCode = code;
                embed.WithDescription(Utilities.GetFormattedAlert("FC_ADDED_SUCCESS", "3DS"));
                break;

            case "switch":
            case "sw":
                account.SwitchCode = code;
                embed.WithDescription(Utilities.GetFormattedAlert("FC_ADDED_SUCCESS", "Switch"));
                break;

            case "pogo":
                account.PoGoCode = code;
                embed.WithDescription(Utilities.GetFormattedAlert("FC_ADDED_SUCCESS", "Pokemon Go"));
                break;

            default:
                embed.WithDescription(Utilities.GetAlert("FC_CODE_UNKNOWN"));
                break;
            }
            UserAccountProvider.StoreUser(account);
            await Context.Channel.SendMessageAsync("", false, embed.Build());
        }
コード例 #9
0
        public async Task SetCode(string type, [Remainder] string code)
        {
            var embed = new EmbedBuilder();

            type = type.ToLower();
            embed.WithColor(Colors.Get("Iodem"));
            embed.WithThumbnailUrl(Sprites.GetImageFromName("Iodem"));
            var account = EntityConverter.ConvertUser(Context.User);

            code = code.RemoveBadChars();
            switch (type)
            {
            case "3ds":
            case "n3ds":
                account.N3DsCode = code;
                embed.WithDescription("I have added your Nintendo 3DS Friend code.");
                break;

            case "switch":
            case "sw":
                account.SwitchCode = code;
                embed.WithDescription("I have added your Switch Friend code.");
                break;

            case "pogo":
                account.PoGoCode = code;
                embed.WithDescription("I have added your Pokemon Go Friend code.");
                break;

            default:
                embed.WithDescription("Not a valid code.");
                break;
            }
            UserAccountProvider.StoreUser(account);
            await Context.Channel.SendMessageAsync("", false, embed.Build());
        }
コード例 #10
0
        protected override async Task AddPlayer(SocketReaction reaction)
        {
            if (PlayerMessages.Values.Any(s => (s.Id == reaction.UserId)))
            {
                return;
            }
            SocketGuildUser player       = (SocketGuildUser)reaction.User.Value;
            var             playerAvatar = EntityConverter.ConvertUser(player);

            if (playerAvatar.LevelNumber < 50 && !playerAvatar.Tags.Contains("ColossoCompleted"))
            {
                return;
            }

            var p = Factory.CreatePlayerFighter(playerAvatar);

            if (playerAvatar.Inv.GetGear(AdeptClassSeriesManager.GetClassSeries(playerAvatar).Archtype).Any(i => i.Name == "Lure Cap"))
            {
                LureCaps++;
                SetNextEnemy();
            }

            await AddPlayer(p);
        }
コード例 #11
0
ファイル: GoldenSun.cs プロジェクト: why-2004/IodemBot
        internal static async Task AwardClassSeries(string series, SocketUser user, IMessageChannel channel)
        {
            var avatar = EntityConverter.ConvertUser(user);

            await AwardClassSeries(series, avatar, channel);
        }
コード例 #12
0
ファイル: GoldenSun.cs プロジェクト: why-2004/IodemBot
        public async Task LoadoutTask(LoadoutAction action = LoadoutAction.Show, [Remainder] string loadoutName = "")
        {
            if (!(Context.User is SocketGuildUser sgu))
            {
                return;
            }

            var user = EntityConverter.ConvertUser(sgu);

            switch (action)
            {
            case LoadoutAction.Show:
                var embed = new EmbedBuilder();
                if (user.Loadouts.loadouts.Count > 0)
                {
                    foreach (var item in user.Loadouts.loadouts)
                    {
                        var items = item.Gear.Count > 0 ? string.Join("", item.Gear.Select(i => user.Inv.GetItem(i)?.Icon ?? "-")) : "no gear";
                        var djinn = item.Djinn.Count > 0 ? string.Join("", item.Djinn.Select(d => user.DjinnPocket.GetDjinn(d)?.Emote ?? "-")) : "no Djinn";
                        embed.AddField(item.LoadoutName,
                                       $"{ElementIcons[item.Element]} {item.ClassSeries}\n" +
                                       $"{items}\n" +
                                       $"{djinn}"
                                       , inline: true);
                    }
                }
                else
                {
                    embed.WithDescription("No loadouts saved.");
                }
                _ = ReplyAsync(embed: embed.Build());
                break;

            case LoadoutAction.Save:
                if (loadoutName.IsNullOrEmpty())
                {
                    return;
                }

                user.Loadouts.RemoveLoadout(loadoutName);
                if (user.Loadouts.loadouts.Count >= 6)
                {
                    _ = ReplyAsync("Loadout limit of 6 reached.");
                    return;
                }
                var newLoadout = Loadout.GetLoadout(user);
                newLoadout.LoadoutName = loadoutName;
                user.Loadouts.SaveLoadout(newLoadout);
                UserAccountProvider.StoreUser(user);
                _ = LoadoutTask(LoadoutAction.Show);
                break;

            case LoadoutAction.Load:
                var loadedLoadout = user.Loadouts.GetLoadout(loadoutName);
                if (loadedLoadout != null)
                {
                    await GiveElementRole(sgu, loadedLoadout.Element);
                    await ChangeElement(user, loadedLoadout.Element);

                    loadedLoadout.ApplyLoadout(user);
                    UserAccountProvider.StoreUser(user);
                    _ = Status();
                }
                break;

            case LoadoutAction.Remove:
                if (loadoutName.IsNullOrEmpty())
                {
                    return;
                }

                user.Loadouts.RemoveLoadout(loadoutName);
                UserAccountProvider.StoreUser(user);
                _ = LoadoutTask(LoadoutAction.Show);
                break;
            }
            await Task.CompletedTask;
        }
コード例 #13
0
        private async Task OpenChestAsync(SocketCommandContext Context, ChestQuality cq)
        {
            var user = EntityConverter.ConvertUser(Context.User);
            var inv  = user.Inv;

            if (inv.IsFull)
            {
                var emb = new EmbedBuilder();
                emb.WithDescription(":x: Inventory capacity reached!");
                emb.WithColor(Colors.Get("Error"));
                await Context.Channel.SendMessageAsync("", false, emb.Build());

                return;
            }

            if (!inv.OpenChest(cq))
            {
                var emb = new EmbedBuilder();

                if (cq == ChestQuality.Daily)
                {
                    emb.WithDescription($":x: No {cq} Chests remaining! Next Daily Chest in: {DateTime.Today.AddDays(1).Subtract(DateTime.Now):hh\\h\\ mm\\m}");
                }
                else
                {
                    emb.WithDescription($":x: No {cq} Chests remaining!");
                }

                emb.WithColor(Colors.Get("Error"));
                await Context.Channel.SendMessageAsync("", false, emb.Build());

                return;
            }
            var itemName     = "";
            var dailyRewards = new[] { 0, 0, 1, 1, 2 };

            if (cq == ChestQuality.Daily)
            {
                var value = user.LevelNumber;
                itemName = ItemDatabase.GetRandomItem((ItemRarity)(dailyRewards[inv.DailiesInARow % dailyRewards.Length] + Math.Min(2, value / 33)));
            }
            else
            {
                var rarity = ItemDatabase.ChestValues[cq].GenerateReward();
                itemName = ItemDatabase.GetRandomItem(rarity);
            }

            var item = ItemDatabase.GetItem(itemName);

            inv.Add(item.Name);
            UserAccountProvider.StoreUser(user);

            var embed = new EmbedBuilder();

            embed.WithDescription($"Opening {cq} Chest {Inventory.ChestIcons[cq]}...");

            embed.WithColor(Colors.Get("Iodem"));
            var msg = await Context.Channel.SendMessageAsync("", false, embed.Build());

            embed = new EmbedBuilder();
            embed.WithColor(item.Color);
            if (cq == ChestQuality.Daily)
            {
                embed.WithFooter($"Current Reward: {inv.DailiesInARow % dailyRewards.Length + 1}/{dailyRewards.Length} | Overall Streak: {inv.DailiesInARow + 1}");
            }
            embed.WithDescription($"{Inventory.ChestIcons[cq]} You found a {item.Name} {item.IconDisplay}");

            await Task.Delay((int)cq * 700);

            _ = msg.ModifyAsync(m => m.Embed = embed.Build());

            var message = await Context.Channel.AwaitMessage(m => m.Author == Context.User);

            if (message != null && message.Content.Equals("Sell", StringComparison.OrdinalIgnoreCase))
            {
                _ = SellItem(item.Name);
            }
        }
コード例 #14
0
        public async Task Showdown(RankEnum type = RankEnum.Solo, EndlessMode mode = EndlessMode.Default)
        {
            var topAccounts = UserAccounts.GetTop(type, mode);

            if (type == RankEnum.Solo)
                topAccounts = topAccounts.OrderByDescending(d =>
                    (d.ServerStats.GetStreak(mode) + d.ServerStatsTotal.GetStreak(mode)).Solo).ToList();
            else
                topAccounts = topAccounts.Where(p =>
                        (p.ServerStats.GetStreak(mode) + p.ServerStatsTotal.GetStreak(mode)).GetEntry(type).Item1 > 0)
                    .GroupBy(p =>
                        (p.ServerStats.GetStreak(mode) + p.ServerStatsTotal.GetStreak(mode)).GetEntry(type).Item2)
                    .Select(group => group.First())
                    .OrderByDescending(d =>
                        (d.ServerStats.GetStreak(mode) + d.ServerStatsTotal.GetStreak(mode)).GetEntry(type).Item1)
                    .ToList();
            var embed = new EmbedBuilder();
            embed.WithColor(Colors.Get("Iodem"));
            string[] emotes = { "🥇", "🥈", "🥉", "", "" };
            var builder = new StringBuilder();
            for (var i = 0; i < Math.Min(topAccounts.Count, 5); i++)
            {
                var curAccount = topAccounts.ElementAt(i);
                var streak = mode == EndlessMode.Default
                    ? curAccount.ServerStats.EndlessStreak + curAccount.ServerStatsTotal.EndlessStreak
                    : curAccount.ServerStats.LegacyStreak + curAccount.ServerStatsTotal.LegacyStreak;
                switch (type)
                {
                    case RankEnum.Solo:
                        builder.Append($"`{i + 1}` {emotes[i]} {curAccount.Name,-15} - `{streak.Solo}`\n");
                        break;

                    case RankEnum.Duo:
                        builder.Append($"`{i + 1}` {emotes[i]} {streak.DuoNames} - `{streak.Duo}`\n");
                        break;

                    case RankEnum.Trio:
                        builder.Append($"`{i + 1}` {emotes[i]} {streak.TrioNames} - `{streak.Trio}`\n");
                        break;

                    case RankEnum.Quad:
                        builder.Append($"`{i + 1}` {emotes[i]} {streak.QuadNames} - `{streak.Quad}`\n");
                        break;
                }
            }

            //Console.WriteLine(rank);
            var account = EntityConverter.ConvertUser(Context.User);
            var rank = UserAccounts.GetRank(account, type, mode);
            if (rank >= 5)
            {
                builder.Append("... \n");
                var streak = mode == EndlessMode.Default
                    ? account.ServerStats.EndlessStreak + account.ServerStatsTotal.EndlessStreak
                    : account.ServerStats.LegacyStreak + account.ServerStatsTotal.LegacyStreak;
                switch (type)
                {
                    case RankEnum.Solo:
                        builder.Append($"`{rank + 1}` {account.Name,-15} - `{streak.Solo}`");
                        break;

                    case RankEnum.Duo:
                        builder.Append($"{streak.DuoNames} - `{streak.Duo}`");
                        break;

                    case RankEnum.Trio:
                        builder.Append($"{streak.TrioNames} - `{streak.Trio}`");
                        break;

                    case RankEnum.Quad:
                        builder.Append($"{streak.QuadNames} - `{streak.Quad}`");
                        break;
                }
            }

            if (type == RankEnum.Solo && mode == EndlessMode.Legacy)
                embed.WithFooter("Honorary Mention: Smeecko - 81, by breaking the Time-Space Continuum");
            embed.WithDescription(builder.ToString());

            await Context.Channel.SendMessageAsync("", false, embed.Build());
        }
コード例 #15
0
ファイル: Leveling.cs プロジェクト: Floowey/IodemBot
        internal static async void UserSentMessage(SocketGuildUser user, SocketTextChannel channel)
        {
            if (channel == null || BlackListedChannels.Contains(channel.Id) || user == null)
            {
                return;
            }

            if (channel.Id == GuildSettings.GetGuildSettings(channel.Guild).ColossoChannel?.Id)
            {
                return;
            }

            var userAccount = EntityConverter.ConvertUser(user);

            // if the user has a timeout, ignore them
            var sinceLastXp = DateTime.UtcNow - userAccount.LastXp;
            var oldLevel    = userAccount.LevelNumber;

            if (sinceLastXp.TotalMinutes >= 3)
            {
                userAccount.LastXp = DateTime.UtcNow;
                userAccount.AddXp((uint)Global.RandomNumber(30, 50));
            }

            if (DateTime.Now.Date != userAccount.ServerStats.LastDayActive.Date)
            {
                userAccount.ServerStats.UniqueDaysActive++;
                userAccount.ServerStats.LastDayActive = DateTime.Now.Date;
            }

            if (channel.Id == GuildSettings.GetGuildSettings(channel.Guild)?.ColossoChannel?.Id)
            {
                userAccount.ServerStats.MessagesInColossoTalks++;
                if (userAccount.ServerStats.MessagesInColossoTalks >= 50)
                {
                    _ = GoldenSunCommands.AwardClassSeries("Swordsman Series", user, channel);
                }
            }

            var newLevel = userAccount.LevelNumber;

            if (oldLevel != newLevel)
            {
                LevelUp(userAccount, user, channel);
            }

            if (channel.Id != userAccount.ServerStats.MostRecentChannel)
            {
                userAccount.ServerStats.MostRecentChannel = channel.Id;
                userAccount.ServerStats.ChannelSwitches  += 2;
                if (userAccount.ServerStats.ChannelSwitches >= 14)
                {
                    _ = GoldenSunCommands.AwardClassSeries("Air Pilgrim Series", user, channel);
                }
            }
            else
            {
                if (userAccount.ServerStats.ChannelSwitches > 0)
                {
                    userAccount.ServerStats.ChannelSwitches--;
                }
            }
            UserAccountProvider.StoreUser(userAccount);
            await Task.CompletedTask;
        }
コード例 #16
0
        public async Task Tags(SocketGuildUser user)
        {
            var avatar = EntityConverter.ConvertUser(user);

            await ReplyAsync(string.Join(", ", avatar.Tags));
        }
コード例 #17
0
        public async Task GiveRole([Remainder] string RoleName = "")
        {
            var user  = (SocketGuildUser)Context.User;
            var embed = new EmbedBuilder().WithColor(Colors.Get("Iodem")).WithThumbnailUrl(Sprites.GetImageFromName("Iodem"));
            Dictionary <string, ulong> roles = new Dictionary <string, ulong>(StringComparer.CurrentCultureIgnoreCase)
            {
                { "Gladiator", 511704880122036234 },
                { "Colosso Adept", 644506247521107969 },
                { "Fighter", 742060001031618590 }
            };

            if (RoleName.Equals("Gladiator", StringComparison.CurrentCultureIgnoreCase) && EntityConverter.ConvertUser(Context.User).LevelNumber < 5)
            {
                _ = ReplyAsync("Please participate in the server more before you can announce your streams. We would like to be a community and not just be used as an advertising platform!");
                return;
            }

            if (roles.TryGetValue(RoleName, out ulong roleId))
            {
                var Role = Context.Guild.GetRole(roleId);
                if (user.Roles.Any(r => r.Id == roleId))
                {
                    embed.WithDescription($"{user.DisplayName()} is no longer a {Role.Name}!");
                    await user.RemoveRoleAsync(Role);
                }
                else
                {
                    embed.WithDescription($"{user.DisplayName()} is a {Role.Name} now!");
                    await user.AddRoleAsync(Role);
                }
            }
            else
            {
                embed.WithDescription($"Select any of the following available roles:\n```\n{string.Join("\n", roles.Keys)}```");
            }
            await Context.Channel.SendMessageAsync(embed : embed.Build());
        }
コード例 #18
0
 public override async Task RunAsync()
 {
     var account = EntityConverter.ConvertUser(Context.User);
     await Context.ReplyWithMessageAsync(EphemeralRule, embed : GetLoadoutEmbed(account), components : GetLoadoutComponent(account));
 }