Browse Source

More bug fixes

tags/docs-0.9
RogueException 9 years ago
parent
commit
f913734782
5 changed files with 29 additions and 22 deletions
  1. +1
    -2
      README.md
  2. +18
    -11
      src/Discord.Net/DiscordClient.cs
  3. +4
    -4
      src/Discord.Net/Net/RestClient.BuiltIn.cs
  4. +1
    -4
      src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs
  5. +5
    -1
      src/Discord.Net/Net/WebSockets/WebSocket.cs

+ 1
- 2
README.md View File

@@ -11,7 +11,7 @@ Discord.Net itself is also in alpha so several functions may be unstable or not
- Server Management (Servers, Channels, Messages, Invites)
- User Moderation (Kick/Ban/Unban/Mute/Unmute/Deafen/Undeafen)
- Alpha Voice Support (Outgoing only currently)
- Supports .Net 4.5 and DNX 4.5.1
- Supports .Net 4.5, DNX 4.5.1 and DNX Core 5.0 (Windows only)

### NuGet Packages
- [Discord.Net](https://www.nuget.org/packages/Discord.Net/)
@@ -55,4 +55,3 @@ await client.AcceptInvite("channel-invite-code");
### Known Issues
- Due to current Discord restrictions, private messages are blocked unless both the sender and recipient are members of the same server.
- Caches do not currently clean up when their entries are no longer referenced, and there is no cap to the message cache. For now, disconencting and reconnecting will clear all caches.
- DNX Core 5.0 support is waiting on websockets to be implemented.

+ 18
- 11
src/Discord.Net/DiscordClient.cs View File

@@ -79,7 +79,8 @@ namespace Discord
_api = new DiscordAPIClient(_config.LogLevel);
_dataSocket = new DataWebSocket(this);
_dataSocket.Connected += (s, e) => { if (_state == (int)DiscordClientState.Connecting) CompleteConnect(); };
_voiceSocket = new VoiceWebSocket(this);
if (_config.EnableVoice)
_voiceSocket = new VoiceWebSocket(this);

_channels = new Channels(this);
_members = new Members(this);
@@ -89,14 +90,18 @@ namespace Discord
_users = new Users(this);

_dataSocket.LogMessage += (s, e) => RaiseOnLog(e.Severity, LogMessageSource.DataWebSocket, e.Message);
_voiceSocket.LogMessage += (s, e) => RaiseOnLog(e.Severity, LogMessageSource.VoiceWebSocket, e.Message);
if (_config.EnableVoice)
_voiceSocket.LogMessage += (s, e) => RaiseOnLog(e.Severity, LogMessageSource.VoiceWebSocket, e.Message);
if (_config.LogLevel >= LogMessageSeverity.Info)
{
_dataSocket.Connected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, "Connected");
_dataSocket.Disconnected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, "Disconnected");
_dataSocket.ReceievedEvent += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, $"Receieved {e.Type}");
_voiceSocket.Connected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.VoiceWebSocket, "Connected");
_voiceSocket.Disconnected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.VoiceWebSocket, "Disconnected");
if (_config.EnableVoice)
{
_voiceSocket.Connected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.VoiceWebSocket, "Connected");
_voiceSocket.Disconnected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.VoiceWebSocket, "Disconnected");
}
}
if (_config.LogLevel >= LogMessageSeverity.Verbose)
{
@@ -115,7 +120,7 @@ namespace Discord
MessageReadRemotely += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Read Message (Remotely): {e.Server.Name}/{e.Channel.Name}/{e.MessageId} ({e.ServerId}/{e.ChannelId}/{e.MessageId})");
MessageSent += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Sent Message: {e.Server.Name}/{e.Channel.Name}/{e.MessageId} ({e.ServerId}/{e.ChannelId}/{e.MessageId})");
RoleCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Created Role: {e.Server.Name}/{e.Role.Name} ({e.ServerId}/{e.RoleId}).");
RoleUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Update Role: {e.Server.Name}/{e.Role.Name} ({e.ServerId}/{e.RoleId}).");
RoleUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Role: {e.Server.Name}/{e.Role.Name} ({e.ServerId}/{e.RoleId}).");
RoleDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Deleted Role: {e.Server.Name}/{e.Role.Name} ({e.ServerId}/{e.RoleId}).");
BanAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Added Ban: {e.Server.Name}/{e.User?.Name ?? "Unknown"} ({e.ServerId}/{e.UserId}).");
BanRemoved += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Removed Ban: {e.Server.Name}/{e.User?.Name ?? "Unknown"} ({e.ServerId}/{e.UserId}).");
@@ -137,16 +142,16 @@ namespace Discord
_messages.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Created Message {e.Item.ServerId}/{e.Item.ChannelId}/{e.Item.Id}");
_messages.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Destroyed Message {e.Item.ServerId}/{e.Item.ChannelId}/{e.Item.Id}");
_messages.ItemRemapped += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Remapped Message {e.Item.ServerId}/{e.Item.ChannelId}/[{e.OldId} -> {e.NewId}]");
_messages.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Cleared Members");
_messages.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Cleared Messages");
_roles.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Created Role {e.Item.ServerId}/{e.Item.Id}");
_roles.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Destroyed Role {e.Item.ServerId}/{e.Item.Id}");
_roles.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Cleared Members");
_roles.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Cleared Roles");
_servers.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Created Server {e.Item.Id}");
_servers.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Destroyed Server {e.Item.Id}");
_servers.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Cleared Members");
_servers.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Cleared Servers");
_users.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Created User {e.Item.Id}");
_users.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Destroyed User {e.Item.Id}");
_users.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Cleared Members");
_users.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Cache, $"Cleared Users");

