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);
            }
        }
示例#2
0
 public SelfRole(SelfRoleService roleService)
 {
     _selfRoleService = roleService;
 }