public override Task <PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider map) { var service = map.GetService <RemindMeService>(); if (service != null) { //if (CheckAllowCommands(service, context)) //{ try { if (SqliteDbHandler.GetAdminRoles(context.Guild).Any(x => ((SocketGuildUser)context.User).Roles.Select(y => y.Id).Contains(x))) { return(Task.FromResult(PreconditionResult.FromSuccess())); } else if (new RequireOwnerAttribute().CheckPermissionsAsync(context, command, map).GetAwaiter().GetResult().IsSuccess || new RequireUserPermissionAttribute(GuildPermission.Administrator).CheckPermissionsAsync(context, command, map).GetAwaiter().GetResult().IsSuccess) { return(Task.FromResult(PreconditionResult.FromSuccess())); } return(Task.FromResult(PreconditionResult.FromError("This command can only be used by user with admin role, server administrator or bot owner."))); } catch (SqliteException e) { context.Message.AddReactionAsync(new Emoji("❌")); return(Task.FromResult(PreconditionResult.FromError(e.Message))); } //} //return Task.FromResult(PreconditionResult.FromError("Managing music via commands is disabled in this guild.")); } return(Task.FromResult(PreconditionResult.FromError("No RemindMeService found."))); }
internal List <SocketRole> GetAdminRoles(IGuild guild) { List <SocketRole> roles = new List <SocketRole>(); foreach (ulong roleId in SqliteDbHandler.GetAdminRoles(guild)) { roles.Add(guild.Roles.Where(x => x.Id == roleId).FirstOrDefault() as SocketRole); } return(roles); }