effectivePermissions method
Returns effective permissions for member
to this channel including channel overrides.
Implementation
Future<Permissions> effectivePermissions(Member member) async {
if (member.guild != this.guild) {
return Permissions.empty();
}
final owner = await member.guild.getOrDownload();
if (owner == member) {
return Permissions.fromInt(PermissionsConstants.allPermissions);
}
var rawMemberPerms = (await member.effectivePermissions).raw;
if (PermissionsUtils.isApplied(rawMemberPerms, PermissionsConstants.administrator)) {
return Permissions.fromInt(PermissionsConstants.allPermissions);
}
final overrides = PermissionsUtils.getOverrides(member, this);
rawMemberPerms = PermissionsUtils.apply(rawMemberPerms, overrides.first, overrides.last);
return PermissionsUtils.isApplied(rawMemberPerms, PermissionsConstants.viewChannel)
? Permissions.fromInt(rawMemberPerms)
: Permissions.empty();
}