Check if user is webhook in PermissionsFor

This commit is contained in:
spiral 2021-06-14 09:57:58 -04:00
parent 6409c76f10
commit c46177f2f5
No known key found for this signature in database
GPG Key ID: A6059F0CA0E1BD31

View File

@ -11,7 +11,7 @@ namespace Myriad.Extensions
public static class PermissionExtensions public static class PermissionExtensions
{ {
public static PermissionSet PermissionsFor(this IDiscordCache cache, MessageCreateEvent message) => public static PermissionSet PermissionsFor(this IDiscordCache cache, MessageCreateEvent message) =>
PermissionsFor(cache, message.ChannelId, message.Author.Id, message.Member?.Roles); PermissionsFor(cache, message.ChannelId, message.Author.Id, message.Member?.Roles, isWebhook: message.Author.Discriminator == "0000");
public static PermissionSet PermissionsFor(this IDiscordCache cache, ulong channelId, GuildMember member) => public static PermissionSet PermissionsFor(this IDiscordCache cache, ulong channelId, GuildMember member) =>
PermissionsFor(cache, channelId, member.User.Id, member.Roles); PermissionsFor(cache, channelId, member.User.Id, member.Roles);
@ -19,13 +19,17 @@ namespace Myriad.Extensions
public static PermissionSet PermissionsFor(this IDiscordCache cache, ulong channelId, ulong userId, GuildMemberPartial member) => public static PermissionSet PermissionsFor(this IDiscordCache cache, ulong channelId, ulong userId, GuildMemberPartial member) =>
PermissionsFor(cache, channelId, userId, member.Roles); PermissionsFor(cache, channelId, userId, member.Roles);
public static PermissionSet PermissionsFor(this IDiscordCache cache, ulong channelId, ulong userId, ICollection<ulong>? userRoles) public static PermissionSet PermissionsFor(this IDiscordCache cache, ulong channelId, ulong userId, ICollection<ulong>? userRoles, bool isWebhook = false)
{ {
var channel = cache.GetChannel(channelId); var channel = cache.GetChannel(channelId);
if (channel.GuildId == null) if (channel.GuildId == null)
return PermissionSet.Dm; return PermissionSet.Dm;
var guild = cache.GetGuild(channel.GuildId.Value); var guild = cache.GetGuild(channel.GuildId.Value);
if (isWebhook)
return EveryonePermissions(guild);
return PermissionsFor(guild, channel, userId, userRoles); return PermissionsFor(guild, channel, userId, userRoles);
} }