Beispiel #1
0
        public async Task RoleShopRemoveRole([Remainder] string name = "")
        {
            var roles = await ShopRoleDb.GetRoles(Context.Guild.Id);

            var eb = new EmbedBuilderPrepared()
                     .WithTitle(":star: Role Shop");

            if (!roles.Any())
            {
                await Context.Channel.SendMessageAsync(embed : eb.WithDescription(" *~ No roles in shop ~*\n").WithColor(Color.DarkRed).Build());

                return;
            }

            int i    = 1;
            var role = await this.SelectItem(
                roles,
                eb.WithDescription(
                    "Enter the number of the role you wish to delete...\n\n" +
                    CustomPaginatedMessage.PagesArray(roles, 100, (r) => $"**#{i++}** <@&{r.RoleId}>\n", false).First()
                    )
                );

            await ShopRoleDb.RemoveRole(role.RoleId);

            await Context.Channel.SendMessageAsync(embed : eb.WithDescription($" *~ <@&{role.RoleId}> removed ~*\n").Build());
        }
Beispiel #2
0
        public async Task RoleShopAddRole([Remainder] string name = "")
        {
            var roles = await ShopRoleDb.GetRoles(Context.Guild.Id);

            var role = await this.SelectRole(name, roles.Select(x => x.RoleId));

            if (role == null)
            {
                return;
            }

            var user = Context.User as SocketGuildUser;

            if (user.Roles.Contains(role))
            {
                await Context.Channel.SendMessageAsync(embed : new EmbedBuilderPrepared($"You already have **{role.Mention}** !").Build());

                return;
            }

            int price = roles.FirstOrDefault(x => x.RoleId == role.Id).Price;

            try
            {
                await BalanceDb.AddToasties(Context.User.Id, -price, Context.Guild.Id);

                await user.AddRoleAsync(role);

                await Context.Channel.SendMessageAsync(embed : new EmbedBuilderPrepared($"You bought the **{role.Mention}** role!").Build());
            } catch (Exception ex)
            {
                await Context.Channel.SendMessageAsync(embed : new EmbedBuilderPrepared(ex.Message).WithColor(Color.DarkRed).Build());
            }
        }
Beispiel #3
0
        public async Task RoleShop([Remainder] string str = "")
        {
            var roles = await ShopRoleDb.GetRoles(Context.Guild.Id);

            var eb = new EmbedBuilderPrepared()
                     .WithTitle(":star: Role Shop");

            if (!roles.Any())
            {
                await Context.Channel.SendMessageAsync(embed : eb.WithDescription(" *~ No roles in shop ~*\n").WithColor(Color.DarkRed).Build());

                return;
            }

            await Context.Channel.SendMessageAsync(embed :
                                                   eb.WithDescription(CustomPaginatedMessage.PagesArray(roles.OrderByDescending(x => x.Price), 100, (r) => $"<@&{r.RoleId}> - **{r.Price:n0}**\n").First()).Build());
        }
Beispiel #4
0
        public async Task RoleShopAddRole(int price, [Remainder] string name = "")
        {
            if (price < 0)
            {
                await Context.Channel.SendMessageAsync(embed : new EmbedBuilderPrepared($"~ Price can't be negative ~")
                                                       .WithColor(Color.DarkRed)
                                                       .Build());

                return;
            }

            var role = await this.SelectRole(name);

            if (role == null)
            {
                return;
            }


            int userHigh = ((SocketGuildUser)Context.User).Roles.Max(x => x.Position);

            if (userHigh <= role.Position)
            {
                await Context.Channel.SendMessageAsync($":x: You do not have permission to modify `{role.Name}`! Make sure you have a role higher in the list.");

                return;
            }

            if (await ShopRoleDb.IsRole(role.Id))
            {
                await Context.Channel.SendMessageAsync(embed : new EmbedBuilderPrepared($"~ **{role.Name}** is already in the shop ~")
                                                       .WithColor(Color.DarkRed)
                                                       .Build());

                return;
            }

            await ShopRoleDb.AddRole(Context.Guild.Id, role.Id, price);

            await Context.Channel.SendMessageAsync(embed : new EmbedBuilderPrepared($"~ **{role.Name}** added to the shop ~").Build());
        }