_api.RestClient.OnRequest += (s, e) =>
{
@@ -514,12 +519,14 @@ namespace Discord

try
{
if (!_connectedEvent.Wait(_config.ConnectionTimeout, CancellationTokenSource.CreateLinkedTokenSource(_cancelToken.Token, _dataSocket.CancelToken).Token))
//Cancel if either Disconnect is called, data socket errors or timeout is reached
var cancelToken = CancellationTokenSource.CreateLinkedTokenSource(_cancelToken.Token, _dataSocket.CancelToken).Token;
if (!_connectedEvent.Wait(_config.ConnectionTimeout, cancelToken))
throw new Exception("Operation timed out.");
}
catch (OperationCanceledException)
{
_dataSocket.ThrowError();
_dataSocket.ThrowError(); //Throws data socket's internal error if any occured
throw;
}



+ 4
- 4
src/Discord.Net/Net/RestClient.BuiltIn.cs View File

@@ -35,23 +35,23 @@ namespace Discord.Net
_client.DefaultRequestHeaders.Add("authorization", token);
}

public Task<string> Send(HttpMethod method, string path, string json, CancellationToken cancelToken)
public async Task<string> Send(HttpMethod method, string path, string json, CancellationToken cancelToken)
{
using (var request = new HttpRequestMessage(method, Endpoints.BaseApi + path))
{
if (json != null)
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
return Send(request, cancelToken);
return await Send(request, cancelToken);
}
}
public Task<string> SendFile(HttpMethod method, string path, string filePath, CancellationToken cancelToken)
public async Task<string> SendFile(HttpMethod method, string path, string filePath, CancellationToken cancelToken)
{
using (var request = new HttpRequestMessage(method, Endpoints.BaseApi + path))
{
var content = new MultipartFormDataContent("Upload----" + DateTime.Now.ToString(CultureInfo.InvariantCulture));
content.Add(new StreamContent(File.OpenRead(filePath)), "file", Path.GetFileName(filePath));
request.Content = content;
return Send(request, cancelToken);
return await Send(request, cancelToken);
}
}
private async Task<string> Send(HttpRequestMessage request, CancellationToken cancelToken)


+ 1
- 4
src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs View File

@@ -89,10 +89,7 @@ namespace Discord.Net.WebSockets

}
while (result == null || !result.EndOfMessage);

#if DEBUG
System.Diagnostics.Debug.WriteLine(">>> " + builder.ToString());
#endif
RaiseProcessMessage(builder.ToString());

builder.Clear();


+ 5
- 1
src/Discord.Net/Net/WebSockets/WebSocket.cs View File

@@ -197,7 +197,11 @@ namespace Discord.Net.WebSockets
internal void ThrowError()
{
if (_wasDisconnectUnexpected)
_disconnectReason.Throw();
{
var reason = _disconnectReason;
_disconnectReason = null;
reason.Throw();
}
}
}
}

Loading…
Cancel
Save