Skip to content

Commit dde9930

Browse files
committed
Add BypassSlowmode permission
1 parent 9c1db3f commit dde9930

File tree

6 files changed

+41
-13
lines changed

6 files changed

+41
-13
lines changed

src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,5 +212,10 @@ public enum ChannelPermission : ulong
212212
/// Allows pinning and unpinning messages.
213213
/// </summary>
214214
PinMessages = 1L << 51,
215+
216+
/// <summary>
217+
/// Allows bypassing slowmode restrictions.
218+
/// </summary>
219+
BypassSlowmode = 1L << 52,
215220
}
216221
}

src/Discord.Net.Core/Entities/Permissions/ChannelPermissions.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ public struct ChannelPermissions
1818
/// <summary>
1919
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for text channels.
2020
/// </summary>
21-
public static readonly ChannelPermissions Text = new(0b1110_110001_001111_110010_110011_111101_111111_111101_010001);
21+
public static readonly ChannelPermissions Text = new(0b11110_110001_001111_110010_110011_111101_111111_111101_010001);
2222

2323
/// <summary>
2424
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for voice channels.
2525
/// </summary>
26-
public static readonly ChannelPermissions Voice = new(0b0111_110101_001010_001010_110011_111101_111111_111101_010001);
26+
public static readonly ChannelPermissions Voice = new(0b10111_110101_001010_001010_110011_111101_111111_111101_010001);
2727

2828
/// <summary>
2929
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for stage channels.
3030
/// </summary>
31-
public static readonly ChannelPermissions Stage = new(0b0110_110100_000010_001110_010001_010101_111111_111001_010001);
31+
public static readonly ChannelPermissions Stage = new(0b10110_110100_000010_001110_010001_010101_111111_111001_010001);
3232

3333
/// <summary>
3434
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for category channels.
@@ -160,6 +160,8 @@ public static ChannelPermissions All(IChannel channel)
160160
public bool UseExternalSounds => Permissions.GetValue(RawValue, ChannelPermission.UseExternalSounds);
161161
/// <summary> If <see langword="true"/>, a user can ping and unpin messages.</summary>
162162
public bool PinMessages => Permissions.GetValue(RawValue, ChannelPermission.PinMessages);
163+
/// <summary> If <see langword="true"/>, a user may bypass slowmode restrictions.</summary>
164+
public bool BypassSlowmode => Permissions.GetValue(RawValue, ChannelPermission.BypassSlowmode);
163165

164166
/// <summary> Creates a new <see cref="ChannelPermissions"/> with the provided packed value.</summary>
165167
public ChannelPermissions(ulong rawValue) { RawValue = rawValue; }
@@ -203,7 +205,8 @@ private ChannelPermissions(ulong initialValue,
203205
bool? sendPolls = null,
204206
bool? useExternalApps = null,
205207
bool? useExternalSounds = null,
206-
bool? pinMessages = null)
208+
bool? pinMessages = null,
209+
bool? bypassSlowmode = null)
207210
{
208211
ulong value = initialValue;
209212

@@ -246,6 +249,7 @@ private ChannelPermissions(ulong initialValue,
246249
Permissions.SetValue(ref value, useExternalApps, ChannelPermission.UseExternalApps);
247250
Permissions.SetValue(ref value, useExternalSounds, ChannelPermission.UseExternalSounds);
248251
Permissions.SetValue(ref value, pinMessages, ChannelPermission.PinMessages);
252+
Permissions.SetValue(ref value, bypassSlowmode, ChannelPermission.BypassSlowmode);
249253

250254
RawValue = value;
251255
}
@@ -290,13 +294,14 @@ public ChannelPermissions(
290294
bool sendPolls = false,
291295
bool useExternalApps = false,
292296
bool useExternalSounds = false,
293-
bool pinMessages = false)
297+
bool pinMessages = false,
298+
bool bypassSlowmode = false)
294299
: this(0, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages,
295300
embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect,
296301
speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, prioritySpeaker, stream, manageRoles, manageWebhooks,
297302
useApplicationCommands, requestToSpeak, manageThreads, createPublicThreads, createPrivateThreads, useExternalStickers, sendMessagesInThreads,
298303
startEmbeddedActivities, useSoundboard, createEvents, sendVoiceMessages, useClydeAI, setVoiceChannelStatus, sendPolls, useExternalApps,
299-
useExternalSounds, pinMessages)
304+
useExternalSounds, pinMessages, bypassSlowmode)
300305
{ }
301306

