getOverrides static method
- IMember member,
- IGuildChannel channel
Returns List of channel
permissions overrides for given member
.
Implementation
static List<int> getOverrides(IMember member, IGuildChannel channel) {
var allowRaw = 0;
var denyRaw = 0;
final publicOverride = channel.permissionOverrides.firstWhereSafe((ov) => ov.id == member.guild.getFromCache()?.everyoneRole.id);
if (publicOverride != null) {
allowRaw = publicOverride.allow;
denyRaw = publicOverride.deny;
}
var allowRole = 0;
var denyRole = 0;
for (final role in member.roles) {
final channelOverride = channel.permissionOverrides.firstWhereSafe((f) => f.id == role.id);
if (channelOverride != null) {
denyRole |= channelOverride.deny;
allowRole |= channelOverride.allow;
}
}
allowRaw = (allowRaw & ~denyRole) | allowRole;
denyRaw = (denyRaw & ~allowRole) | denyRole;
final memberOverride = channel.permissionOverrides.firstWhereSafe((g) => g.id == member.id);
if (memberOverride != null) {
allowRaw = (allowRaw & ~memberOverride.deny) | memberOverride.allow;
denyRaw = (denyRaw & ~memberOverride.allow) | memberOverride.deny;
}
return [allowRaw, denyRaw];
}