public async Task GiveRoleAsync(CommandContext ctx, [Description("desc-roles-add")] params DiscordRole[] roles) { SelfRoleService service = ctx.Services.GetRequiredService <SelfRoleService>(); var failedRoles = new List <DiscordRole>(); foreach (DiscordRole role in roles.Distinct()) { if (await service.ContainsAsync(ctx.Guild.Id, role.Id)) { await ctx.Member.GrantRoleAsync(role, ctx.BuildInvocationDetailsString("_gf: Self-granted")); } else { failedRoles.Add(role); } } if (failedRoles.Any()) { await ctx.ImpInfoAsync(this.ModuleColor, "cmd-err-grant-fail", failedRoles.Select(r => r.Mention).JoinWith()); } else { await ctx.InfoAsync(this.ModuleColor); } }
public SelfRole(SelfRoleService roleService) { _selfRoleService = roleService; }