302307
/// <summary> Creates a new <see cref="ChannelPermissions"/> from this one, changing the provided non-null permissions.</summary>
@@ -339,7 +344,8 @@ public ChannelPermissions Modify(
339344
bool? sendPolls = null,
340345
bool? useExternalApps = null,
341346
bool? useExternalSounds = null,
342-
bool? pinMessages = null)
347+
bool? pinMessages = null,
348+
bool? bypassSlowmode = null)
343349
=> new ChannelPermissions(RawValue,
344350
createInstantInvite,
345351
manageChannel,
@@ -379,7 +385,8 @@ public ChannelPermissions Modify(
379385
sendPolls,
380386
useExternalApps,
381387
useExternalSounds,
382-
pinMessages);
388+
pinMessages,
389+
bypassSlowmode);
383390

384391
public bool Has(ChannelPermission permission) => Permissions.GetValue(RawValue, permission);
385392

src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,5 +307,10 @@ public enum GuildPermission : ulong
307307
/// Allows pinning and unpinning messages.
308308
/// </summary>
309309
PinMessages = 1L << 51,
310+
311+
/// <summary>
312+
/// Allows bypassing slowmode restrictions.
313+
/// </summary>
314+
BypassSlowmode = 1L << 52,
310315
}
311316
}

src/Discord.Net.Core/Entities/Permissions/GuildPermissions.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ public struct GuildPermissions
126126
public bool CreateEvents => Permissions.GetValue(RawValue, GuildPermission.CreateEvents);
127127
/// <summary> If <see langword="true"/>, a user can ping and unpin messages.</summary>
128128
public bool PinMessages => Permissions.GetValue(RawValue, GuildPermission.PinMessages);
129+
/// <summary> If <see langword="true"/>, a user may bypass slowmode restrictions. </summary>
130+
public bool BypassSlowmode => Permissions.GetValue(RawValue, GuildPermission.BypassSlowmode);
129131

130132
/// <summary> Creates a new <see cref="GuildPermissions"/> with the provided packed value. </summary>
131133
public GuildPermissions(ulong rawValue) { RawValue = rawValue; }
@@ -185,7 +187,8 @@ private GuildPermissions(ulong initialValue,
185187
bool? useExternalApps = null,
186188
bool? useExternalSounds = null,
187189
bool? createEvents = null,
188-
bool? pinMessages = null)
190+
bool? pinMessages = null,
191+
bool? bypassSlowmode = null)
189192
{
190193
ulong value = initialValue;
191194

@@ -241,6 +244,7 @@ private GuildPermissions(ulong initialValue,
241244
Permissions.SetValue(ref value, useExternalSounds, GuildPermission.UseExternalSounds);
242245
Permissions.SetValue(ref value, createEvents, GuildPermission.CreateEvents);
243246
Permissions.SetValue(ref value, pinMessages, GuildPermission.PinMessages);
247+
Permissions.SetValue(ref value, bypassSlowmode, GuildPermission.BypassSlowmode);
244248

245249
RawValue = value;
246250
}
@@ -298,7 +302,8 @@ public GuildPermissions(
298302
bool useExternalApps = false,
299303
bool useExternalSounds = false,
300304
bool createEvents = false,
301-
bool pinMessages = false)
305+
bool pinMessages = false,
306+
bool bypassSlowmode = false)
302307
: this(0,
303308
createInstantInvite: createInstantInvite,
304309
manageRoles: manageRoles,
@@ -351,7 +356,8 @@ public GuildPermissions(
351356
useExternalApps: useExternalApps,
352357
useExternalSounds: useExternalSounds,
353358
createEvents: createEvents,
354-
pinMessages: pinMessages)
359+
pinMessages: pinMessages,
360+
bypassSlowmode: bypassSlowmode)
355361
{ }
356362

