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()); } }
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()); }
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()); }