Fixed several issues
This commit is contained in:
@@ -3,8 +3,13 @@ using Newtonsoft.Json;
|
|||||||
|
|
||||||
namespace Discord.API.Client
|
namespace Discord.API.Client
|
||||||
{
|
{
|
||||||
public class MemberVoiceState : MemberReference
|
public class MemberVoiceState
|
||||||
{
|
{
|
||||||
|
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
|
public ulong GuildId { get; set; }
|
||||||
|
[JsonProperty("user_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
|
public ulong UserId { get; set; }
|
||||||
|
|
||||||
[JsonProperty("channel_id"), JsonConverter(typeof(NullableLongStringConverter))]
|
[JsonProperty("channel_id"), JsonConverter(typeof(NullableLongStringConverter))]
|
||||||
public ulong? ChannelId { get; set; }
|
public ulong? ChannelId { get; set; }
|
||||||
[JsonProperty("session_id")]
|
[JsonProperty("session_id")]
|
||||||
|
|||||||
23
src/Discord.Net/API/Client/Common/Role.cs
Normal file
23
src/Discord.Net/API/Client/Common/Role.cs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
using Discord.API.Converters;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Discord.API.Client
|
||||||
|
{
|
||||||
|
public class Role
|
||||||
|
{
|
||||||
|
[JsonProperty("id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
|
public ulong Id { get; set; }
|
||||||
|
[JsonProperty("permissions")]
|
||||||
|
public uint? Permissions { get; set; }
|
||||||
|
[JsonProperty("name")]
|
||||||
|
public string Name { get; set; }
|
||||||
|
[JsonProperty("position")]
|
||||||
|
public int? Position { get; set; }
|
||||||
|
[JsonProperty("hoist")]
|
||||||
|
public bool? Hoist { get; set; }
|
||||||
|
[JsonProperty("color")]
|
||||||
|
public uint? Color { get; set; }
|
||||||
|
[JsonProperty("managed")]
|
||||||
|
public bool? Managed { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
12
src/Discord.Net/API/Client/Common/User.cs
Normal file
12
src/Discord.Net/API/Client/Common/User.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Discord.API.Client
|
||||||
|
{
|
||||||
|
public class User : UserReference
|
||||||
|
{
|
||||||
|
[JsonProperty("email")]
|
||||||
|
public string Email { get; set; }
|
||||||
|
[JsonProperty("verified")]
|
||||||
|
public bool? IsVerified { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,8 +6,8 @@ namespace Discord.API.Client.GatewaySocket
|
|||||||
public sealed class GuildBanAddEvent
|
public sealed class GuildBanAddEvent
|
||||||
{
|
{
|
||||||
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
public ulong GuildId { get; }
|
public ulong GuildId { get; set; }
|
||||||
[JsonProperty("user_id"), JsonConverter(typeof(LongStringConverter))]
|
[JsonProperty("user_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
public ulong UserId { get; }
|
public ulong UserId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ namespace Discord.API.Client.GatewaySocket
|
|||||||
public sealed class GuildBanRemoveEvent
|
public sealed class GuildBanRemoveEvent
|
||||||
{
|
{
|
||||||
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
public ulong GuildId { get; }
|
public ulong GuildId { get; set; }
|
||||||
[JsonProperty("user_id"), JsonConverter(typeof(LongStringConverter))]
|
[JsonProperty("user_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
public ulong UserId { get; }
|
public ulong UserId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ namespace Discord.API.Client.GatewaySocket
|
|||||||
public sealed class GuildRoleCreateEvent
|
public sealed class GuildRoleCreateEvent
|
||||||
{
|
{
|
||||||
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
public ulong GuildId { get; }
|
public ulong GuildId { get; set; }
|
||||||
[JsonProperty("role")]
|
[JsonProperty("role")]
|
||||||
public Role Data { get; }
|
public Role Data { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ namespace Discord.API.Client.GatewaySocket
|
|||||||
public sealed class GuildRoleUpdateEvent
|
public sealed class GuildRoleUpdateEvent
|
||||||
{
|
{
|
||||||
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
public ulong GuildId { get; }
|
public ulong GuildId { get; set; }
|
||||||
[JsonProperty("role")]
|
[JsonProperty("role")]
|
||||||
public Role Data { get; }
|
public Role Data { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,26 +7,26 @@ namespace Discord.API.Client.GatewaySocket
|
|||||||
public sealed class ReadState
|
public sealed class ReadState
|
||||||
{
|
{
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public string ChannelId { get; }
|
public string ChannelId { get; set; }
|
||||||
[JsonProperty("mention_count")]
|
[JsonProperty("mention_count")]
|
||||||
public int MentionCount { get; }
|
public int MentionCount { get; set; }
|
||||||
[JsonProperty("last_message_id")]
|
[JsonProperty("last_message_id")]
|
||||||
public string LastMessageId { get; }
|
public string LastMessageId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonProperty("v")]
|
[JsonProperty("v")]
|
||||||
public int Version { get; }
|
public int Version { get; set; }
|
||||||
[JsonProperty("user")]
|
[JsonProperty("user")]
|
||||||
public User User { get; }
|
public User User { get; set; }
|
||||||
[JsonProperty("session_id")]
|
[JsonProperty("session_id")]
|
||||||
public string SessionId { get; }
|
public string SessionId { get; set; }
|
||||||
[JsonProperty("read_state")]
|
[JsonProperty("read_state")]
|
||||||
public ReadState[] ReadStates { get; }
|
public ReadState[] ReadStates { get; set; }
|
||||||
[JsonProperty("guilds")]
|
[JsonProperty("guilds")]
|
||||||
public ExtendedGuild[] Guilds { get; }
|
public ExtendedGuild[] Guilds { get; set; }
|
||||||
[JsonProperty("private_channels")]
|
[JsonProperty("private_channels")]
|
||||||
public Channel[] PrivateChannels { get; }
|
public Channel[] PrivateChannels { get; set; }
|
||||||
[JsonProperty("heartbeat_interval")]
|
[JsonProperty("heartbeat_interval")]
|
||||||
public int HeartbeatInterval { get; }
|
public int HeartbeatInterval { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ namespace Discord.API.Client.GatewaySocket
|
|||||||
public sealed class RedirectEvent
|
public sealed class RedirectEvent
|
||||||
{
|
{
|
||||||
[JsonProperty("url")]
|
[JsonProperty("url")]
|
||||||
public string Url { get; }
|
public string Url { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ namespace Discord.API.Client.GatewaySocket
|
|||||||
public sealed class ResumedEvent
|
public sealed class ResumedEvent
|
||||||
{
|
{
|
||||||
[JsonProperty("heartbeat_interval")]
|
[JsonProperty("heartbeat_interval")]
|
||||||
public int HeartbeatInterval { get; }
|
public int HeartbeatInterval { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ namespace Discord.API.Client.GatewaySocket
|
|||||||
public sealed class TypingStartEvent
|
public sealed class TypingStartEvent
|
||||||
{
|
{
|
||||||
[JsonProperty("user_id"), JsonConverter(typeof(LongStringConverter))]
|
[JsonProperty("user_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
public ulong UserId { get; }
|
public ulong UserId { get; set; }
|
||||||
[JsonProperty("channel_id"), JsonConverter(typeof(LongStringConverter))]
|
[JsonProperty("channel_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
public ulong ChannelId { get; }
|
public ulong ChannelId { get; set; }
|
||||||
[JsonProperty("timestamp")]
|
[JsonProperty("timestamp")]
|
||||||
public int Timestamp { get; }
|
public int Timestamp { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ namespace Discord.API.Client.GatewaySocket
|
|||||||
public sealed class VoiceServerUpdateEvent
|
public sealed class VoiceServerUpdateEvent
|
||||||
{
|
{
|
||||||
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
public ulong GuildId { get; }
|
public ulong GuildId { get; set; }
|
||||||
[JsonProperty("endpoint")]
|
[JsonProperty("endpoint")]
|
||||||
public string Endpoint { get; }
|
public string Endpoint { get; set; }
|
||||||
[JsonProperty("token")]
|
[JsonProperty("token")]
|
||||||
public string Token { get; }
|
public string Token { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ namespace Discord.API.Client
|
|||||||
public class WebSocketMessage
|
public class WebSocketMessage
|
||||||
{
|
{
|
||||||
[JsonProperty("op")]
|
[JsonProperty("op")]
|
||||||
public int Operation { get; }
|
public int Operation { get; set; }
|
||||||
[JsonProperty("d")]
|
|
||||||
public object Payload { get; }
|
|
||||||
[JsonProperty("t", NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty("t", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Type { get; }
|
public string Type { get; set; }
|
||||||
[JsonProperty("s", NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty("s", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public int? Sequence { get; }
|
public int? Sequence { get; set; }
|
||||||
|
[JsonProperty("d")]
|
||||||
|
public object Payload { get; set; }
|
||||||
|
|
||||||
public WebSocketMessage() { }
|
public WebSocketMessage() { }
|
||||||
public WebSocketMessage(IWebSocketMessage msg)
|
public WebSocketMessage(IWebSocketMessage msg)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class AcceptInviteRequest : IRestRequest<InviteReference>
|
public sealed class AcceptInviteRequest : IRestRequest<InviteReference>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/invite/{InviteId}";
|
string IRestRequest.Endpoint => $"invite/{InviteId}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class AckMessageRequest : IRestRequest
|
public sealed class AckMessageRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}/messages/{MessageId}/ack";
|
string IRestRequest.Endpoint => $"channels/{ChannelId}/messages/{MessageId}/ack";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
30
src/Discord.Net/API/Client/Rest/AddChannelPermission.cs
Normal file
30
src/Discord.Net/API/Client/Rest/AddChannelPermission.cs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
using Discord.API.Converters;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Discord.API.Client.Rest
|
||||||
|
{
|
||||||
|
[JsonObject(MemberSerialization.OptIn)]
|
||||||
|
public sealed class AddChannelPermissionsRequest : IRestRequest
|
||||||
|
{
|
||||||
|
string IRestRequest.Method => "PUT";
|
||||||
|
string IRestRequest.Endpoint => $"channels/{ChannelId}/permissions";
|
||||||
|
object IRestRequest.Payload => this;
|
||||||
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
public ulong ChannelId { get; }
|
||||||
|
|
||||||
|
[JsonProperty("id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
|
public ulong TargetId { get; set; }
|
||||||
|
[JsonProperty("type")]
|
||||||
|
public string TargetType { get; set; }
|
||||||
|
[JsonProperty("allow")]
|
||||||
|
public uint Allow { get; set; }
|
||||||
|
[JsonProperty("deny")]
|
||||||
|
public uint Deny { get; set; }
|
||||||
|
|
||||||
|
public AddChannelPermissionsRequest(ulong channelId)
|
||||||
|
{
|
||||||
|
ChannelId = channelId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class AddGuildBanRequest : IRestRequest
|
public sealed class AddGuildBanRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "PUT";
|
string IRestRequest.Method => "PUT";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/bans/{UserId}?delete-message-days={PruneDays}";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/bans/{UserId}?delete-message-days={PruneDays}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class BroadcastTypingRequest : IRestRequest
|
public sealed class BroadcastTypingRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}/typing";
|
string IRestRequest.Endpoint => $"channels/{ChannelId}/typing";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class CreateChannelRequest : IRestRequest<Channel>
|
public sealed class CreateChannelRequest : IRestRequest<Channel>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/channels";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/channels";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class CreateGuildRequest : IRestRequest<Guild>
|
public sealed class CreateGuildRequest : IRestRequest<Guild>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds";
|
string IRestRequest.Endpoint => $"guilds";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class CreateInviteRequest : IRestRequest<Invite>
|
public sealed class CreateInviteRequest : IRestRequest<Invite>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}/invites";
|
string IRestRequest.Endpoint => $"channels/{ChannelId}/invites";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class CreatePrivateChannelRequest : IRestRequest<Channel>
|
public sealed class CreatePrivateChannelRequest : IRestRequest<Channel>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/users/@me/channels";
|
string IRestRequest.Endpoint => $"users/@me/channels";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class CreateRoleRequest : IRestRequest<Role>
|
public sealed class CreateRoleRequest : IRestRequest<Role>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/roles";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/roles";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class DeleteChannelRequest : IRestRequest<Channel>
|
public sealed class DeleteChannelRequest : IRestRequest<Channel>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "DELETE";
|
string IRestRequest.Method => "DELETE";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}";
|
string IRestRequest.Endpoint => $"channels/{ChannelId}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class DeleteInviteRequest : IRestRequest<Invite>
|
public sealed class DeleteInviteRequest : IRestRequest<Invite>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "DELETE";
|
string IRestRequest.Method => "DELETE";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/invite/{InviteCode}";
|
string IRestRequest.Endpoint => $"invite/{InviteCode}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class DeleteMessageRequest : IRestRequest
|
public sealed class DeleteMessageRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "DELETE";
|
string IRestRequest.Method => "DELETE";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}/messages/{MessageId}";
|
string IRestRequest.Endpoint => $"channels/{ChannelId}/messages/{MessageId}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class DeleteRoleRequest : IRestRequest
|
public sealed class DeleteRoleRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "DELETE";
|
string IRestRequest.Method => "DELETE";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/roles/{RoleId}";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/roles/{RoleId}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class GatewayRequest : IRestRequest<GatewayResponse>
|
public sealed class GatewayRequest : IRestRequest<GatewayResponse>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "GET";
|
string IRestRequest.Method => "GET";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/gateway";
|
string IRestRequest.Endpoint => $"gateway";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class GetInviteRequest : IRestRequest<InviteReference>
|
public sealed class GetInviteRequest : IRestRequest<InviteReference>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "GET";
|
string IRestRequest.Method => "GET";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/invite/{InviteCode}";
|
string IRestRequest.Endpoint => $"invite/{InviteCode}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class GetInvitesRequest : IRestRequest<InviteReference[]>
|
public sealed class GetInvitesRequest : IRestRequest<InviteReference[]>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "GET";
|
string IRestRequest.Method => "GET";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/invites";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/invites";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace Discord.API.Client.Rest
|
|||||||
this.AddQueryParam(query, "limit", Limit.ToString());
|
this.AddQueryParam(query, "limit", Limit.ToString());
|
||||||
if (RelativeDir != null)
|
if (RelativeDir != null)
|
||||||
this.AddQueryParam(query, RelativeDir, RelativeId.Value.ToString());
|
this.AddQueryParam(query, RelativeDir, RelativeId.Value.ToString());
|
||||||
return $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}/messages{query}";
|
return $"channels/{ChannelId}/messages{query}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class GetVoiceRegionsRequest : IRestRequest<GetVoiceRegionsResponse[]>
|
public sealed class GetVoiceRegionsRequest : IRestRequest<GetVoiceRegionsResponse[]>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "GET";
|
string IRestRequest.Method => "GET";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/voice/regions";
|
string IRestRequest.Endpoint => $"voice/regions";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class GetWidgetRequest : IRestRequest<GetWidgetResponse>
|
public sealed class GetWidgetRequest : IRestRequest<GetWidgetResponse>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "GET";
|
string IRestRequest.Method => "GET";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/servers/{GuildId}/widget.json";
|
string IRestRequest.Endpoint => $"servers/{GuildId}/widget.json";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class KickMemberRequest : IRestRequest
|
public sealed class KickMemberRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "DELETE";
|
string IRestRequest.Method => "DELETE";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/members/{UserId}";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/members/{UserId}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class LeaveGuildRequest : IRestRequest<Guild>
|
public sealed class LeaveGuildRequest : IRestRequest<Guild>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "DELETE";
|
string IRestRequest.Method => "DELETE";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
24
src/Discord.Net/API/Client/Rest/Login.cs
Normal file
24
src/Discord.Net/API/Client/Rest/Login.cs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Discord.API.Client.Rest
|
||||||
|
{
|
||||||
|
[JsonObject(MemberSerialization.OptIn)]
|
||||||
|
public sealed class LoginRequest : IRestRequest<LoginResponse>
|
||||||
|
{
|
||||||
|
string IRestRequest.Method => "POST";
|
||||||
|
string IRestRequest.Endpoint => $"auth/login";
|
||||||
|
object IRestRequest.Payload => this;
|
||||||
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
[JsonProperty("email")]
|
||||||
|
public string Email { get; set; }
|
||||||
|
[JsonProperty("password")]
|
||||||
|
public string Password { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class LoginResponse
|
||||||
|
{
|
||||||
|
[JsonProperty("token")]
|
||||||
|
public string Token { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class LogoutRequest : IRestRequest
|
public sealed class LogoutRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/auth/logout";
|
string IRestRequest.Endpoint => $"auth/logout";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class PruneMembersRequest : IRestRequest<PruneMembersResponse>
|
public sealed class PruneMembersRequest : IRestRequest<PruneMembersResponse>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => IsSimulation ? "GET" : "POST";
|
string IRestRequest.Method => IsSimulation ? "GET" : "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/prune?days={Days}";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/prune?days={Days}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class RemoveChannelPermissionsRequest : IRestRequest
|
public sealed class RemoveChannelPermissionsRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "DELETE";
|
string IRestRequest.Method => "DELETE";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}/permissions/{TargetId}";
|
string IRestRequest.Endpoint => $"channels/{ChannelId}/permissions/{TargetId}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class RemoveGuildBanRequest : IRestRequest
|
public sealed class RemoveGuildBanRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "DELETE";
|
string IRestRequest.Method => "DELETE";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/bans/{UserId}";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/bans/{UserId}";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class ReorderChannelsRequest : IRestRequest
|
public sealed class ReorderChannelsRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "PATCH";
|
string IRestRequest.Method => "PATCH";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/channels";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/channels";
|
||||||
object IRestRequest.Payload
|
object IRestRequest.Payload
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class ReorderRolesRequest : IRestRequest<Role[]>
|
public sealed class ReorderRolesRequest : IRestRequest<Role[]>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "PATCH";
|
string IRestRequest.Method => "PATCH";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/roles";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/roles";
|
||||||
object IRestRequest.Payload
|
object IRestRequest.Payload
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class SendFileRequest : IRestFileRequest<Message>
|
public sealed class SendFileRequest : IRestFileRequest<Message>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}/messages";
|
string IRestRequest.Endpoint => $"channels/{ChannelId}/messages";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
string IRestFileRequest.Filename => Filename;
|
string IRestFileRequest.Filename => Filename;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class SendMessageRequest : IRestRequest<Message>
|
public sealed class SendMessageRequest : IRestRequest<Message>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "POST";
|
string IRestRequest.Method => "POST";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}/messages";
|
string IRestRequest.Endpoint => $"channels/{ChannelId}/messages";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class UpdateChannelRequest : IRestRequest<Channel>
|
public sealed class UpdateChannelRequest : IRestRequest<Channel>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "PATCH";
|
string IRestRequest.Method => "PATCH";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}";
|
string IRestRequest.Endpoint => $"channels/{ChannelId}";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class UpdateGuildRequest : IRestRequest<Guild>
|
public sealed class UpdateGuildRequest : IRestRequest<Guild>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "PATCH";
|
string IRestRequest.Method => "PATCH";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class UpdateMemberRequest : IRestRequest
|
public sealed class UpdateMemberRequest : IRestRequest
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "PATCH";
|
string IRestRequest.Method => "PATCH";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/members/{UserId}";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/members/{UserId}";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class UpdateMessageRequest : IRestRequest<Message>
|
public sealed class UpdateMessageRequest : IRestRequest<Message>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "PATCH";
|
string IRestRequest.Method => "PATCH";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/channels/{ChannelId}/messages/{MessageId}";
|
string IRestRequest.Endpoint => $"channels/{ChannelId}/messages/{MessageId}";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class UpdateProfileRequest : IRestRequest<User>
|
public sealed class UpdateProfileRequest : IRestRequest<User>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "PATCH";
|
string IRestRequest.Method => "PATCH";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/users/@me";
|
string IRestRequest.Endpoint => $"users/@me";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Client.Rest
|
|||||||
public sealed class UpdateRoleRequest : IRestRequest<Role>
|
public sealed class UpdateRoleRequest : IRestRequest<Role>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "PATCH";
|
string IRestRequest.Method => "PATCH";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.ClientAPIUrl}/guilds/{GuildId}/roles/{RoleId}";
|
string IRestRequest.Endpoint => $"guilds/{GuildId}/roles/{RoleId}";
|
||||||
object IRestRequest.Payload => this;
|
object IRestRequest.Payload => this;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
|
|
||||||
|
|||||||
@@ -7,20 +7,20 @@ namespace Discord.API.Status
|
|||||||
public class Incident
|
public class Incident
|
||||||
{
|
{
|
||||||
[JsonProperty("page")]
|
[JsonProperty("page")]
|
||||||
public PageData Page { get; }
|
public PageData Page { get; set; }
|
||||||
[JsonProperty("scheduled_maintenances")]
|
[JsonProperty("scheduled_maintenances")]
|
||||||
public MaintenanceData[] ScheduledMaintenances { get; }
|
public MaintenanceData[] ScheduledMaintenances { get; set; }
|
||||||
|
|
||||||
public sealed class PageData
|
public sealed class PageData
|
||||||
{
|
{
|
||||||
[JsonProperty("id"), JsonConverter(typeof(LongStringConverter))]
|
[JsonProperty("id"), JsonConverter(typeof(LongStringConverter))]
|
||||||
public ulong Id { get; }
|
public ulong Id { get; set; }
|
||||||
[JsonProperty("name")]
|
[JsonProperty("name")]
|
||||||
public string Name { get; }
|
public string Name { get; set; }
|
||||||
[JsonProperty("url")]
|
[JsonProperty("url")]
|
||||||
public string Url { get; }
|
public string Url { get; set; }
|
||||||
[JsonProperty("updated-at")]
|
[JsonProperty("updated-at")]
|
||||||
public DateTime? UpdatedAt { get; }
|
public DateTime? UpdatedAt { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class MaintenanceData
|
public sealed class MaintenanceData
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Status.Rest
|
|||||||
public sealed class GetActiveIncidentsRequest : IRestRequest<Incident>
|
public sealed class GetActiveIncidentsRequest : IRestRequest<Incident>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "GET";
|
string IRestRequest.Method => "GET";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.StatusAPIUrl}/scheduled-maintenances/active.json";
|
string IRestRequest.Endpoint => $"scheduled-maintenances/active.json";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Discord.API.Status.Rest
|
|||||||
public sealed class GetUpcomingIncidentsRequest : IRestRequest<Incident>
|
public sealed class GetUpcomingIncidentsRequest : IRestRequest<Incident>
|
||||||
{
|
{
|
||||||
string IRestRequest.Method => "GET";
|
string IRestRequest.Method => "GET";
|
||||||
string IRestRequest.Endpoint => $"{DiscordConfig.StatusAPIUrl}/scheduled-maintenances/upcoming.json";
|
string IRestRequest.Endpoint => $"scheduled-maintenances/upcoming.json";
|
||||||
object IRestRequest.Payload => null;
|
object IRestRequest.Payload => null;
|
||||||
bool IRestRequest.IsPrivate => false;
|
bool IRestRequest.IsPrivate => false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ namespace Discord
|
|||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
var request = new CreateChannelRequest(server.Id) { Name = name, Type = type.Value };
|
var request = new CreateChannelRequest(server.Id) { Name = name, Type = type.Value };
|
||||||
var response = await _rest.Send(request).ConfigureAwait(false);
|
var response = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
|
|
||||||
var channel = _channels.GetOrAdd(response.Id, response.GuildId, response.Recipient?.Id);
|
var channel = _channels.GetOrAdd(response.Id, response.GuildId, response.Recipient?.Id);
|
||||||
channel.Update(response);
|
channel.Update(response);
|
||||||
@@ -139,7 +139,7 @@ namespace Discord
|
|||||||
if (channel == null)
|
if (channel == null)
|
||||||
{
|
{
|
||||||
var request = new CreatePrivateChannelRequest() { RecipientId = user.Id };
|
var request = new CreatePrivateChannelRequest() { RecipientId = user.Id };
|
||||||
var response = await _rest.Send(request).ConfigureAwait(false);
|
var response = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
|
|
||||||
var recipient = _users.GetOrAdd(response.Recipient.Id, null);
|
var recipient = _users.GetOrAdd(response.Recipient.Id, null);
|
||||||
recipient.Update(response.Recipient);
|
recipient.Update(response.Recipient);
|
||||||
@@ -163,7 +163,7 @@ namespace Discord
|
|||||||
Topic = topic ?? channel.Topic,
|
Topic = topic ?? channel.Topic,
|
||||||
Position = channel.Position
|
Position = channel.Position
|
||||||
};
|
};
|
||||||
await _rest.Send(request).ConfigureAwait(false);
|
await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (position != null)
|
if (position != null)
|
||||||
@@ -207,7 +207,7 @@ namespace Discord
|
|||||||
ChannelIds = channels.Select(x => x.Id).ToArray(),
|
ChannelIds = channels.Select(x => x.Id).ToArray(),
|
||||||
StartPos = after != null ? after.Position + 1 : channels.Min(x => x.Position)
|
StartPos = after != null ? after.Position + 1 : channels.Min(x => x.Position)
|
||||||
};
|
};
|
||||||
return _rest.Send(request);
|
return _clientRest.Send(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Destroys the provided channel. </summary>
|
/// <summary> Destroys the provided channel. </summary>
|
||||||
@@ -216,7 +216,7 @@ namespace Discord
|
|||||||
if (channel == null) throw new ArgumentNullException(nameof(channel));
|
if (channel == null) throw new ArgumentNullException(nameof(channel));
|
||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
try { await _rest.Send(new DeleteChannelRequest(channel.Id)).ConfigureAwait(false); }
|
try { await _clientRest.Send(new DeleteChannelRequest(channel.Id)).ConfigureAwait(false); }
|
||||||
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace Discord
|
|||||||
if (index >= 0)
|
if (index >= 0)
|
||||||
inviteIdOrXkcd = inviteIdOrXkcd.Substring(index + 1);
|
inviteIdOrXkcd = inviteIdOrXkcd.Substring(index + 1);
|
||||||
|
|
||||||
var response = await _rest.Send(new GetInviteRequest(inviteIdOrXkcd)).ConfigureAwait(false);
|
var response = await _clientRest.Send(new GetInviteRequest(inviteIdOrXkcd)).ConfigureAwait(false);
|
||||||
var invite = new Invite(response.Code, response.XkcdPass);
|
var invite = new Invite(response.Code, response.XkcdPass);
|
||||||
invite.Update(response);
|
invite.Update(response);
|
||||||
return invite;
|
return invite;
|
||||||
@@ -36,7 +36,7 @@ namespace Discord
|
|||||||
if (server == null) throw new ArgumentNullException(nameof(server));
|
if (server == null) throw new ArgumentNullException(nameof(server));
|
||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
var response = await _rest.Send(new GetInvitesRequest(server.Id)).ConfigureAwait(false);
|
var response = await _clientRest.Send(new GetInvitesRequest(server.Id)).ConfigureAwait(false);
|
||||||
return response.Select(x =>
|
return response.Select(x =>
|
||||||
{
|
{
|
||||||
var invite = new Invite(x.Code, x.XkcdPass);
|
var invite = new Invite(x.Code, x.XkcdPass);
|
||||||
@@ -77,7 +77,7 @@ namespace Discord
|
|||||||
WithXkcdPass = withXkcd
|
WithXkcdPass = withXkcd
|
||||||
};
|
};
|
||||||
|
|
||||||
var response = await _rest.Send(request).ConfigureAwait(false);
|
var response = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
var invite = new Invite(response.Code, response.XkcdPass);
|
var invite = new Invite(response.Code, response.XkcdPass);
|
||||||
return invite;
|
return invite;
|
||||||
}
|
}
|
||||||
@@ -88,7 +88,7 @@ namespace Discord
|
|||||||
if (invite == null) throw new ArgumentNullException(nameof(invite));
|
if (invite == null) throw new ArgumentNullException(nameof(invite));
|
||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
try { await _rest.Send(new DeleteInviteRequest(invite.Code)).ConfigureAwait(false); }
|
try { await _clientRest.Send(new DeleteInviteRequest(invite.Code)).ConfigureAwait(false); }
|
||||||
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ namespace Discord
|
|||||||
if (invite == null) throw new ArgumentNullException(nameof(invite));
|
if (invite == null) throw new ArgumentNullException(nameof(invite));
|
||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
return _rest.Send(new AcceptInviteRequest(invite.Code));
|
return _clientRest.Send(new AcceptInviteRequest(invite.Code));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -164,7 +164,7 @@ namespace Discord
|
|||||||
Filename = filename,
|
Filename = filename,
|
||||||
Stream = stream
|
Stream = stream
|
||||||
};
|
};
|
||||||
var model = await _rest.Send(request).ConfigureAwait(false);
|
var model = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
|
|
||||||
var msg = _messages.GetOrAdd(model.Id, channel.Id, model.Author.Id);
|
var msg = _messages.GetOrAdd(model.Id, channel.Id, model.Author.Id);
|
||||||
msg.Update(model);
|
msg.Update(model);
|
||||||
@@ -229,7 +229,7 @@ namespace Discord
|
|||||||
Nonce = null,
|
Nonce = null,
|
||||||
IsTTS = isTextToSpeech
|
IsTTS = isTextToSpeech
|
||||||
};
|
};
|
||||||
var model = await _rest.Send(request).ConfigureAwait(false);
|
var model = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
msg = _messages.GetOrAdd(model.Id, channel.Id, model.Author.Id);
|
msg = _messages.GetOrAdd(model.Id, channel.Id, model.Author.Id);
|
||||||
msg.Update(model);
|
msg.Update(model);
|
||||||
RaiseMessageSent(msg);
|
RaiseMessageSent(msg);
|
||||||
@@ -262,7 +262,7 @@ namespace Discord
|
|||||||
Content = text,
|
Content = text,
|
||||||
MentionedUserIds = mentionedUsers.Select(x => x.Id).ToArray()
|
MentionedUserIds = mentionedUsers.Select(x => x.Id).ToArray()
|
||||||
};
|
};
|
||||||
await _rest.Send(request).ConfigureAwait(false);
|
await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,7 +273,7 @@ namespace Discord
|
|||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
var request = new DeleteMessageRequest(message.Id, message.Channel.Id);
|
var request = new DeleteMessageRequest(message.Id, message.Channel.Id);
|
||||||
try { await _rest.Send(request).ConfigureAwait(false); }
|
try { await _clientRest.Send(request).ConfigureAwait(false); }
|
||||||
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
||||||
}
|
}
|
||||||
public async Task DeleteMessages(IEnumerable<Message> messages)
|
public async Task DeleteMessages(IEnumerable<Message> messages)
|
||||||
@@ -284,7 +284,7 @@ namespace Discord
|
|||||||
foreach (var message in messages)
|
foreach (var message in messages)
|
||||||
{
|
{
|
||||||
var request = new DeleteMessageRequest(message.Id, message.Channel.Id);
|
var request = new DeleteMessageRequest(message.Id, message.Channel.Id);
|
||||||
try { await _rest.Send(request).ConfigureAwait(false); }
|
try { await _clientRest.Send(request).ConfigureAwait(false); }
|
||||||
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -307,7 +307,7 @@ namespace Discord
|
|||||||
RelativeDir = relativeDir == RelativeDirection.Before ? "before" : "after",
|
RelativeDir = relativeDir == RelativeDirection.Before ? "before" : "after",
|
||||||
RelativeId = relativeMessageId
|
RelativeId = relativeMessageId
|
||||||
};
|
};
|
||||||
var msgs = await _rest.Send(request).ConfigureAwait(false);
|
var msgs = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
return msgs.Select(x =>
|
return msgs.Select(x =>
|
||||||
{
|
{
|
||||||
Message msg = null;
|
Message msg = null;
|
||||||
@@ -336,7 +336,7 @@ namespace Discord
|
|||||||
if (message == null) throw new ArgumentNullException(nameof(message));
|
if (message == null) throw new ArgumentNullException(nameof(message));
|
||||||
|
|
||||||
if (!message.IsAuthor)
|
if (!message.IsAuthor)
|
||||||
_rest.Send(new AckMessageRequest(message.Id, message.Channel.Id));
|
_clientRest.Send(new AckMessageRequest(message.Id, message.Channel.Id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Deserializes messages from JSON format and imports them into the message cache.</summary>
|
/// <summary> Deserializes messages from JSON format and imports them into the message cache.</summary>
|
||||||
@@ -401,7 +401,7 @@ namespace Discord
|
|||||||
Nonce = IdConvert.ToString(msg.Id), //Nonce
|
Nonce = IdConvert.ToString(msg.Id), //Nonce
|
||||||
IsTTS = msg.IsTTS
|
IsTTS = msg.IsTTS
|
||||||
};
|
};
|
||||||
await _rest.Send(request).ConfigureAwait(false);
|
await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -410,7 +410,7 @@ namespace Discord
|
|||||||
Content = queuedMessage.Text,
|
Content = queuedMessage.Text,
|
||||||
MentionedUserIds = queuedMessage.MentionedUsers
|
MentionedUserIds = queuedMessage.MentionedUsers
|
||||||
};
|
};
|
||||||
await _rest.Send(request).ConfigureAwait(false);
|
await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (WebException) { break; }
|
catch (WebException) { break; }
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ namespace Discord
|
|||||||
Allow = allow?.RawValue ?? 0,
|
Allow = allow?.RawValue ?? 0,
|
||||||
Deny = deny?.RawValue ?? 0
|
Deny = deny?.RawValue ?? 0
|
||||||
};
|
};
|
||||||
return _rest.Send(request);
|
return _clientRest.Send(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task RemoveChannelPermissions(Channel channel, User user)
|
public Task RemoveChannelPermissions(Channel channel, User user)
|
||||||
@@ -97,7 +97,7 @@ namespace Discord
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var perms = channel.PermissionOverwrites.Where(x => x.TargetType != targetType || x.TargetId != userOrRoleId).FirstOrDefault();
|
var perms = channel.PermissionOverwrites.Where(x => x.TargetType != targetType || x.TargetId != userOrRoleId).FirstOrDefault();
|
||||||
await _rest.Send(new RemoveChannelPermissionsRequest(channel.Id, userOrRoleId)).ConfigureAwait(false);
|
await _clientRest.Send(new RemoveChannelPermissionsRequest(channel.Id, userOrRoleId)).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ namespace Discord
|
|||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
var request1 = new CreateRoleRequest(server.Id);
|
var request1 = new CreateRoleRequest(server.Id);
|
||||||
var response1 = await _rest.Send(request1).ConfigureAwait(false);
|
var response1 = await _clientRest.Send(request1).ConfigureAwait(false);
|
||||||
var role = _roles.GetOrAdd(response1.Id, server.Id);
|
var role = _roles.GetOrAdd(response1.Id, server.Id);
|
||||||
role.Update(response1);
|
role.Update(response1);
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ namespace Discord
|
|||||||
Color = (color ?? Color.Default).RawValue,
|
Color = (color ?? Color.Default).RawValue,
|
||||||
IsHoisted = isHoisted
|
IsHoisted = isHoisted
|
||||||
};
|
};
|
||||||
var response2 = await _rest.Send(request2).ConfigureAwait(false);
|
var response2 = await _clientRest.Send(request2).ConfigureAwait(false);
|
||||||
role.Update(response2);
|
role.Update(response2);
|
||||||
|
|
||||||
return role;
|
return role;
|
||||||
@@ -117,7 +117,7 @@ namespace Discord
|
|||||||
IsHoisted = isHoisted ?? role.IsHoisted
|
IsHoisted = isHoisted ?? role.IsHoisted
|
||||||
};
|
};
|
||||||
|
|
||||||
var response = await _rest.Send(request1).ConfigureAwait(false);
|
var response = await _clientRest.Send(request1).ConfigureAwait(false);
|
||||||
|
|
||||||
if (position != null)
|
if (position != null)
|
||||||
{
|
{
|
||||||
@@ -146,7 +146,7 @@ namespace Discord
|
|||||||
RoleIds = roles.Skip(minPos).Select(x => x.Id).ToArray(),
|
RoleIds = roles.Skip(minPos).Select(x => x.Id).ToArray(),
|
||||||
StartPos = minPos
|
StartPos = minPos
|
||||||
};
|
};
|
||||||
await _rest.Send(request2).ConfigureAwait(false);
|
await _clientRest.Send(request2).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,7 +155,7 @@ namespace Discord
|
|||||||
if (role == null) throw new ArgumentNullException(nameof(role));
|
if (role == null) throw new ArgumentNullException(nameof(role));
|
||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
try { await _rest.Send(new DeleteRoleRequest(role.Server.Id, role.Id)).ConfigureAwait(false); }
|
try { await _clientRest.Send(new DeleteRoleRequest(role.Server.Id, role.Id)).ConfigureAwait(false); }
|
||||||
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ namespace Discord
|
|||||||
if (startPos < 0) throw new ArgumentOutOfRangeException(nameof(startPos), "startPos must be a positive integer.");
|
if (startPos < 0) throw new ArgumentOutOfRangeException(nameof(startPos), "startPos must be a positive integer.");
|
||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
return _rest.Send(new ReorderRolesRequest(server.Id)
|
return _clientRest.Send(new ReorderRolesRequest(server.Id)
|
||||||
{
|
{
|
||||||
RoleIds = roles.Select(x => x.Id).ToArray(),
|
RoleIds = roles.Select(x => x.Id).ToArray(),
|
||||||
StartPos = startPos
|
StartPos = startPos
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ namespace Discord
|
|||||||
Region = region.Id,
|
Region = region.Id,
|
||||||
IconBase64 = Base64Image(iconType, icon, null)
|
IconBase64 = Base64Image(iconType, icon, null)
|
||||||
};
|
};
|
||||||
var response = await _rest.Send(request).ConfigureAwait(false);
|
var response = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
|
|
||||||
var server = _servers.GetOrAdd(response.Id);
|
var server = _servers.GetOrAdd(response.Id);
|
||||||
server.Update(response);
|
server.Update(response);
|
||||||
@@ -115,7 +115,7 @@ namespace Discord
|
|||||||
AFKChannelId = server.AFKChannel?.Id,
|
AFKChannelId = server.AFKChannel?.Id,
|
||||||
AFKTimeout = server.AFKTimeout
|
AFKTimeout = server.AFKTimeout
|
||||||
};
|
};
|
||||||
var response = await _rest.Send(request).ConfigureAwait(false);
|
var response = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
server.Update(response);
|
server.Update(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ namespace Discord
|
|||||||
if (server == null) throw new ArgumentNullException(nameof(server));
|
if (server == null) throw new ArgumentNullException(nameof(server));
|
||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
try { await _rest.Send(new LeaveGuildRequest(server.Id)).ConfigureAwait(false); }
|
try { await _clientRest.Send(new LeaveGuildRequest(server.Id)).ConfigureAwait(false); }
|
||||||
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
var regions = await _rest.Send(new GetVoiceRegionsRequest()).ConfigureAwait(false);
|
var regions = await _clientRest.Send(new GetVoiceRegionsRequest()).ConfigureAwait(false);
|
||||||
return regions.Select(x => new Region(x.Id, x.Name, x.Hostname, x.Port));
|
return regions.Select(x => new Region(x.Id, x.Name, x.Hostname, x.Port));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ namespace Discord
|
|||||||
VoiceChannelId = voiceChannel?.Id,
|
VoiceChannelId = voiceChannel?.Id,
|
||||||
RoleIds = roleIds.ToArray()
|
RoleIds = roleIds.ToArray()
|
||||||
};
|
};
|
||||||
return _rest.Send(request);
|
return _clientRest.Send(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task KickUser(User user)
|
public Task KickUser(User user)
|
||||||
@@ -228,7 +228,7 @@ namespace Discord
|
|||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
var request = new KickMemberRequest(user.Server.Id, user.Id);
|
var request = new KickMemberRequest(user.Server.Id, user.Id);
|
||||||
return _rest.Send(request);
|
return _clientRest.Send(request);
|
||||||
}
|
}
|
||||||
public Task BanUser(User user, int pruneDays = 0)
|
public Task BanUser(User user, int pruneDays = 0)
|
||||||
{
|
{
|
||||||
@@ -238,7 +238,7 @@ namespace Discord
|
|||||||
|
|
||||||
var request = new AddGuildBanRequest(user.Server.Id, user.Id);
|
var request = new AddGuildBanRequest(user.Server.Id, user.Id);
|
||||||
request.PruneDays = pruneDays;
|
request.PruneDays = pruneDays;
|
||||||
return _rest.Send(request);
|
return _clientRest.Send(request);
|
||||||
}
|
}
|
||||||
public async Task UnbanUser(Server server, ulong userId)
|
public async Task UnbanUser(Server server, ulong userId)
|
||||||
{
|
{
|
||||||
@@ -246,7 +246,7 @@ namespace Discord
|
|||||||
if (userId <= 0) throw new ArgumentOutOfRangeException(nameof(userId));
|
if (userId <= 0) throw new ArgumentOutOfRangeException(nameof(userId));
|
||||||
CheckReady();
|
CheckReady();
|
||||||
|
|
||||||
try { await _rest.Send(new RemoveGuildBanRequest(server.Id, userId)).ConfigureAwait(false); }
|
try { await _clientRest.Send(new RemoveGuildBanRequest(server.Id, userId)).ConfigureAwait(false); }
|
||||||
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,7 +261,7 @@ namespace Discord
|
|||||||
Days = days,
|
Days = days,
|
||||||
IsSimulation = simulate
|
IsSimulation = simulate
|
||||||
};
|
};
|
||||||
var response = await _rest.Send(request).ConfigureAwait(false);
|
var response = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
return response.Pruned;
|
return response.Pruned;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,7 +289,7 @@ namespace Discord
|
|||||||
AvatarBase64 = Base64Image(avatarType, avatar, _privateUser?.AvatarId)
|
AvatarBase64 = Base64Image(avatarType, avatar, _privateUser?.AvatarId)
|
||||||
};
|
};
|
||||||
|
|
||||||
await _rest.Send(request).ConfigureAwait(false);
|
await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
|
|
||||||
if (password != null)
|
if (password != null)
|
||||||
{
|
{
|
||||||
@@ -298,8 +298,8 @@ namespace Discord
|
|||||||
Email = _currentUser.Email,
|
Email = _currentUser.Email,
|
||||||
Password = password
|
Password = password
|
||||||
};
|
};
|
||||||
var loginResponse = await _rest.Send(loginRequest).ConfigureAwait(false);
|
var loginResponse = await _clientRest.Send(loginRequest).ConfigureAwait(false);
|
||||||
_rest.SetToken(loginResponse.Token);
|
_clientRest.SetToken(loginResponse.Token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ namespace Discord
|
|||||||
public partial class DiscordClient
|
public partial class DiscordClient
|
||||||
{
|
{
|
||||||
private readonly LogService _log;
|
private readonly LogService _log;
|
||||||
private readonly Logger _logger, _restLogger, _cacheLogger;
|
private readonly Logger _logger, _restLogger, _cacheLogger, _webSocketLogger;
|
||||||
private readonly Dictionary<Type, object> _singletons;
|
private readonly Dictionary<Type, object> _singletons;
|
||||||
private readonly object _cacheLock;
|
private readonly object _cacheLock;
|
||||||
private readonly Semaphore _lock;
|
private readonly Semaphore _lock;
|
||||||
@@ -73,8 +73,9 @@ namespace Discord
|
|||||||
private ConnectionState _state;
|
private ConnectionState _state;
|
||||||
|
|
||||||
/// <summary> Gives direct access to the underlying DiscordAPIClient. This can be used to modify objects not in cache. </summary>
|
/// <summary> Gives direct access to the underlying DiscordAPIClient. This can be used to modify objects not in cache. </summary>
|
||||||
public RestClient Rest => _rest;
|
public RestClient ClientAPI => _clientRest;
|
||||||
private readonly RestClient _rest;
|
public RestClient StatusAPI => _statusRest;
|
||||||
|
private readonly RestClient _clientRest, _statusRest;
|
||||||
|
|
||||||
/// <summary> Returns the internal websocket object. </summary>
|
/// <summary> Returns the internal websocket object. </summary>
|
||||||
public GatewaySocket WebSocket => _webSocket;
|
public GatewaySocket WebSocket => _webSocket;
|
||||||
@@ -122,7 +123,10 @@ namespace Discord
|
|||||||
//Services
|
//Services
|
||||||
_singletons = new Dictionary<Type, object>();
|
_singletons = new Dictionary<Type, object>();
|
||||||
_log = AddService(new LogService());
|
_log = AddService(new LogService());
|
||||||
_logger = CreateMainLogger();
|
_logger = _log.CreateLogger("Client");
|
||||||
|
_cacheLogger = _log.CreateLogger("Cache");
|
||||||
|
_restLogger = _log.CreateLogger("Rest");
|
||||||
|
_webSocketLogger = _log.CreateLogger("WebSocket");
|
||||||
|
|
||||||
//Async
|
//Async
|
||||||
_lock = new Semaphore(1, 1);
|
_lock = new Semaphore(1, 1);
|
||||||
@@ -133,20 +137,17 @@ namespace Discord
|
|||||||
|
|
||||||
//Cache
|
//Cache
|
||||||
_cacheLock = new object();
|
_cacheLock = new object();
|
||||||
_channels = new Channels(this, _cacheLock);
|
_channels = new Channels(this, _cacheLock);
|
||||||
_users = new Users(this, _cacheLock);
|
_users = new Users(this, _cacheLock);
|
||||||
_messages = new Messages(this, _cacheLock, Config.MessageCacheSize > 0);
|
_messages = new Messages(this, _cacheLock, Config.MessageCacheSize > 0);
|
||||||
_roles = new Roles(this, _cacheLock);
|
_roles = new Roles(this, _cacheLock);
|
||||||
_servers = new Servers(this, _cacheLock);
|
_servers = new Servers(this, _cacheLock);
|
||||||
_globalUsers = new GlobalUsers(this, _cacheLock);
|
_globalUsers = new GlobalUsers(this, _cacheLock);
|
||||||
_cacheLogger = CreateCacheLogger();
|
|
||||||
|
|
||||||
//Networking
|
//Networking
|
||||||
_restLogger = CreateRestLogger();
|
_clientRest = new RestClient(_config, _restLogger, DiscordConfig.ClientAPIUrl);
|
||||||
_rest = new RestClient(_config, _restLogger);
|
_statusRest = new RestClient(_config, _restLogger, DiscordConfig.StatusAPIUrl);
|
||||||
|
_webSocket = new GatewaySocket(this, _webSocketLogger);
|
||||||
var webSocketLogger = _log.CreateLogger("WebSocket");
|
|
||||||
_webSocket = new GatewaySocket(this, webSocketLogger);
|
|
||||||
_webSocket.Connected += (s, e) =>
|
_webSocket.Connected += (s, e) =>
|
||||||
{
|
{
|
||||||
if (_state == ConnectionState.Connecting)
|
if (_state == ConnectionState.Connecting)
|
||||||
@@ -162,94 +163,80 @@ namespace Discord
|
|||||||
_pendingMessages = new ConcurrentQueue<MessageQueueItem>();
|
_pendingMessages = new ConcurrentQueue<MessageQueueItem>();
|
||||||
Connected += async (s, e) =>
|
Connected += async (s, e) =>
|
||||||
{
|
{
|
||||||
_rest.SetCancelToken(_cancelToken);
|
_clientRest.SetCancelToken(_cancelToken);
|
||||||
await SendStatus().ConfigureAwait(false);
|
await SendStatus().ConfigureAwait(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Import/Export
|
//Import/Export
|
||||||
_messageImporter = new JsonSerializer();
|
_messageImporter = new JsonSerializer();
|
||||||
_messageImporter.ContractResolver = new Message.ImportResolver();
|
_messageImporter.ContractResolver = new Message.ImportResolver();
|
||||||
}
|
|
||||||
|
|
||||||
private Logger CreateMainLogger()
|
//Logging
|
||||||
{
|
|
||||||
Logger logger = _log.CreateLogger("Client");
|
|
||||||
if (_log.Level >= LogSeverity.Info)
|
if (_log.Level >= LogSeverity.Info)
|
||||||
{
|
{
|
||||||
JoinedServer += (s, e) => logger.Info($"Server Created: {e.Server?.Name ?? "[Private]"}");
|
JoinedServer += (s, e) => _logger.Info($"Server Created: {e.Server?.Name ?? "[Private]"}");
|
||||||
LeftServer += (s, e) => logger.Info($"Server Destroyed: {e.Server?.Name ?? "[Private]"}");
|
LeftServer += (s, e) => _logger.Info($"Server Destroyed: {e.Server?.Name ?? "[Private]"}");
|
||||||
ServerUpdated += (s, e) => logger.Info($"Server Updated: {e.Server?.Name ?? "[Private]"}");
|
ServerUpdated += (s, e) => _logger.Info($"Server Updated: {e.Server?.Name ?? "[Private]"}");
|
||||||
ServerAvailable += (s, e) => logger.Info($"Server Available: {e.Server?.Name ?? "[Private]"}");
|
ServerAvailable += (s, e) => _logger.Info($"Server Available: {e.Server?.Name ?? "[Private]"}");
|
||||||
ServerUnavailable += (s, e) => logger.Info($"Server Unavailable: {e.Server?.Name ?? "[Private]"}");
|
ServerUnavailable += (s, e) => _logger.Info($"Server Unavailable: {e.Server?.Name ?? "[Private]"}");
|
||||||
ChannelCreated += (s, e) => logger.Info($"Channel Created: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}");
|
ChannelCreated += (s, e) => _logger.Info($"Channel Created: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}");
|
||||||
ChannelDestroyed += (s, e) => logger.Info($"Channel Destroyed: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}");
|
ChannelDestroyed += (s, e) => _logger.Info($"Channel Destroyed: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}");
|
||||||
ChannelUpdated += (s, e) => logger.Info($"Channel Updated: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}");
|
ChannelUpdated += (s, e) => _logger.Info($"Channel Updated: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}");
|
||||||
MessageReceived += (s, e) => logger.Info($"Message Received: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
|
MessageReceived += (s, e) => _logger.Info($"Message Received: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
|
||||||
MessageDeleted += (s, e) => logger.Info($"Message Deleted: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
|
MessageDeleted += (s, e) => _logger.Info($"Message Deleted: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
|
||||||
MessageUpdated += (s, e) => logger.Info($"Message Update: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
|
MessageUpdated += (s, e) => _logger.Info($"Message Update: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
|
||||||
RoleCreated += (s, e) => logger.Info($"Role Created: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}");
|
RoleCreated += (s, e) => _logger.Info($"Role Created: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}");
|
||||||
RoleUpdated += (s, e) => logger.Info($"Role Updated: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}");
|
RoleUpdated += (s, e) => _logger.Info($"Role Updated: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}");
|
||||||
RoleDeleted += (s, e) => logger.Info($"Role Deleted: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}");
|
RoleDeleted += (s, e) => _logger.Info($"Role Deleted: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}");
|
||||||
UserBanned += (s, e) => logger.Info($"Banned User: {e.Server?.Name ?? "[Private]" }/{e.UserId}");
|
UserBanned += (s, e) => _logger.Info($"Banned User: {e.Server?.Name ?? "[Private]" }/{e.UserId}");
|
||||||
UserUnbanned += (s, e) => logger.Info($"Unbanned User: {e.Server?.Name ?? "[Private]"}/{e.UserId}");
|
UserUnbanned += (s, e) => _logger.Info($"Unbanned User: {e.Server?.Name ?? "[Private]"}/{e.UserId}");
|
||||||
UserJoined += (s, e) => logger.Info($"User Joined: {e.Server?.Name ?? "[Private]"}/{e.User.Name}");
|
UserJoined += (s, e) => _logger.Info($"User Joined: {e.Server?.Name ?? "[Private]"}/{e.User.Name}");
|
||||||
UserLeft += (s, e) => logger.Info($"User Left: {e.Server?.Name ?? "[Private]"}/{e.User.Name}");
|
UserLeft += (s, e) => _logger.Info($"User Left: {e.Server?.Name ?? "[Private]"}/{e.User.Name}");
|
||||||
UserUpdated += (s, e) => logger.Info($"User Updated: {e.Server?.Name ?? "[Private]"}/{e.User.Name}");
|
UserUpdated += (s, e) => _logger.Info($"User Updated: {e.Server?.Name ?? "[Private]"}/{e.User.Name}");
|
||||||
UserVoiceStateUpdated += (s, e) => logger.Info($"Voice Updated: {e.Server?.Name ?? "[Private]"}/{e.User.Name}");
|
UserVoiceStateUpdated += (s, e) => _logger.Info($"Voice Updated: {e.Server?.Name ?? "[Private]"}/{e.User.Name}");
|
||||||
ProfileUpdated += (s, e) => logger.Info("Profile Updated");
|
ProfileUpdated += (s, e) => _logger.Info("Profile Updated");
|
||||||
}
|
}
|
||||||
if (_log.Level >= LogSeverity.Verbose)
|
|
||||||
{
|
|
||||||
UserIsTypingUpdated += (s, e) => logger.Verbose($"Is Typing: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.User?.Name}");
|
|
||||||
MessageAcknowledged += (s, e) => logger.Verbose($"Ack Message: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
|
|
||||||
MessageSent += (s, e) => logger.Verbose($"Sent Message: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
|
|
||||||
UserPresenceUpdated += (s, e) => logger.Verbose($"Presence Updated: {e.Server?.Name ?? "[Private]"}/{e.User?.Name}");
|
|
||||||
}
|
|
||||||
return logger;
|
|
||||||
}
|
|
||||||
private Logger CreateRestLogger()
|
|
||||||
{
|
|
||||||
Logger logger = null;
|
|
||||||
if (_log.Level >= LogSeverity.Verbose)
|
if (_log.Level >= LogSeverity.Verbose)
|
||||||
{
|
{
|
||||||
logger = _log.CreateLogger("Rest");
|
UserIsTypingUpdated += (s, e) => _logger.Verbose($"Is Typing: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.User?.Name}");
|
||||||
_rest.OnRequest += (s, e) =>
|
MessageAcknowledged += (s, e) => _logger.Verbose($"Ack Message: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
|
||||||
{
|
MessageSent += (s, e) => _logger.Verbose($"Sent Message: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
|
||||||
if (e.Payload != null)
|
UserPresenceUpdated += (s, e) => _logger.Verbose($"Presence Updated: {e.Server?.Name ?? "[Private]"}/{e.User?.Name}");
|
||||||
logger.Verbose( $"{e.Method} {e.Path}: {Math.Round(e.ElapsedMilliseconds, 2)} ms ({e.Payload})");
|
|
||||||
else
|
|
||||||
logger.Verbose( $"{e.Method} {e.Path}: {Math.Round(e.ElapsedMilliseconds, 2)} ms");
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
return logger;
|
|
||||||
}
|
if (_log.Level >= LogSeverity.Verbose)
|
||||||
private Logger CreateCacheLogger()
|
{
|
||||||
{
|
_clientRest.OnRequest += (s, e) =>
|
||||||
Logger logger = null;
|
{
|
||||||
|
if (e.Payload != null)
|
||||||
|
_restLogger.Verbose($"{e.Method} {e.Path}: {Math.Round(e.ElapsedMilliseconds, 2)} ms ({e.Payload})");
|
||||||
|
else
|
||||||
|
_restLogger.Verbose($"{e.Method} {e.Path}: {Math.Round(e.ElapsedMilliseconds, 2)} ms");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if (_log.Level >= LogSeverity.Debug)
|
if (_log.Level >= LogSeverity.Debug)
|
||||||
{
|
{
|
||||||
logger = _log.CreateLogger("Cache");
|
_channels.ItemCreated += (s, e) => _cacheLogger.Debug($"Created Channel {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
||||||
_channels.ItemCreated += (s, e) => logger.Debug( $"Created Channel {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
_channels.ItemDestroyed += (s, e) => _cacheLogger.Debug($"Destroyed Channel {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
||||||
_channels.ItemDestroyed += (s, e) => logger.Debug( $"Destroyed Channel {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
_channels.Cleared += (s, e) => _cacheLogger.Debug($"Cleared Channels");
|
||||||
_channels.Cleared += (s, e) => logger.Debug( $"Cleared Channels");
|
_users.ItemCreated += (s, e) => _cacheLogger.Debug($"Created User {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
||||||
_users.ItemCreated += (s, e) => logger.Debug( $"Created User {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
_users.ItemDestroyed += (s, e) => _cacheLogger.Debug($"Destroyed User {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
||||||
_users.ItemDestroyed += (s, e) => logger.Debug( $"Destroyed User {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
_users.Cleared += (s, e) => _cacheLogger.Debug($"Cleared Users");
|
||||||
_users.Cleared += (s, e) => logger.Debug( $"Cleared Users");
|
_messages.ItemCreated += (s, e) => _cacheLogger.Debug($"Created Message {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Channel.Id}/{e.Item.Id}");
|
||||||
_messages.ItemCreated += (s, e) => logger.Debug( $"Created Message {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Channel.Id}/{e.Item.Id}");
|
_messages.ItemDestroyed += (s, e) => _cacheLogger.Debug($"Destroyed Message {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Channel.Id}/{e.Item.Id}");
|
||||||
_messages.ItemDestroyed += (s, e) => logger.Debug( $"Destroyed Message {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Channel.Id}/{e.Item.Id}");
|
_messages.ItemRemapped += (s, e) => _cacheLogger.Debug($"Remapped Message {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Channel.Id}/[{e.OldId} -> {e.NewId}]");
|
||||||
_messages.ItemRemapped += (s, e) => logger.Debug( $"Remapped Message {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Channel.Id}/[{e.OldId} -> {e.NewId}]");
|
_messages.Cleared += (s, e) => _cacheLogger.Debug($"Cleared Messages");
|
||||||
_messages.Cleared += (s, e) => logger.Debug( $"Cleared Messages");
|
_roles.ItemCreated += (s, e) => _cacheLogger.Debug($"Created Role {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
||||||
_roles.ItemCreated += (s, e) => logger.Debug( $"Created Role {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
_roles.ItemDestroyed += (s, e) => _cacheLogger.Debug($"Destroyed Role {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
||||||
_roles.ItemDestroyed += (s, e) => logger.Debug( $"Destroyed Role {IdConvert.ToString(e.Item.Server?.Id) ?? "[Private]"}/{e.Item.Id}");
|
_roles.Cleared += (s, e) => _cacheLogger.Debug($"Cleared Roles");
|
||||||
_roles.Cleared += (s, e) => logger.Debug( $"Cleared Roles");
|
_servers.ItemCreated += (s, e) => _cacheLogger.Debug($"Created Server {e.Item.Id}");
|
||||||
_servers.ItemCreated += (s, e) => logger.Debug( $"Created Server {e.Item.Id}");
|
_servers.ItemDestroyed += (s, e) => _cacheLogger.Debug($"Destroyed Server {e.Item.Id}");
|
||||||
_servers.ItemDestroyed += (s, e) => logger.Debug( $"Destroyed Server {e.Item.Id}");
|
_servers.Cleared += (s, e) => _cacheLogger.Debug($"Cleared Servers");
|
||||||
_servers.Cleared += (s, e) => logger.Debug( $"Cleared Servers");
|
_globalUsers.ItemCreated += (s, e) => _cacheLogger.Debug($"Created User {e.Item.Id}");
|
||||||
_globalUsers.ItemCreated += (s, e) => logger.Debug( $"Created User {e.Item.Id}");
|
_globalUsers.ItemDestroyed += (s, e) => _cacheLogger.Debug($"Destroyed User {e.Item.Id}");
|
||||||
_globalUsers.ItemDestroyed += (s, e) => logger.Debug( $"Destroyed User {e.Item.Id}");
|
_globalUsers.Cleared += (s, e) => _cacheLogger.Debug($"Cleared Users");
|
||||||
_globalUsers.Cleared += (s, e) => logger.Debug( $"Cleared Users");
|
|
||||||
}
|
}
|
||||||
return logger;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Connects to the Discord server with the provided email and password. </summary>
|
/// <summary> Connects to the Discord server with the provided email and password. </summary>
|
||||||
@@ -342,7 +329,7 @@ namespace Discord
|
|||||||
if (token == null)
|
if (token == null)
|
||||||
{
|
{
|
||||||
var request = new LoginRequest() { Email = email, Password = password };
|
var request = new LoginRequest() { Email = email, Password = password };
|
||||||
var response = await _rest.Send(request).ConfigureAwait(false);
|
var response = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
token = response.Token;
|
token = response.Token;
|
||||||
SaveToken(tokenPath, key, token);
|
SaveToken(tokenPath, key, token);
|
||||||
useCache = false;
|
useCache = false;
|
||||||
@@ -351,17 +338,17 @@ namespace Discord
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var request = new LoginRequest() { Email = email, Password = password };
|
var request = new LoginRequest() { Email = email, Password = password };
|
||||||
var response = await _rest.Send(request).ConfigureAwait(false);
|
var response = await _clientRest.Send(request).ConfigureAwait(false);
|
||||||
token = response.Token;
|
token = response.Token;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_token = token;
|
_token = token;
|
||||||
_rest.SetToken(token);
|
_clientRest.SetToken(token);
|
||||||
|
|
||||||
//Get gateway and check token
|
//Get gateway and check token
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var gatewayResponse = await _rest.Send(new GatewayRequest()).ConfigureAwait(false);
|
var gatewayResponse = await _clientRest.Send(new GatewayRequest()).ConfigureAwait(false);
|
||||||
var gateway = gatewayResponse.Url;
|
var gateway = gatewayResponse.Url;
|
||||||
_gateway = gateway;
|
_gateway = gateway;
|
||||||
if (_config.LogLevel >= LogSeverity.Verbose)
|
if (_config.LogLevel >= LogSeverity.Verbose)
|
||||||
@@ -395,7 +382,7 @@ namespace Discord
|
|||||||
while (_pendingMessages.TryDequeue(out ignored)) { }
|
while (_pendingMessages.TryDequeue(out ignored)) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
await _rest.Send(new LogoutRequest()).ConfigureAwait(false);
|
await _clientRest.Send(new LogoutRequest()).ConfigureAwait(false);
|
||||||
|
|
||||||
_channels.Clear();
|
_channels.Clear();
|
||||||
_users.Clear();
|
_users.Clear();
|
||||||
@@ -722,7 +709,7 @@ namespace Discord
|
|||||||
case "VOICE_STATE_UPDATE":
|
case "VOICE_STATE_UPDATE":
|
||||||
{
|
{
|
||||||
var data = e.Payload.ToObject<VoiceStateUpdateEvent>(_webSocket.Serializer);
|
var data = e.Payload.ToObject<VoiceStateUpdateEvent>(_webSocket.Serializer);
|
||||||
var user = _users[data.User.Id, data.GuildId];
|
var user = _users[data.UserId, data.GuildId];
|
||||||
if (user != null)
|
if (user != null)
|
||||||
{
|
{
|
||||||
/*var voiceChannel = user.VoiceChannel;
|
/*var voiceChannel = user.VoiceChannel;
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
foreach (var subModel in model.VoiceStates)
|
foreach (var subModel in model.VoiceStates)
|
||||||
{
|
{
|
||||||
var user = usersCache[subModel.User.Id, Id];
|
var user = usersCache[subModel.UserId, Id];
|
||||||
if (user != null)
|
if (user != null)
|
||||||
user.Update(subModel);
|
user.Update(subModel);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ namespace Discord.Net.Rest
|
|||||||
private readonly IRestEngine _engine;
|
private readonly IRestEngine _engine;
|
||||||
private CancellationToken _cancelToken;
|
private CancellationToken _cancelToken;
|
||||||
|
|
||||||
public RestClient(DiscordConfig config, Logger logger)
|
public RestClient(DiscordConfig config, Logger logger, string baseUrl)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
#if !DOTNET5_4
|
#if !DOTNET5_4
|
||||||
_engine = new RestSharpEngine(config, logger, DiscordConfig.ClientAPIUrl);
|
_engine = new RestSharpEngine(config, logger, baseUrl);
|
||||||
#else
|
#else
|
||||||
//_engine = new BuiltInRestEngine(config, logger);
|
//_engine = new BuiltInRestEngine(config, logger, baseUrl);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
#if !DOTNET5_4
|
#if !DOTNET5_4
|
||||||
using Discord.API;
|
|
||||||
using RestSharp;
|
using RestSharp;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|||||||
Reference in New Issue
Block a user