public async Task <DiscordCommandResult> AddMainAsync(
            [Description("The emoji for the character you wish to add.")]
            IGuildEmoji emoji)
        {
            if (!EmojiToRoleMap.TryGetValue(emoji.Id, out var roleId))
            {
                return(Response("That emoji doesn't belong to a character!"));
            }

            if (Context.Author.RoleIds.Contains(roleId))
            {
                return(Response("You already added that character as a main!"));
            }

            if (await Database.Config.FindAsync("MAXIMUM_MAINS") is not {
            } maximumMains ||
                !int.TryParse(maximumMains.Value, out var maximum))
            {
                return(Response("This command isn't properly configured. Please contact one of the admins."));
            }

            if (EmojiToRoleMap.Values.Count(x => Context.Author.RoleIds.Contains(x)) >= maximum)
            {
                return(Response($"You are not allowed to have more than {maximum} characters you main at once.\n" +
                                $"You'll need to remove some first via \"{Context.Prefix}remove <character>\"."));
            }

            await Context.Author.GrantRoleAsync(roleId);

            return(Response($"You've added {Markdown.Bold(Context.Guild.Roles[roleId].Name)} as a main."));
        }
        public static Task DeleteAsync(this IGuildEmoji emoji,
                                       IRestRequestOptions options = null, CancellationToken cancellationToken = default)
        {
            var client = emoji.GetRestClient();

            return(client.DeleteGuildEmojiAsync(emoji.GuildId, emoji.Id, options, cancellationToken));
        }
        public static Task <IGuildEmoji> ModifyAsync(this IGuildEmoji emoji,
                                                     Action <ModifyGuildEmojiActionProperties> action,
                                                     IRestRequestOptions options = null, CancellationToken cancellationToken = default)
        {
            var client = emoji.GetRestClient();

            return(client.ModifyGuildEmojiAsync(emoji.GuildId, emoji.Id, action, options, cancellationToken));
        }
        public async Task <DiscordCommandResult> RemoveMainAsync(
            [Description("The emoji for the character you wish to remove.")]
            IGuildEmoji emoji)
        {
            if (!EmojiToRoleMap.TryGetValue(emoji.Id, out var roleId))
            {
                return(Response("That emoji doesn't belong to a character!"));
            }

            if (!Context.Author.RoleIds.Contains(roleId))
            {
                return(Response("You haven't added that character as a main!"));
            }

            await Context.Author.RevokeRoleAsync(roleId);

            return(Response($"You've abandoned {Markdown.Bold(Context.Guild.Roles[roleId].Name)} as a main. For shame!"));
        }
Esempio n. 5
0
        public static Task <IGuildEmoji> ModifyAsync(this IGuildEmoji emoji, Snowflake emojiId, Action <ModifyGuildEmojiActionProperties> action, IRestRequestOptions options = null)
        {
            var client = emoji.GetRestClient();

            return(client.ModifyGuildEmojiAsync(emoji.Id, emojiId, action, options));
        }
Esempio n. 6
0
        public static Task DeleteAsync(this IGuildEmoji emoji, Snowflake emojiId, IRestRequestOptions options = null)
        {
            var client = emoji.GetRestClient();

            return(client.DeleteGuildEmojiAsync(emoji.Id, emojiId, options));
        }