feat: add checking for Use External Emoji permissions in pk;permcheck
This commit is contained in:
parent
b46561cb0a
commit
c7fcf60fbf
@ -84,6 +84,7 @@ namespace PluralKit.Bot
|
||||
foreach (var channel in await _rest.GetGuildChannels(guild.Id))
|
||||
{
|
||||
var botPermissions = _bot.PermissionsIn(channel.Id);
|
||||
var webhookPermissions = _cache.EveryonePermissions(channel);
|
||||
var userPermissions = PermissionExtensions.PermissionsFor(guild, channel, ctx.Author.Id, senderGuildUser);
|
||||
|
||||
if ((userPermissions & PermissionSet.ViewChannel) == 0)
|
||||
@ -98,10 +99,14 @@ namespace PluralKit.Bot
|
||||
// We use a bitfield so we can set individual permission bits in the loop
|
||||
// TODO: Rewrite with proper bitfield math
|
||||
ulong missingPermissionField = 0;
|
||||
|
||||
foreach (var requiredPermission in requiredPermissions)
|
||||
if ((botPermissions & requiredPermission) == 0)
|
||||
missingPermissionField |= (ulong) requiredPermission;
|
||||
|
||||
if ((webhookPermissions & PermissionSet.UseExternalEmojis) == 0)
|
||||
missingPermissionField |= (ulong) PermissionSet.UseExternalEmojis;
|
||||
|
||||
// If we're not missing any permissions, don't bother adding it to the dict
|
||||
// This means we can check if the dict is empty to see if all channels are proxyable
|
||||
if (missingPermissionField != 0)
|
||||
@ -127,6 +132,9 @@ namespace PluralKit.Bot
|
||||
// so we extract them all and generate a comma-separated list
|
||||
var missingPermissionNames = ((PermissionSet) missingPermissionField).ToPermissionString();
|
||||
|
||||
if (missingPermissionField == (ulong) PermissionSet.UseExternalEmojis)
|
||||
eb.Footer(new($"Use External Emojis permissions must be granted to the @everyone role / Default Permissions."));
|
||||
|
||||
var channelsList = string.Join("\n", channels
|
||||
.OrderBy(c => c.Position)
|
||||
.Select(c => $"#{c.Name}"));
|
||||
|
Loading…
Reference in New Issue
Block a user