@@ -17,6 +17,7 @@ namespace Discord | |||
/// .</para> | |||
/// </returns> | |||
public const int APIVersion = 6; | |||
public const int VoiceAPIVersion = 3; | |||
/// <summary> | |||
/// Gets the Discord.Net version, including the build number. | |||
/// </summary> | |||
@@ -138,7 +138,7 @@ namespace Discord | |||
PermValue createInstantInvite = PermValue.Inherit, | |||
PermValue manageChannel = PermValue.Inherit, | |||
PermValue addReactions = PermValue.Inherit, | |||
PermValue readMessages = PermValue.Inherit, | |||
PermValue viewChannel = PermValue.Inherit, | |||
PermValue sendMessages = PermValue.Inherit, | |||
PermValue sendTTSMessages = PermValue.Inherit, | |||
PermValue manageMessages = PermValue.Inherit, | |||
@@ -155,7 +155,7 @@ namespace Discord | |||
PermValue useVoiceActivation = PermValue.Inherit, | |||
PermValue manageRoles = PermValue.Inherit, | |||
PermValue manageWebhooks = PermValue.Inherit) | |||
: this(0, 0, createInstantInvite, manageChannel, addReactions, readMessages, sendMessages, sendTTSMessages, manageMessages, | |||
: this(0, 0, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, | |||
embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, | |||
moveMembers, useVoiceActivation, manageRoles, manageWebhooks) { } | |||
@@ -167,7 +167,7 @@ namespace Discord | |||
PermValue? createInstantInvite = null, | |||
PermValue? manageChannel = null, | |||
PermValue? addReactions = null, | |||
PermValue? readMessages = null, | |||
PermValue? viewChannel = null, | |||
PermValue? sendMessages = null, | |||
PermValue? sendTTSMessages = null, | |||
PermValue? manageMessages = null, | |||
@@ -184,7 +184,7 @@ namespace Discord | |||
PermValue? useVoiceActivation = null, | |||
PermValue? manageRoles = null, | |||
PermValue? manageWebhooks = null) | |||
=> new OverwritePermissions(AllowValue, DenyValue, createInstantInvite, manageChannel, addReactions, readMessages, sendMessages, sendTTSMessages, manageMessages, | |||
=> new OverwritePermissions(AllowValue, DenyValue, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, | |||
embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, | |||
moveMembers, useVoiceActivation, manageRoles, manageWebhooks); | |||
@@ -358,10 +358,5 @@ namespace Discord.Rest | |||
author = RestUser.Create(client, guild, model, webhookId); | |||
return author; | |||
} | |||
public static bool IsNsfw(IChannel channel) | |||
=> IsNsfw(channel.Name); | |||
public static bool IsNsfw(string channelName) => | |||
channelName == "nsfw" || channelName.StartsWith("nsfw-"); | |||
} | |||
} |
@@ -23,7 +23,7 @@ namespace Discord.Rest | |||
private bool _nsfw; | |||
/// <inheritdoc /> | |||
public bool IsNsfw => _nsfw || ChannelHelper.IsNsfw(this); | |||
public bool IsNsfw => _nsfw; | |||
internal RestTextChannel(BaseDiscordClient discord, IGuild guild, ulong id) | |||
: base(discord, guild, id) | |||
@@ -135,7 +135,7 @@ namespace Discord.Rest | |||
=> ChannelHelper.GetWebhookAsync(this, Discord, id, options); | |||
public Task<IReadOnlyCollection<RestWebhook>> GetWebhooksAsync(RequestOptions options = null) | |||
=> ChannelHelper.GetWebhooksAsync(this, Discord, options); | |||
public Task<ICategoryChannel> GetCategoryAsync(RequestOptions options = null) | |||
=> ChannelHelper.GetCategoryAsync(this, Discord, options); | |||
@@ -169,7 +169,7 @@ namespace Discord.Rest | |||
else | |||
return AsyncEnumerable.Empty<IReadOnlyCollection<IMessage>>(); | |||
} | |||
/// <inheritdoc /> | |||
IAsyncEnumerable<IReadOnlyCollection<IMessage>> IMessageChannel.GetMessagesAsync(ulong fromMessageId, Direction dir, int limit, CacheMode mode, RequestOptions options) | |||
{ | |||
@@ -0,0 +1,10 @@ | |||
using Newtonsoft.Json; | |||
namespace Discord.API.Voice | |||
{ | |||
internal class HelloEvent | |||
{ | |||
[JsonProperty("heartbeat_interval")] | |||
public int HeartbeatInterval { get; set; } | |||
} | |||
} |
@@ -1,5 +1,6 @@ | |||
#pragma warning disable CS1591 | |||
#pragma warning disable CS1591 | |||
using Newtonsoft.Json; | |||
using System; | |||
namespace Discord.API.Voice | |||
{ | |||
@@ -14,6 +15,7 @@ namespace Discord.API.Voice | |||
[JsonProperty("modes")] | |||
public string[] Modes { get; set; } | |||
[JsonProperty("heartbeat_interval")] | |||
[Obsolete("This field is errorneous and should not be used", true)] | |||
public int HeartbeatInterval { get; set; } | |||
} | |||
} |
@@ -1,4 +1,4 @@ | |||
#pragma warning disable CS1591 | |||
#pragma warning disable CS1591 | |||
namespace Discord.API.Voice | |||
{ | |||
internal enum VoiceOpCode : byte | |||
@@ -11,11 +11,19 @@ namespace Discord.API.Voice | |||
Ready = 2, | |||
/// <summary> C→S - Used to keep the connection alive and measure latency. </summary> | |||
Heartbeat = 3, | |||
/// <summary> C←S - Used to reply to a client's heartbeat. </summary> | |||
HeartbeatAck = 3, | |||
/// <summary> C←S - Used to provide an encryption key to the client. </summary> | |||
SessionDescription = 4, | |||
/// <summary> C↔S - Used to inform that a certain user is speaking. </summary> | |||
Speaking = 5 | |||
Speaking = 5, | |||
/// <summary> C←S - Used to reply to a client's heartbeat. </summary> | |||
HeartbeatAck = 6, | |||
/// <summary> C→S - Used to resume a connection. </summary> | |||
Resume = 7, | |||
/// <summary> C←S - Used to inform the client the heartbeat interval. </summary> | |||
Hello = 8, | |||
/// <summary> C←S - Used to acknowledge a resumed connection. </summary> | |||
Resumed = 9, | |||
/// <summary> C←S - Used to notify that a client has disconnected. </summary> | |||
ClientDisconnect = 13, | |||
} | |||
} |
@@ -107,7 +107,7 @@ namespace Discord.Audio | |||
private async Task OnConnectingAsync() | |||
{ | |||
await _audioLogger.DebugAsync("Connecting ApiClient").ConfigureAwait(false); | |||
await ApiClient.ConnectAsync("wss://" + _url).ConfigureAwait(false); | |||
await ApiClient.ConnectAsync("wss://" + _url + "?v=" + DiscordConfig.VoiceAPIVersion).ConfigureAwait(false); | |||
await _audioLogger.DebugAsync("Listening on port " + ApiClient.UdpPort).ConfigureAwait(false); | |||
await _audioLogger.DebugAsync("Sending Identity").ConfigureAwait(false); | |||
await ApiClient.SendIdentityAsync(_userId, _sessionId, _token).ConfigureAwait(false); | |||
@@ -216,6 +216,14 @@ namespace Discord.Audio | |||
{ | |||
switch (opCode) | |||
{ | |||
case VoiceOpCode.Hello: | |||
{ | |||
await _audioLogger.DebugAsync("Received Hello").ConfigureAwait(false); | |||
var data = (payload as JToken).ToObject<HelloEvent>(_serializer); | |||
_heartbeatTask = RunHeartbeatAsync(data.HeartbeatInterval, _connection.CancelToken); | |||
} | |||
break; | |||
case VoiceOpCode.Ready: | |||
{ | |||
await _audioLogger.DebugAsync("Received Ready").ConfigureAwait(false); | |||
@@ -225,8 +233,6 @@ namespace Discord.Audio | |||
if (!data.Modes.Contains(DiscordVoiceAPIClient.Mode)) | |||
throw new InvalidOperationException($"Discord does not support {DiscordVoiceAPIClient.Mode}"); | |||
_heartbeatTask = RunHeartbeatAsync(data.HeartbeatInterval, _connection.CancelToken); | |||
ApiClient.SetUdpEndpoint(data.Ip, data.Port); | |||
await ApiClient.SendDiscoveryAsync(_ssrc).ConfigureAwait(false); | |||
@@ -1442,7 +1442,9 @@ namespace Discord.WebSocket | |||
after = SocketVoiceState.Create(null, data); | |||
} | |||
user = guild.GetUser(data.UserId) ?? guild.AddOrUpdateUser(data.Member.Value); //per g250k, this is always sent | |||
// per g250k, this should always be sent, but apparently not always | |||
user = guild.GetUser(data.UserId) | |||
?? (data.Member.IsSpecified ? guild.AddOrUpdateUser(data.Member.Value) : null); | |||
if (user == null) | |||
{ | |||
await UnknownGuildUserAsync(type, data.UserId, guild.Id).ConfigureAwait(false); | |||
@@ -26,7 +26,7 @@ namespace Discord.WebSocket | |||
private bool _nsfw; | |||
/// <inheritdoc /> | |||
public bool IsNsfw => _nsfw || ChannelHelper.IsNsfw(this); | |||
public bool IsNsfw => _nsfw; | |||
/// <inheritdoc /> | |||
public string Mention => MentionUtils.MentionChannel(Id); | |||
@@ -68,6 +68,7 @@ namespace Discord | |||
ulong voiceChannel = (ulong)( | |||
ChannelPermission.CreateInstantInvite | |||
| ChannelPermission.ManageChannels | |||
| ChannelPermission.ViewChannel | |||
| ChannelPermission.Connect | |||
| ChannelPermission.Speak | |||
| ChannelPermission.MuteMembers | |||
@@ -82,7 +83,7 @@ namespace Discord | |||
ulong dmChannel = (ulong)( | |||
ChannelPermission.ViewChannel | |||
| ChannelPermission.SendMessages | |||
| ChannelPermission.EmbedLinks | |||
| ChannelPermission.EmbedLinks | |||
| ChannelPermission.AttachFiles | |||
| ChannelPermission.ReadMessageHistory | |||
| ChannelPermission.UseExternalEmojis | |||
@@ -118,7 +119,7 @@ namespace Discord | |||
// ensure that when modified it works | |||
perm = perm.Modify(createInstantInvite: true); | |||
Assert.True(perm.CreateInstantInvite); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.CreateInstantInvite); | |||
Assert.Equal((ulong)ChannelPermission.CreateInstantInvite, perm.RawValue); | |||
// set false again, move on to next permission | |||
perm = perm.Modify(createInstantInvite: false); | |||
@@ -130,7 +131,7 @@ namespace Discord | |||
perm = perm.Modify(manageChannel: true); | |||
Assert.True(perm.ManageChannel); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageChannels); | |||
Assert.Equal((ulong)ChannelPermission.ManageChannels, perm.RawValue); | |||
perm = perm.Modify(manageChannel: false); | |||
Assert.False(perm.ManageChannel); | |||
@@ -141,7 +142,7 @@ namespace Discord | |||
perm = perm.Modify(addReactions: true); | |||
Assert.True(perm.AddReactions); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.AddReactions); | |||
Assert.Equal((ulong)ChannelPermission.AddReactions, perm.RawValue); | |||
perm = perm.Modify(addReactions: false); | |||
Assert.False(perm.AddReactions); | |||
@@ -152,7 +153,7 @@ namespace Discord | |||
perm = perm.Modify(viewChannel: true); | |||
Assert.True(perm.ViewChannel); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ViewChannel); | |||
Assert.Equal((ulong)ChannelPermission.ViewChannel, perm.RawValue); | |||
perm = perm.Modify(viewChannel: false); | |||
Assert.False(perm.ViewChannel); | |||
@@ -163,7 +164,7 @@ namespace Discord | |||
perm = perm.Modify(sendMessages: true); | |||
Assert.True(perm.SendMessages); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.SendMessages); | |||
Assert.Equal((ulong)ChannelPermission.SendMessages, perm.RawValue); | |||
perm = perm.Modify(sendMessages: false); | |||
Assert.False(perm.SendMessages); | |||
@@ -174,7 +175,7 @@ namespace Discord | |||
perm = perm.Modify(sendTTSMessages: true); | |||
Assert.True(perm.SendTTSMessages); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.SendTTSMessages); | |||
Assert.Equal((ulong)ChannelPermission.SendTTSMessages, perm.RawValue); | |||
perm = perm.Modify(sendTTSMessages: false); | |||
Assert.False(perm.SendTTSMessages); | |||
@@ -185,7 +186,7 @@ namespace Discord | |||
perm = perm.Modify(manageMessages: true); | |||
Assert.True(perm.ManageMessages); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageMessages); | |||
Assert.Equal((ulong)ChannelPermission.ManageMessages, perm.RawValue); | |||
perm = perm.Modify(manageMessages: false); | |||
Assert.False(perm.ManageMessages); | |||
@@ -196,7 +197,7 @@ namespace Discord | |||
perm = perm.Modify(embedLinks: true); | |||
Assert.True(perm.EmbedLinks); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.EmbedLinks); | |||
Assert.Equal((ulong)ChannelPermission.EmbedLinks, perm.RawValue); | |||
perm = perm.Modify(embedLinks: false); | |||
Assert.False(perm.EmbedLinks); | |||
@@ -207,7 +208,7 @@ namespace Discord | |||
perm = perm.Modify(attachFiles: true); | |||
Assert.True(perm.AttachFiles); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.AttachFiles); | |||
Assert.Equal((ulong)ChannelPermission.AttachFiles, perm.RawValue); | |||
perm = perm.Modify(attachFiles: false); | |||
Assert.False(perm.AttachFiles); | |||
@@ -218,7 +219,7 @@ namespace Discord | |||
perm = perm.Modify(readMessageHistory: true); | |||
Assert.True(perm.ReadMessageHistory); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ReadMessageHistory); | |||
Assert.Equal((ulong)ChannelPermission.ReadMessageHistory, perm.RawValue); | |||
perm = perm.Modify(readMessageHistory: false); | |||
Assert.False(perm.ReadMessageHistory); | |||
@@ -229,7 +230,7 @@ namespace Discord | |||
perm = perm.Modify(mentionEveryone: true); | |||
Assert.True(perm.MentionEveryone); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MentionEveryone); | |||
Assert.Equal((ulong)ChannelPermission.MentionEveryone, perm.RawValue); | |||
perm = perm.Modify(mentionEveryone: false); | |||
Assert.False(perm.MentionEveryone); | |||
@@ -240,7 +241,7 @@ namespace Discord | |||
perm = perm.Modify(useExternalEmojis: true); | |||
Assert.True(perm.UseExternalEmojis); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.UseExternalEmojis); | |||
Assert.Equal((ulong)ChannelPermission.UseExternalEmojis, perm.RawValue); | |||
perm = perm.Modify(useExternalEmojis: false); | |||
Assert.False(perm.UseExternalEmojis); | |||
@@ -251,18 +252,18 @@ namespace Discord | |||
perm = perm.Modify(connect: true); | |||
Assert.True(perm.Connect); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.Connect); | |||
Assert.Equal((ulong)ChannelPermission.Connect, perm.RawValue); | |||
perm = perm.Modify(connect: false); | |||
Assert.False(perm.Connect); | |||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
// individual permission test | |||
Assert.False(perm.Speak); | |||
perm = perm.Modify(speak: true); | |||
Assert.True(perm.Speak); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.Speak); | |||
Assert.Equal((ulong)ChannelPermission.Speak, perm.RawValue); | |||
perm = perm.Modify(speak: false); | |||
Assert.False(perm.Speak); | |||
@@ -273,7 +274,7 @@ namespace Discord | |||
perm = perm.Modify(muteMembers: true); | |||
Assert.True(perm.MuteMembers); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MuteMembers); | |||
Assert.Equal((ulong)ChannelPermission.MuteMembers, perm.RawValue); | |||
perm = perm.Modify(muteMembers: false); | |||
Assert.False(perm.MuteMembers); | |||
@@ -284,7 +285,7 @@ namespace Discord | |||
perm = perm.Modify(deafenMembers: true); | |||
Assert.True(perm.DeafenMembers); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.DeafenMembers); | |||
Assert.Equal((ulong)ChannelPermission.DeafenMembers, perm.RawValue); | |||
perm = perm.Modify(deafenMembers: false); | |||
Assert.False(perm.DeafenMembers); | |||
@@ -295,7 +296,7 @@ namespace Discord | |||
perm = perm.Modify(moveMembers: true); | |||
Assert.True(perm.MoveMembers); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MoveMembers); | |||
Assert.Equal((ulong)ChannelPermission.MoveMembers, perm.RawValue); | |||
perm = perm.Modify(moveMembers: false); | |||
Assert.False(perm.MoveMembers); | |||
@@ -306,7 +307,7 @@ namespace Discord | |||
perm = perm.Modify(useVoiceActivation: true); | |||
Assert.True(perm.UseVAD); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.UseVAD); | |||
Assert.Equal((ulong)ChannelPermission.UseVAD, perm.RawValue); | |||
perm = perm.Modify(useVoiceActivation: false); | |||
Assert.False(perm.UseVAD); | |||
@@ -317,7 +318,7 @@ namespace Discord | |||
perm = perm.Modify(manageRoles: true); | |||
Assert.True(perm.ManageRoles); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageRoles); | |||
Assert.Equal((ulong)ChannelPermission.ManageRoles, perm.RawValue); | |||
perm = perm.Modify(manageRoles: false); | |||
Assert.False(perm.ManageRoles); | |||
@@ -328,7 +329,7 @@ namespace Discord | |||
perm = perm.Modify(manageWebhooks: true); | |||
Assert.True(perm.ManageWebhooks); | |||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageWebhooks); | |||
Assert.Equal((ulong)ChannelPermission.ManageWebhooks, perm.RawValue); | |||
perm = perm.Modify(manageWebhooks: false); | |||
Assert.False(perm.ManageWebhooks); | |||
@@ -169,7 +169,7 @@ namespace Discord | |||
private async Task CheckChannelCategories(RestCategoryChannel[] categories, RestGuildChannel[] allChannels) | |||
{ | |||
// 2 categories | |||
Assert.Equal(categories.Length, 2); | |||
Assert.Equal(2, categories.Length); | |||
var cat1 = categories.Where(x => x.Name == "cat1").FirstOrDefault(); | |||
var cat2 = categories.Where(x => x.Name == "cat2").FirstOrDefault(); | |||
@@ -202,7 +202,7 @@ namespace Discord | |||
Assert.NotNull(voice1); | |||
Assert.NotNull(voice3); | |||
Assert.Equal(voice1.CategoryId, cat2.Id); | |||
var voice1Cat = await voice1.GetCategoryAsync(); | |||
Assert.Equal(voice1Cat.Id, cat2.Id); | |||
@@ -1,4 +1,5 @@ | |||
using System; | |||
using System.Linq; | |||
using System.Threading.Tasks; | |||
using Xunit; | |||
@@ -38,9 +39,13 @@ namespace Discord | |||
copy = GuildPermissions.Webhook.Modify(); | |||
Assert.Equal(GuildPermissions.Webhook.RawValue, copy.RawValue); | |||
// Get all distinct values (ReadMessages = ViewChannel) | |||
var enumValues = (Enum.GetValues(typeof(GuildPermission)) as GuildPermission[]) | |||
.Distinct() | |||
.ToArray(); | |||
// test GuildPermissions.All | |||
ulong sumOfAllGuildPermissions = 0; | |||
foreach(var v in Enum.GetValues(typeof(GuildPermission))) | |||
foreach(var v in enumValues) | |||
{ | |||
sumOfAllGuildPermissions |= (ulong)v; | |||
} | |||
@@ -49,9 +54,9 @@ namespace Discord | |||
Assert.Equal(sumOfAllGuildPermissions, GuildPermissions.All.RawValue); | |||
Assert.Equal((ulong)0, GuildPermissions.None.RawValue); | |||
// assert that GuildPermissions.All contains the same number of permissions as the | |||
// assert that GuildPermissions.All contains the same number of permissions as the | |||
// GuildPermissions enum | |||
Assert.Equal(Enum.GetValues(typeof(GuildPermission)).Length, GuildPermissions.All.ToList().Count); | |||
Assert.Equal(enumValues.Length, GuildPermissions.All.ToList().Count); | |||
// assert that webhook has the same raw value | |||
ulong webHookPermissions = (ulong)( | |||
@@ -76,7 +81,7 @@ namespace Discord | |||
// ensure that when we modify it the parameter works | |||
perm = perm.Modify(createInstantInvite: true); | |||
Assert.True(perm.CreateInstantInvite); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.CreateInstantInvite); | |||
Assert.Equal((ulong)GuildPermission.CreateInstantInvite, perm.RawValue); | |||
// set it false again, then move on to the next permission | |||
perm = perm.Modify(createInstantInvite: false); | |||
@@ -86,7 +91,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(kickMembers: true); | |||
Assert.True(perm.KickMembers); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.KickMembers); | |||
Assert.Equal((ulong)GuildPermission.KickMembers, perm.RawValue); | |||
perm = perm.Modify(kickMembers: false); | |||
Assert.False(perm.KickMembers); | |||
@@ -95,7 +100,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(banMembers: true); | |||
Assert.True(perm.BanMembers); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.BanMembers); | |||
Assert.Equal((ulong)GuildPermission.BanMembers, perm.RawValue); | |||
perm = perm.Modify(banMembers: false); | |||
Assert.False(perm.BanMembers); | |||
@@ -104,7 +109,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(administrator: true); | |||
Assert.True(perm.Administrator); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Administrator); | |||
Assert.Equal((ulong)GuildPermission.Administrator, perm.RawValue); | |||
perm = perm.Modify(administrator: false); | |||
Assert.False(perm.Administrator); | |||
@@ -113,7 +118,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(manageChannels: true); | |||
Assert.True(perm.ManageChannels); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageChannels); | |||
Assert.Equal((ulong)GuildPermission.ManageChannels, perm.RawValue); | |||
perm = perm.Modify(manageChannels: false); | |||
Assert.False(perm.ManageChannels); | |||
@@ -122,7 +127,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(manageGuild: true); | |||
Assert.True(perm.ManageGuild); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageGuild); | |||
Assert.Equal((ulong)GuildPermission.ManageGuild, perm.RawValue); | |||
perm = perm.Modify(manageGuild: false); | |||
Assert.False(perm.ManageGuild); | |||
@@ -132,7 +137,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(addReactions: true); | |||
Assert.True(perm.AddReactions); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.AddReactions); | |||
Assert.Equal((ulong)GuildPermission.AddReactions, perm.RawValue); | |||
perm = perm.Modify(addReactions: false); | |||
Assert.False(perm.AddReactions); | |||
@@ -142,7 +147,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(viewAuditLog: true); | |||
Assert.True(perm.ViewAuditLog); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ViewAuditLog); | |||
Assert.Equal((ulong)GuildPermission.ViewAuditLog, perm.RawValue); | |||
perm = perm.Modify(viewAuditLog: false); | |||
Assert.False(perm.ViewAuditLog); | |||
@@ -152,7 +157,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(viewChannel: true); | |||
Assert.True(perm.ViewChannel); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ViewChannel); | |||
Assert.Equal((ulong)GuildPermission.ViewChannel, perm.RawValue); | |||
perm = perm.Modify(viewChannel: false); | |||
Assert.False(perm.ViewChannel); | |||
@@ -162,7 +167,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(sendMessages: true); | |||
Assert.True(perm.SendMessages); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.SendMessages); | |||
Assert.Equal((ulong)GuildPermission.SendMessages, perm.RawValue); | |||
perm = perm.Modify(sendMessages: false); | |||
Assert.False(perm.SendMessages); | |||
@@ -171,7 +176,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(embedLinks: true); | |||
Assert.True(perm.EmbedLinks); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.EmbedLinks); | |||
Assert.Equal((ulong)GuildPermission.EmbedLinks, perm.RawValue); | |||
perm = perm.Modify(embedLinks: false); | |||
Assert.False(perm.EmbedLinks); | |||
@@ -180,7 +185,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(attachFiles: true); | |||
Assert.True(perm.AttachFiles); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.AttachFiles); | |||
Assert.Equal((ulong)GuildPermission.AttachFiles, perm.RawValue); | |||
perm = perm.Modify(attachFiles: false); | |||
Assert.False(perm.AttachFiles); | |||
@@ -189,7 +194,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(readMessageHistory: true); | |||
Assert.True(perm.ReadMessageHistory); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ReadMessageHistory); | |||
Assert.Equal((ulong)GuildPermission.ReadMessageHistory, perm.RawValue); | |||
perm = perm.Modify(readMessageHistory: false); | |||
Assert.False(perm.ReadMessageHistory); | |||
@@ -198,7 +203,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(mentionEveryone: true); | |||
Assert.True(perm.MentionEveryone); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MentionEveryone); | |||
Assert.Equal((ulong)GuildPermission.MentionEveryone, perm.RawValue); | |||
perm = perm.Modify(mentionEveryone: false); | |||
Assert.False(perm.MentionEveryone); | |||
@@ -207,7 +212,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(useExternalEmojis: true); | |||
Assert.True(perm.UseExternalEmojis); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseExternalEmojis); | |||
Assert.Equal((ulong)GuildPermission.UseExternalEmojis, perm.RawValue); | |||
perm = perm.Modify(useExternalEmojis: false); | |||
Assert.False(perm.UseExternalEmojis); | |||
@@ -216,7 +221,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(connect: true); | |||
Assert.True(perm.Connect); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Connect); | |||
Assert.Equal((ulong)GuildPermission.Connect, perm.RawValue); | |||
perm = perm.Modify(connect: false); | |||
Assert.False(perm.Connect); | |||
@@ -225,7 +230,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(speak: true); | |||
Assert.True(perm.Speak); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Speak); | |||
Assert.Equal((ulong)GuildPermission.Speak, perm.RawValue); | |||
perm = perm.Modify(speak: false); | |||
Assert.False(perm.Speak); | |||
@@ -234,7 +239,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(muteMembers: true); | |||
Assert.True(perm.MuteMembers); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MuteMembers); | |||
Assert.Equal((ulong)GuildPermission.MuteMembers, perm.RawValue); | |||
perm = perm.Modify(muteMembers: false); | |||
Assert.False(perm.MuteMembers); | |||
@@ -243,7 +248,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(deafenMembers: true); | |||
Assert.True(perm.DeafenMembers); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.DeafenMembers); | |||
Assert.Equal((ulong)GuildPermission.DeafenMembers, perm.RawValue); | |||
perm = perm.Modify(deafenMembers: false); | |||
Assert.False(perm.DeafenMembers); | |||
@@ -252,7 +257,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(moveMembers: true); | |||
Assert.True(perm.MoveMembers); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MoveMembers); | |||
Assert.Equal((ulong)GuildPermission.MoveMembers, perm.RawValue); | |||
perm = perm.Modify(moveMembers: false); | |||
Assert.False(perm.MoveMembers); | |||
@@ -261,7 +266,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(useVoiceActivation: true); | |||
Assert.True(perm.UseVAD); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseVAD); | |||
Assert.Equal((ulong)GuildPermission.UseVAD, perm.RawValue); | |||
perm = perm.Modify(useVoiceActivation: false); | |||
Assert.False(perm.UseVAD); | |||
@@ -270,7 +275,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(changeNickname: true); | |||
Assert.True(perm.ChangeNickname); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ChangeNickname); | |||
Assert.Equal((ulong)GuildPermission.ChangeNickname, perm.RawValue); | |||
perm = perm.Modify(changeNickname: false); | |||
Assert.False(perm.ChangeNickname); | |||
@@ -279,7 +284,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(manageNicknames: true); | |||
Assert.True(perm.ManageNicknames); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageNicknames); | |||
Assert.Equal((ulong)GuildPermission.ManageNicknames, perm.RawValue); | |||
perm = perm.Modify(manageNicknames: false); | |||
Assert.False(perm.ManageNicknames); | |||
@@ -288,7 +293,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(manageRoles: true); | |||
Assert.True(perm.ManageRoles); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageRoles); | |||
Assert.Equal((ulong)GuildPermission.ManageRoles, perm.RawValue); | |||
perm = perm.Modify(manageRoles: false); | |||
Assert.False(perm.ManageRoles); | |||
@@ -297,7 +302,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(manageWebhooks: true); | |||
Assert.True(perm.ManageWebhooks); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageWebhooks); | |||
Assert.Equal((ulong)GuildPermission.ManageWebhooks, perm.RawValue); | |||
perm = perm.Modify(manageWebhooks: false); | |||
Assert.False(perm.ManageWebhooks); | |||
@@ -306,7 +311,7 @@ namespace Discord | |||
// individual permission test | |||
perm = perm.Modify(manageEmojis: true); | |||
Assert.True(perm.ManageEmojis); | |||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageEmojis); | |||
Assert.Equal((ulong)GuildPermission.ManageEmojis, perm.RawValue); | |||
perm = perm.Modify(manageEmojis: false); | |||
Assert.False(perm.ManageEmojis); | |||
@@ -77,7 +77,7 @@ namespace Discord | |||
/// <summary> | |||
/// Tests for the <see cref="Discord.Permissions"/> class. | |||
/// | |||
/// | |||
/// Tests that text channel permissions get the right value | |||
/// from the Has method. | |||
/// </summary> | |||
@@ -114,7 +114,7 @@ namespace Discord | |||
/// <summary> | |||
/// Tests for the <see cref="Discord.Permissions"/> class. | |||
/// | |||
/// | |||
/// Tests that no channel permissions get the right value | |||
/// from the Has method. | |||
/// </summary> | |||
@@ -151,7 +151,7 @@ namespace Discord | |||
/// <summary> | |||
/// Tests for the <see cref="Discord.Permissions"/> class. | |||
/// | |||
/// | |||
/// Tests that the dm channel permissions get the right value | |||
/// from the Has method. | |||
/// </summary> | |||
@@ -188,7 +188,7 @@ namespace Discord | |||
/// <summary> | |||
/// Tests for the <see cref="Discord.Permissions"/> class. | |||
/// | |||
/// | |||
/// Tests that the group channel permissions get the right value | |||
/// from the Has method. | |||
/// </summary> | |||
@@ -225,7 +225,7 @@ namespace Discord | |||
/// <summary> | |||
/// Tests for the <see cref="Discord.Permissions"/> class. | |||
/// | |||
/// | |||
/// Tests that the voice channel permissions get the right value | |||
/// from the Has method. | |||
/// </summary> | |||
@@ -239,7 +239,7 @@ namespace Discord | |||
TestHelper(value, ChannelPermission.CreateInstantInvite, true); | |||
TestHelper(value, ChannelPermission.ManageChannels, true); | |||
TestHelper(value, ChannelPermission.AddReactions, false); | |||
TestHelper(value, ChannelPermission.ViewChannel, false); | |||
TestHelper(value, ChannelPermission.ViewChannel, true); | |||
TestHelper(value, ChannelPermission.SendMessages, false); | |||
TestHelper(value, ChannelPermission.SendTTSMessages, false); | |||
TestHelper(value, ChannelPermission.ManageMessages, false); | |||
@@ -262,8 +262,8 @@ namespace Discord | |||
/// <summary> | |||
/// Tests for the <see cref="Discord.Permissions"/> class. | |||
/// | |||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||
/// | |||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||
/// returns the correct value when no permissions are set. | |||
/// </summary> | |||
/// <returns></returns> | |||
@@ -305,8 +305,8 @@ namespace Discord | |||
/// <summary> | |||
/// Tests for the <see cref="Discord.Permissions"/> class. | |||
/// | |||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||
/// | |||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||
/// returns the correct value when all permissions are set. | |||
/// </summary> | |||
/// <returns></returns> | |||
@@ -349,8 +349,8 @@ namespace Discord | |||
/// <summary> | |||
/// Tests for the <see cref="Discord.Permissions"/> class. | |||
/// | |||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||
/// | |||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||
/// returns the correct value when webhook permissions are set. | |||
/// </summary> | |||
/// <returns></returns> | |||
@@ -659,7 +659,7 @@ namespace Discord | |||
TestHelper(value, ChannelPermission.CreateInstantInvite, PermValue.Allow); | |||
TestHelper(value, ChannelPermission.ManageChannels, PermValue.Allow); | |||
TestHelper(value, ChannelPermission.AddReactions, PermValue.Inherit); | |||
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Inherit); | |||
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Allow); | |||
TestHelper(value, ChannelPermission.SendMessages, PermValue.Inherit); | |||
TestHelper(value, ChannelPermission.SendTTSMessages, PermValue.Inherit); | |||
TestHelper(value, ChannelPermission.ManageMessages, PermValue.Inherit); | |||
@@ -682,7 +682,7 @@ namespace Discord | |||
TestHelper(value, ChannelPermission.CreateInstantInvite, PermValue.Deny); | |||
TestHelper(value, ChannelPermission.ManageChannels, PermValue.Deny); | |||
TestHelper(value, ChannelPermission.AddReactions, PermValue.Inherit); | |||
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Inherit); | |||
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Deny); | |||
TestHelper(value, ChannelPermission.SendMessages, PermValue.Inherit); | |||
TestHelper(value, ChannelPermission.SendTTSMessages, PermValue.Inherit); | |||
TestHelper(value, ChannelPermission.ManageMessages, PermValue.Inherit); | |||
@@ -709,6 +709,7 @@ namespace Discord | |||
/// of the OverwritePermissions. | |||
/// </summary> | |||
/// <returns></returns> | |||
[Fact] | |||
public Task TestOverwritePermissionModifyNoParam() | |||
{ | |||
// test for all Text allowed, none denied | |||