357363
/// <summary> Creates a new <see cref="GuildPermissions"/> from this one, changing the provided non-null permissions. </summary>
@@ -407,14 +413,15 @@ public GuildPermissions Modify(
407413
bool? useExternalApps = null,
408414
bool? useExternalSounds = null,
409415
bool? createEvents = null,
410-
bool? pinMessages = null)
416+
bool? pinMessages = null,
417+
bool? bypassSlowmode = null)
411418
=> new GuildPermissions(RawValue, createInstantInvite, kickMembers, banMembers, administrator, manageChannels, manageGuild, addReactions,
412419
viewAuditLog, viewGuildInsights, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles,
413420
readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, moveMembers,
414421
useVoiceActivation, prioritySpeaker, stream, changeNickname, manageNicknames, manageRoles, manageWebhooks, manageEmojisAndStickers,
415422
useApplicationCommands, requestToSpeak, manageEvents, manageThreads, createPublicThreads, createPrivateThreads, useExternalStickers, sendMessagesInThreads,
416423
startEmbeddedActivities, moderateMembers, useSoundboard, viewMonetizationAnalytics, sendVoiceMessages, useClydeAI, createGuildExpressions, setVoiceChannelStatus,
417-
sendPolls, useExternalApps, useExternalSounds, createEvents, pinMessages);
424+
sendPolls, useExternalApps, useExternalSounds, createEvents, pinMessages, bypassSlowmode);
418425

419426
/// <summary>
420427
/// Returns a value that indicates if a specific <see cref="GuildPermission"/> is enabled

test/Discord.Net.Tests.Unit/ChannelPermissionsTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ void AssertFlag(Func<ChannelPermissions> cstr, ChannelPermission flag)
9898
AssertFlag(() => new ChannelPermissions(sendPolls: true), ChannelPermission.SendPolls);
9999
AssertFlag(() => new ChannelPermissions(useExternalApps: true), ChannelPermission.UseExternalApps);
100100
AssertFlag(() => new ChannelPermissions(pinMessages: true), ChannelPermission.PinMessages);
101+
AssertFlag(() => new ChannelPermissions(bypassSlowmode: true), ChannelPermission.BypassSlowmode);
101102
}
102103

103104
/// <summary>
@@ -169,6 +170,7 @@ void AssertUtil(ChannelPermission permission,
169170
AssertUtil(ChannelPermission.UseExternalApps, x => x.UserExternalApps, (p, enable) => p.Modify(useExternalApps: enable));
170171
AssertUtil(ChannelPermission.UseExternalSounds, x => x.UseExternalSounds, (p, enable) => p.Modify(useExternalSounds: enable));
171172
AssertUtil(ChannelPermission.PinMessages, x => x.PinMessages, (p, enable) => p.Modify(pinMessages: enable));
173+
AssertUtil(ChannelPermission.BypassSlowmode, x => x.BypassSlowmode, (p, enable) => p.Modify(bypassSlowmode: enable));
172174
}
173175

174176
/// <summary>

test/Discord.Net.Tests.Unit/GuildPermissionsTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ void AssertFlag(Func<GuildPermissions> cstr, GuildPermission flag)
110110
AssertFlag(() => new GuildPermissions(useExternalSounds: true), GuildPermission.UseExternalSounds);
111111
AssertFlag(() => new GuildPermissions(createEvents: true), GuildPermission.CreateEvents);
112112
AssertFlag(() => new GuildPermissions(pinMessages: true), GuildPermission.PinMessages);
113+
AssertFlag(() => new GuildPermissions(bypassSlowmode: true), GuildPermission.BypassSlowmode);
113114
}
114115

115116
/// <summary>
@@ -199,6 +200,7 @@ void AssertUtil(GuildPermission permission,
199200
AssertUtil(GuildPermission.UseExternalSounds, x => x.UserExternalSounds, (p, enable) => p.Modify(useExternalSounds: enable));
200201
AssertUtil(GuildPermission.CreateEvents, x => x.CreateEvents, (p, enable) => p.Modify(createEvents: enable));
201202
AssertUtil(GuildPermission.PinMessages, x => x.PinMessages, (p, enable) => p.Modify(pinMessages: enable));
203+
AssertUtil(GuildPermission.BypassSlowmode, x => x.BypassSlowmode, (p, enable) => p.Modify(bypassSlowmode: enable));
202204
}
203205
}
204206
}

0 commit comments

Comments
 (0)