From 7a232b22fe626fd530347689612f46ec08748e05 Mon Sep 17 00:00:00 2001
From: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com>
Date: Sat, 7 Aug 2021 14:57:07 -0400
Subject: [PATCH] Add missing guild permissions (#93)
* Update GuildPermissions.cs
* Update GuildPermissionsTests.cs
---
.../Entities/Permissions/GuildPermissions.cs | 55 +++++++++++++++++--
.../GuildPermissionsTests.cs | 16 +++++-
2 files changed, 63 insertions(+), 8 deletions(-)
diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs
index 1914a6f86..9503e5b3b 100644
--- a/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs
+++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs
@@ -81,8 +81,20 @@ namespace Discord
public bool ManageRoles => Permissions.GetValue(RawValue, GuildPermission.ManageRoles);
/// If true, a user may edit the webhooks for this guild.
public bool ManageWebhooks => Permissions.GetValue(RawValue, GuildPermission.ManageWebhooks);
- /// If true, a user may edit the emojis for this guild.
+ /// If true, a user may edit the emojis and stickers for this guild.
public bool ManageEmojisAndStickers => Permissions.GetValue(RawValue, GuildPermission.ManageEmojisAndStickers);
+ /// If true, a user may use slash commands in this guild.
+ public bool UseSlashCommands => Permissions.GetValue(RawValue, GuildPermission.UseSlashCommands);
+ /// If true, a user may request to speak in stage channels.
+ public bool RequestToSpeak => Permissions.GetValue(RawValue, GuildPermission.RequestToSpeak);
+ /// If true, a user may manage threads in this guild.
+ public bool ManageThreads => Permissions.GetValue(RawValue, GuildPermission.ManageThreads);
+ /// If true, a user may create public threads in this guild.
+ public bool UsePublicThreads => Permissions.GetValue(RawValue, GuildPermission.UsePublicThreads);
+ /// If true, a user may create private threads in this guild.
+ public bool UsePrivateThreads => Permissions.GetValue(RawValue, GuildPermission.UsePrivateThreads);
+ /// If true, a user may use external stickers in this guild.
+ public bool UseExternalStickers => Permissions.GetValue(RawValue, GuildPermission.UseExternalStickers);
/// Creates a new with the provided packed value.
public GuildPermissions(ulong rawValue) { RawValue = rawValue; }
@@ -121,7 +133,13 @@ namespace Discord
bool? manageNicknames = null,
bool? manageRoles = null,
bool? manageWebhooks = null,
- bool? manageEmojisAndStickers = null)
+ bool? manageEmojisAndStickers = null,
+ bool? useSlashCommands = null,
+ bool? requestToSpeak = null,
+ bool? manageThreads = null,
+ bool? usePublicThreads = null,
+ bool? usePrivateThreads = null,
+ bool? useExternalStickers = null)
{
ulong value = initialValue;
@@ -156,6 +174,12 @@ namespace Discord
Permissions.SetValue(ref value, manageRoles, GuildPermission.ManageRoles);
Permissions.SetValue(ref value, manageWebhooks, GuildPermission.ManageWebhooks);
Permissions.SetValue(ref value, manageEmojisAndStickers, GuildPermission.ManageEmojisAndStickers);
+ Permissions.SetValue(ref value, useSlashCommands, GuildPermission.UseSlashCommands);
+ Permissions.SetValue(ref value, requestToSpeak, GuildPermission.RequestToSpeak);
+ Permissions.SetValue(ref value, manageThreads, GuildPermission.ManageThreads);
+ Permissions.SetValue(ref value, usePublicThreads, GuildPermission.UsePublicThreads);
+ Permissions.SetValue(ref value, usePrivateThreads, GuildPermission.UseExternalStickers);
+ Permissions.SetValue(ref value, useExternalStickers, GuildPermission.UseExternalStickers);
RawValue = value;
}
@@ -192,7 +216,13 @@ namespace Discord
bool manageNicknames = false,
bool manageRoles = false,
bool manageWebhooks = false,
- bool manageEmojis = false)
+ bool manageEmojisAndStickers = false,
+ bool useSlashCommands = false,
+ bool requestToSpeak = false,
+ bool manageThreads = false,
+ bool usePublicThreads = false,
+ bool usePrivateThreads = false,
+ bool useExternalStickers = false)
: this(0,
createInstantInvite: createInstantInvite,
manageRoles: manageRoles,
@@ -224,7 +254,13 @@ namespace Discord
changeNickname: changeNickname,
manageNicknames: manageNicknames,
manageWebhooks: manageWebhooks,
- manageEmojisAndStickers: manageEmojis)
+ manageEmojisAndStickers: manageEmojisAndStickers,
+ useSlashCommands: useSlashCommands,
+ requestToSpeak: requestToSpeak,
+ manageThreads: manageThreads,
+ usePublicThreads: usePublicThreads,
+ usePrivateThreads: usePrivateThreads,
+ useExternalStickers: useExternalStickers)
{ }
/// Creates a new from this one, changing the provided non-null permissions.
@@ -259,11 +295,18 @@ namespace Discord
bool? manageNicknames = null,
bool? manageRoles = null,
bool? manageWebhooks = null,
- bool? manageEmojis = null)
+ bool? manageEmojisAndStickers = null,
+ bool? useSlashCommands = null,
+ bool? requestToSpeak = null,
+ bool? manageThreads = null,
+ bool? usePublicThreads = null,
+ bool? usePrivateThreads = null,
+ bool? useExternalStickers = null)
=> new GuildPermissions(RawValue, createInstantInvite, kickMembers, banMembers, administrator, manageChannels, manageGuild, addReactions,
viewAuditLog, viewGuildInsights, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles,
readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, moveMembers,
- useVoiceActivation, prioritySpeaker, stream, changeNickname, manageNicknames, manageRoles, manageWebhooks, manageEmojis);
+ useVoiceActivation, prioritySpeaker, stream, changeNickname, manageNicknames, manageRoles, manageWebhooks, manageEmojisAndStickers,
+ useSlashCommands, requestToSpeak, manageThreads, usePublicThreads, usePrivateThreads, useExternalStickers);
///
/// Returns a value that indicates if a specific is enabled
diff --git a/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs b/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs
index 137dc5575..9be109c6e 100644
--- a/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs
+++ b/test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs
@@ -91,7 +91,13 @@ namespace Discord
AssertFlag(() => new GuildPermissions(manageNicknames: true), GuildPermission.ManageNicknames);
AssertFlag(() => new GuildPermissions(manageRoles: true), GuildPermission.ManageRoles);
AssertFlag(() => new GuildPermissions(manageWebhooks: true), GuildPermission.ManageWebhooks);
- AssertFlag(() => new GuildPermissions(manageEmojis: true), GuildPermission.ManageEmojis);
+ AssertFlag(() => new GuildPermissions(manageEmojisAndStickers: true), GuildPermission.ManageEmojisAndStickers);
+ AssertFlag(() => new GuildPermissions(useSlashCommands: true), GuildPermission.UseSlashCommands);
+ AssertFlag(() => new GuildPermissions(requestToSpeak: true), GuildPermission.RequestToSpeak);
+ AssertFlag(() => new GuildPermissions(manageThreads: true), GuildPermission.ManageThreads);
+ AssertFlag(() => new GuildPermissions(usePublicThreads: true), GuildPermission.UsePublicThreads);
+ AssertFlag(() => new GuildPermissions(usePrivateThreads: true), GuildPermission.UsePrivateThreads);
+ AssertFlag(() => new GuildPermissions(useExternalStickers: true), GuildPermission.UseExternalStickers);
}
///
@@ -161,7 +167,13 @@ namespace Discord
AssertUtil(GuildPermission.ManageNicknames, x => x.ManageNicknames, (p, enable) => p.Modify(manageNicknames: enable));
AssertUtil(GuildPermission.ManageRoles, x => x.ManageRoles, (p, enable) => p.Modify(manageRoles: enable));
AssertUtil(GuildPermission.ManageWebhooks, x => x.ManageWebhooks, (p, enable) => p.Modify(manageWebhooks: enable));
- AssertUtil(GuildPermission.ManageEmojis, x => x.ManageEmojisAndStickers, (p, enable) => p.Modify(manageEmojis: enable));
+ AssertUtil(GuildPermission.ManageEmojisAndStickers, x => x.ManageEmojisAndStickers, (p, enable) => p.Modify(manageEmojisAndStickers: enable));
+ AssertUtil(GuildPermission.UseSlashCommands, x => x.UseSlashCommands, (p, enable) => p.Modify(useSlashCommands: enable));
+ AssertUtil(GuildPermission.RequestToSpeak, x => x.RequestToSpeak, (p, enable) => p.Modify(requestToSpeak: enable));
+ AssertUtil(GuildPermission.ManageThreads, x => x.ManageThreads, (p, enable) => p.Modify(manageThreads: enable));
+ AssertUtil(GuildPermission.UsePublicThreads, x => x.UsePublicThreads, (p, enable) => p.Modify(usePublicThreads: enable));
+ AssertUtil(GuildPermission.UsePrivateThreads, x => x.UsePrivateThreads, (p, enable) => p.Modify(usePrivateThreads: enable));
+ AssertUtil(GuildPermission.UseExternalStickers, x => x.UseExternalStickers, (p, enable) => p.Modify(useExternalStickers: enable));
}
}
}