[Feature] Voice messages support (#2665)
This commit is contained in:
@@ -188,6 +188,7 @@ namespace Discord
|
|||||||
CannotConvertBetweenPremiumEmojiAndNormalEmoji = 50145,
|
CannotConvertBetweenPremiumEmojiAndNormalEmoji = 50145,
|
||||||
UploadedFileNotFound = 50146,
|
UploadedFileNotFound = 50146,
|
||||||
FeatureInProcessOfRollingOut = 50155,
|
FeatureInProcessOfRollingOut = 50155,
|
||||||
|
CannotSendVoiceMessageInThisChannel = 50173,
|
||||||
MissingPermissionToSendThisSticker = 50600,
|
MissingPermissionToSendThisSticker = 50600,
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -70,5 +70,15 @@ namespace Discord
|
|||||||
/// Gets the media's <see href="https://en.wikipedia.org/wiki/Media_type">MIME type</see> if present; otherwise <see langword="null"/>.
|
/// Gets the media's <see href="https://en.wikipedia.org/wiki/Media_type">MIME type</see> if present; otherwise <see langword="null"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
string ContentType { get; }
|
string ContentType { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the duration of the audio file. <see langword="null"/> if the attachment is not a voice message.
|
||||||
|
/// </summary>
|
||||||
|
double? Duration { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the base64 encoded bytearray representing a sampled waveform. <see langword="null"/> if the attachment is not a voice message.
|
||||||
|
/// </summary>
|
||||||
|
public string Waveform { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,11 @@ namespace Discord
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Flag give to messages that will not trigger push and desktop notifications.
|
/// Flag give to messages that will not trigger push and desktop notifications.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
SuppressNotification = 1 << 12
|
SuppressNotification = 1 << 12,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This message is a voice message.
|
||||||
|
/// </summary>
|
||||||
|
VoiceMessage = 1 << 13,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -177,5 +177,10 @@ namespace Discord
|
|||||||
/// Allows members to edit and cancel events in this channel.
|
/// Allows members to edit and cancel events in this channel.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CreateEvents = 1L << 44,
|
CreateEvents = 1L << 44,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Allows sending voice messages.
|
||||||
|
/// </summary>
|
||||||
|
SendVoiceMessages = 1L << 46,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,22 +18,22 @@ namespace Discord
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for text channels.
|
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for text channels.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly ChannelPermissions Text = new(0b01_001111_110010_110011_111101_111111_111101_010001);
|
public static readonly ChannelPermissions Text = new(0b10001_001111_110010_110011_111101_111111_111101_010001);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for voice channels.
|
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for voice channels.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly ChannelPermissions Voice = new(0b01_001010_001010_110011_111101_111111_111101_010001); // (0b1_00000_0000100_1111110_0000000011100_010001 (<- voice only perms) |= Text)
|
public static readonly ChannelPermissions Voice = new(0b10001_001010_001010_110011_111101_111111_111101_010001);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for stage channels.
|
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for stage channels.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly ChannelPermissions Stage = new(0b0010_001110_010001_010101_111111_111001_010001);
|
public static readonly ChannelPermissions Stage = new(0b10000_000010_001110_010001_010101_111111_111001_010001);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for category channels.
|
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for category channels.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly ChannelPermissions Category = new(0b01100_1111110_1111111110001_010001);
|
public static readonly ChannelPermissions Category = new(0b011001_001111_111110_110011_111101_111111_111101_010001);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for direct message channels.
|
/// Gets a <see cref="ChannelPermissions"/> that grants all permissions for direct message channels.
|
||||||
@@ -140,6 +140,8 @@ namespace Discord
|
|||||||
public bool UseSoundboard => Permissions.GetValue(RawValue, ChannelPermission.UseSoundboard);
|
public bool UseSoundboard => Permissions.GetValue(RawValue, ChannelPermission.UseSoundboard);
|
||||||
/// <summary> If <see langword="true"/>, a user can edit and cancel events in this channel.</summary>
|
/// <summary> If <see langword="true"/>, a user can edit and cancel events in this channel.</summary>
|
||||||
public bool CreateEvents => Permissions.GetValue(RawValue, ChannelPermission.CreateEvents);
|
public bool CreateEvents => Permissions.GetValue(RawValue, ChannelPermission.CreateEvents);
|
||||||
|
/// <summary> If <see langword="true"/>, a user can send voice messages in this channel.</summary>
|
||||||
|
public bool SendVoiceMessages => Permissions.GetValue(RawValue, ChannelPermission.SendVoiceMessages);
|
||||||
|
|
||||||
/// <summary> Creates a new <see cref="ChannelPermissions"/> with the provided packed value.</summary>
|
/// <summary> Creates a new <see cref="ChannelPermissions"/> with the provided packed value.</summary>
|
||||||
public ChannelPermissions(ulong rawValue) { RawValue = rawValue; }
|
public ChannelPermissions(ulong rawValue) { RawValue = rawValue; }
|
||||||
@@ -176,7 +178,8 @@ namespace Discord
|
|||||||
bool? sendMessagesInThreads = null,
|
bool? sendMessagesInThreads = null,
|
||||||
bool? startEmbeddedActivities = null,
|
bool? startEmbeddedActivities = null,
|
||||||
bool? useSoundboard = null,
|
bool? useSoundboard = null,
|
||||||
bool? createEvents = null)
|
bool? createEvents = null,
|
||||||
|
bool? sendVoiceMessages = null)
|
||||||
{
|
{
|
||||||
ulong value = initialValue;
|
ulong value = initialValue;
|
||||||
|
|
||||||
@@ -212,6 +215,7 @@ namespace Discord
|
|||||||
Permissions.SetValue(ref value, startEmbeddedActivities, ChannelPermission.StartEmbeddedActivities);
|
Permissions.SetValue(ref value, startEmbeddedActivities, ChannelPermission.StartEmbeddedActivities);
|
||||||
Permissions.SetValue(ref value, useSoundboard, ChannelPermission.UseSoundboard);
|
Permissions.SetValue(ref value, useSoundboard, ChannelPermission.UseSoundboard);
|
||||||
Permissions.SetValue(ref value, createEvents, ChannelPermission.CreateEvents);
|
Permissions.SetValue(ref value, createEvents, ChannelPermission.CreateEvents);
|
||||||
|
Permissions.SetValue(ref value, sendVoiceMessages, ChannelPermission.SendVoiceMessages);
|
||||||
|
|
||||||
RawValue = value;
|
RawValue = value;
|
||||||
}
|
}
|
||||||
@@ -249,12 +253,13 @@ namespace Discord
|
|||||||
bool sendMessagesInThreads = false,
|
bool sendMessagesInThreads = false,
|
||||||
bool startEmbeddedActivities = false,
|
bool startEmbeddedActivities = false,
|
||||||
bool useSoundboard = false,
|
bool useSoundboard = false,
|
||||||
bool createEvents = false)
|
bool createEvents = false,
|
||||||
|
bool sendVoiceMessages = false)
|
||||||
: this(0, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages,
|
: this(0, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages,
|
||||||
embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect,
|
embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect,
|
||||||
speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, prioritySpeaker, stream, manageRoles, manageWebhooks,
|
speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, prioritySpeaker, stream, manageRoles, manageWebhooks,
|
||||||
useApplicationCommands, requestToSpeak, manageThreads, createPublicThreads, createPrivateThreads, useExternalStickers, sendMessagesInThreads,
|
useApplicationCommands, requestToSpeak, manageThreads, createPublicThreads, createPrivateThreads, useExternalStickers, sendMessagesInThreads,
|
||||||
startEmbeddedActivities, useSoundboard, createEvents)
|
startEmbeddedActivities, useSoundboard, createEvents, sendVoiceMessages)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
/// <summary> Creates a new <see cref="ChannelPermissions"/> from this one, changing the provided non-null permissions.</summary>
|
/// <summary> Creates a new <see cref="ChannelPermissions"/> from this one, changing the provided non-null permissions.</summary>
|
||||||
@@ -290,7 +295,8 @@ namespace Discord
|
|||||||
bool? sendMessagesInThreads = null,
|
bool? sendMessagesInThreads = null,
|
||||||
bool? startEmbeddedActivities = null,
|
bool? startEmbeddedActivities = null,
|
||||||
bool? useSoundboard = null,
|
bool? useSoundboard = null,
|
||||||
bool? createEvents = null)
|
bool? createEvents = null,
|
||||||
|
bool? sendVoiceMessages = null)
|
||||||
=> new ChannelPermissions(RawValue,
|
=> new ChannelPermissions(RawValue,
|
||||||
createInstantInvite,
|
createInstantInvite,
|
||||||
manageChannel,
|
manageChannel,
|
||||||
@@ -323,7 +329,8 @@ namespace Discord
|
|||||||
sendMessagesInThreads,
|
sendMessagesInThreads,
|
||||||
startEmbeddedActivities,
|
startEmbeddedActivities,
|
||||||
useSoundboard,
|
useSoundboard,
|
||||||
createEvents);
|
createEvents,
|
||||||
|
sendVoiceMessages);
|
||||||
|
|
||||||
public bool Has(ChannelPermission permission) => Permissions.GetValue(RawValue, permission);
|
public bool Has(ChannelPermission permission) => Permissions.GetValue(RawValue, permission);
|
||||||
|
|
||||||
|
|||||||
@@ -262,5 +262,10 @@ namespace Discord
|
|||||||
/// Allows for using the soundboard.
|
/// Allows for using the soundboard.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
UseSoundboard = 1L << 42,
|
UseSoundboard = 1L << 42,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Allows sending voice messages.
|
||||||
|
/// </summary>
|
||||||
|
SendVoiceMessages = 1L << 46,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,6 +108,8 @@ namespace Discord
|
|||||||
public bool UseSoundboard => Permissions.GetValue(RawValue, GuildPermission.UseSoundboard);
|
public bool UseSoundboard => Permissions.GetValue(RawValue, GuildPermission.UseSoundboard);
|
||||||
/// <summary> If <see langword="true"/>, a user can view monetization analytics in this guild.</summary>
|
/// <summary> If <see langword="true"/>, a user can view monetization analytics in this guild.</summary>
|
||||||
public bool ViewMonetizationAnalytics => Permissions.GetValue(RawValue, GuildPermission.ViewMonetizationAnalytics);
|
public bool ViewMonetizationAnalytics => Permissions.GetValue(RawValue, GuildPermission.ViewMonetizationAnalytics);
|
||||||
|
/// <summary> If <see langword="true"/>, a user can send voice messages in this channel.</summary>
|
||||||
|
public bool SendVoiceMessages => Permissions.GetValue(RawValue, GuildPermission.SendVoiceMessages);
|
||||||
|
|
||||||
/// <summary> Creates a new <see cref="GuildPermissions"/> with the provided packed value. </summary>
|
/// <summary> Creates a new <see cref="GuildPermissions"/> with the provided packed value. </summary>
|
||||||
public GuildPermissions(ulong rawValue) { RawValue = rawValue; }
|
public GuildPermissions(ulong rawValue) { RawValue = rawValue; }
|
||||||
@@ -158,7 +160,8 @@ namespace Discord
|
|||||||
bool? startEmbeddedActivities = null,
|
bool? startEmbeddedActivities = null,
|
||||||
bool? moderateMembers = null,
|
bool? moderateMembers = null,
|
||||||
bool? useSoundboard = null,
|
bool? useSoundboard = null,
|
||||||
bool? viewMonetizationAnalytics = null)
|
bool? viewMonetizationAnalytics = null,
|
||||||
|
bool? sendVoiceMessages = null)
|
||||||
{
|
{
|
||||||
ulong value = initialValue;
|
ulong value = initialValue;
|
||||||
|
|
||||||
@@ -205,6 +208,7 @@ namespace Discord
|
|||||||
Permissions.SetValue(ref value, moderateMembers, GuildPermission.ModerateMembers);
|
Permissions.SetValue(ref value, moderateMembers, GuildPermission.ModerateMembers);
|
||||||
Permissions.SetValue(ref value, useSoundboard, GuildPermission.UseSoundboard);
|
Permissions.SetValue(ref value, useSoundboard, GuildPermission.UseSoundboard);
|
||||||
Permissions.SetValue(ref value, viewMonetizationAnalytics, GuildPermission.ViewMonetizationAnalytics);
|
Permissions.SetValue(ref value, viewMonetizationAnalytics, GuildPermission.ViewMonetizationAnalytics);
|
||||||
|
Permissions.SetValue(ref value, sendVoiceMessages, GuildPermission.SendVoiceMessages);
|
||||||
|
|
||||||
RawValue = value;
|
RawValue = value;
|
||||||
}
|
}
|
||||||
@@ -253,7 +257,8 @@ namespace Discord
|
|||||||
bool startEmbeddedActivities = false,
|
bool startEmbeddedActivities = false,
|
||||||
bool moderateMembers = false,
|
bool moderateMembers = false,
|
||||||
bool useSoundboard = false,
|
bool useSoundboard = false,
|
||||||
bool viewMonetizationAnalytics = false)
|
bool viewMonetizationAnalytics = false,
|
||||||
|
bool sendVoiceMessages = false)
|
||||||
: this(0,
|
: this(0,
|
||||||
createInstantInvite: createInstantInvite,
|
createInstantInvite: createInstantInvite,
|
||||||
manageRoles: manageRoles,
|
manageRoles: manageRoles,
|
||||||
@@ -297,7 +302,8 @@ namespace Discord
|
|||||||
startEmbeddedActivities: startEmbeddedActivities,
|
startEmbeddedActivities: startEmbeddedActivities,
|
||||||
moderateMembers: moderateMembers,
|
moderateMembers: moderateMembers,
|
||||||
useSoundboard: useSoundboard,
|
useSoundboard: useSoundboard,
|
||||||
viewMonetizationAnalytics: viewMonetizationAnalytics)
|
viewMonetizationAnalytics: viewMonetizationAnalytics,
|
||||||
|
sendVoiceMessages: sendVoiceMessages)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
/// <summary> Creates a new <see cref="GuildPermissions"/> from this one, changing the provided non-null permissions. </summary>
|
/// <summary> Creates a new <see cref="GuildPermissions"/> from this one, changing the provided non-null permissions. </summary>
|
||||||
@@ -344,13 +350,14 @@ namespace Discord
|
|||||||
bool? startEmbeddedActivities = null,
|
bool? startEmbeddedActivities = null,
|
||||||
bool? moderateMembers = null,
|
bool? moderateMembers = null,
|
||||||
bool? useSoundboard = null,
|
bool? useSoundboard = null,
|
||||||
bool? viewMonetizationAnalytics = null)
|
bool? viewMonetizationAnalytics = null,
|
||||||
|
bool? sendVoiceMessages = null)
|
||||||
=> new GuildPermissions(RawValue, createInstantInvite, kickMembers, banMembers, administrator, manageChannels, manageGuild, addReactions,
|
=> new GuildPermissions(RawValue, createInstantInvite, kickMembers, banMembers, administrator, manageChannels, manageGuild, addReactions,
|
||||||
viewAuditLog, viewGuildInsights, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles,
|
viewAuditLog, viewGuildInsights, viewChannel, sendMessages, sendTTSMessages, manageMessages, embedLinks, attachFiles,
|
||||||
readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, moveMembers,
|
readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, moveMembers,
|
||||||
useVoiceActivation, prioritySpeaker, stream, changeNickname, manageNicknames, manageRoles, manageWebhooks, manageEmojisAndStickers,
|
useVoiceActivation, prioritySpeaker, stream, changeNickname, manageNicknames, manageRoles, manageWebhooks, manageEmojisAndStickers,
|
||||||
useApplicationCommands, requestToSpeak, manageEvents, manageThreads, createPublicThreads, createPrivateThreads, useExternalStickers, sendMessagesInThreads,
|
useApplicationCommands, requestToSpeak, manageEvents, manageThreads, createPublicThreads, createPrivateThreads, useExternalStickers, sendMessagesInThreads,
|
||||||
startEmbeddedActivities, moderateMembers, useSoundboard, viewMonetizationAnalytics);
|
startEmbeddedActivities, moderateMembers, useSoundboard, viewMonetizationAnalytics, sendVoiceMessages);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a value that indicates if a specific <see cref="GuildPermission"/> is enabled
|
/// Returns a value that indicates if a specific <see cref="GuildPermission"/> is enabled
|
||||||
|
|||||||
@@ -24,5 +24,9 @@ namespace Discord.API
|
|||||||
public Optional<int> Width { get; set; }
|
public Optional<int> Width { get; set; }
|
||||||
[JsonProperty("ephemeral")]
|
[JsonProperty("ephemeral")]
|
||||||
public Optional<bool> Ephemeral { get; set; }
|
public Optional<bool> Ephemeral { get; set; }
|
||||||
|
[JsonProperty("duration_secs")]
|
||||||
|
public Optional<double> DurationSeconds { get; set; }
|
||||||
|
[JsonProperty("waveform")]
|
||||||
|
public Optional<string> Waveform { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,9 +27,13 @@ namespace Discord
|
|||||||
public string Description { get; }
|
public string Description { get; }
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public string ContentType { get; }
|
public string ContentType { get; }
|
||||||
|
/// <inheritdoc />
|
||||||
|
public string Waveform { get; }
|
||||||
|
/// <inheritdoc />
|
||||||
|
public double? Duration { get; }
|
||||||
|
|
||||||
internal Attachment(ulong id, string filename, string url, string proxyUrl, int size, int? height, int? width,
|
internal Attachment(ulong id, string filename, string url, string proxyUrl, int size, int? height, int? width,
|
||||||
bool? ephemeral, string description, string contentType)
|
bool? ephemeral, string description, string contentType, double? duration, string waveform)
|
||||||
{
|
{
|
||||||
Id = id;
|
Id = id;
|
||||||
Filename = filename;
|
Filename = filename;
|
||||||
@@ -41,6 +45,8 @@ namespace Discord
|
|||||||
Ephemeral = ephemeral.GetValueOrDefault(false);
|
Ephemeral = ephemeral.GetValueOrDefault(false);
|
||||||
Description = description;
|
Description = description;
|
||||||
ContentType = contentType;
|
ContentType = contentType;
|
||||||
|
Duration = duration;
|
||||||
|
Waveform = waveform;
|
||||||
}
|
}
|
||||||
internal static Attachment Create(Model model)
|
internal static Attachment Create(Model model)
|
||||||
{
|
{
|
||||||
@@ -48,7 +54,9 @@ namespace Discord
|
|||||||
model.Height.IsSpecified ? model.Height.Value : (int?)null,
|
model.Height.IsSpecified ? model.Height.Value : (int?)null,
|
||||||
model.Width.IsSpecified ? model.Width.Value : (int?)null,
|
model.Width.IsSpecified ? model.Width.Value : (int?)null,
|
||||||
model.Ephemeral.ToNullable(), model.Description.GetValueOrDefault(),
|
model.Ephemeral.ToNullable(), model.Description.GetValueOrDefault(),
|
||||||
model.ContentType.GetValueOrDefault());
|
model.ContentType.GetValueOrDefault(),
|
||||||
|
model.DurationSeconds.IsSpecified ? model.DurationSeconds.Value : null,
|
||||||
|
model.Waveform.GetValueOrDefault(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ namespace Discord
|
|||||||
AssertFlag(() => new ChannelPermissions(startEmbeddedActivities: true), ChannelPermission.StartEmbeddedActivities);
|
AssertFlag(() => new ChannelPermissions(startEmbeddedActivities: true), ChannelPermission.StartEmbeddedActivities);
|
||||||
AssertFlag(() => new ChannelPermissions(useSoundboard: true), ChannelPermission.UseSoundboard);
|
AssertFlag(() => new ChannelPermissions(useSoundboard: true), ChannelPermission.UseSoundboard);
|
||||||
AssertFlag(() => new ChannelPermissions(createEvents: true), ChannelPermission.CreateEvents);
|
AssertFlag(() => new ChannelPermissions(createEvents: true), ChannelPermission.CreateEvents);
|
||||||
|
AssertFlag(() => new ChannelPermissions(sendVoiceMessages: true), ChannelPermission.SendVoiceMessages);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -156,6 +157,7 @@ namespace Discord
|
|||||||
AssertUtil(ChannelPermission.ManageWebhooks, x => x.ManageWebhooks, (p, enable) => p.Modify(manageWebhooks: enable));
|
AssertUtil(ChannelPermission.ManageWebhooks, x => x.ManageWebhooks, (p, enable) => p.Modify(manageWebhooks: enable));
|
||||||
AssertUtil(ChannelPermission.PrioritySpeaker, x => x.PrioritySpeaker, (p, enable) => p.Modify(prioritySpeaker: enable));
|
AssertUtil(ChannelPermission.PrioritySpeaker, x => x.PrioritySpeaker, (p, enable) => p.Modify(prioritySpeaker: enable));
|
||||||
AssertUtil(ChannelPermission.Stream, x => x.Stream, (p, enable) => p.Modify(stream: enable));
|
AssertUtil(ChannelPermission.Stream, x => x.Stream, (p, enable) => p.Modify(stream: enable));
|
||||||
|
AssertUtil(ChannelPermission.SendVoiceMessages, x => x.SendVoiceMessages, (p, enable) => p.Modify(sendVoiceMessages: enable));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ namespace Discord
|
|||||||
AssertFlag(() => new GuildPermissions(moderateMembers: true), GuildPermission.ModerateMembers);
|
AssertFlag(() => new GuildPermissions(moderateMembers: true), GuildPermission.ModerateMembers);
|
||||||
AssertFlag(() => new GuildPermissions(viewMonetizationAnalytics: true), GuildPermission.ViewMonetizationAnalytics);
|
AssertFlag(() => new GuildPermissions(viewMonetizationAnalytics: true), GuildPermission.ViewMonetizationAnalytics);
|
||||||
AssertFlag(() => new GuildPermissions(useSoundboard: true), GuildPermission.UseSoundboard);
|
AssertFlag(() => new GuildPermissions(useSoundboard: true), GuildPermission.UseSoundboard);
|
||||||
|
AssertFlag(() => new GuildPermissions(sendVoiceMessages: true), GuildPermission.SendVoiceMessages);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -180,6 +181,9 @@ namespace Discord
|
|||||||
AssertUtil(GuildPermission.CreatePrivateThreads, x => x.CreatePrivateThreads, (p, enable) => p.Modify(createPrivateThreads: enable));
|
AssertUtil(GuildPermission.CreatePrivateThreads, x => x.CreatePrivateThreads, (p, enable) => p.Modify(createPrivateThreads: enable));
|
||||||
AssertUtil(GuildPermission.UseExternalStickers, x => x.UseExternalStickers, (p, enable) => p.Modify(useExternalStickers: enable));
|
AssertUtil(GuildPermission.UseExternalStickers, x => x.UseExternalStickers, (p, enable) => p.Modify(useExternalStickers: enable));
|
||||||
AssertUtil(GuildPermission.ModerateMembers, x => x.ModerateMembers, (p, enable) => p.Modify(moderateMembers: enable));
|
AssertUtil(GuildPermission.ModerateMembers, x => x.ModerateMembers, (p, enable) => p.Modify(moderateMembers: enable));
|
||||||
|
AssertUtil(GuildPermission.ViewMonetizationAnalytics, x => x.ViewMonetizationAnalytics, (p, enable) => p.Modify(viewMonetizationAnalytics: enable));
|
||||||
|
AssertUtil(GuildPermission.UseSoundboard, x => x.UseSoundboard, (p, enable) => p.Modify(useSoundboard: enable));
|
||||||
|
AssertUtil(GuildPermission.SendVoiceMessages, x => x.SendVoiceMessages, (p, enable) => p.Modify(sendVoiceMessages: enable));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user