Crash fix and some added documentation.
This commit is contained in:
@@ -11,18 +11,18 @@ namespace Discord.Collections
|
|||||||
_msgCleaner = new MessageCleaner(client);
|
_msgCleaner = new MessageCleaner(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Message GetOrAdd(string id, string channelId) => GetOrAdd(id, () => new Message(_client, id, channelId));
|
internal Message GetOrAdd(string id, string channelId, string userId) => GetOrAdd(id, () => new Message(_client, id, channelId, userId));
|
||||||
internal new Message TryRemove(string id) => base.TryRemove(id);
|
internal new Message TryRemove(string id) => base.TryRemove(id);
|
||||||
internal new Message Remap(string oldKey, string newKey) => base.Remap(oldKey, newKey);
|
internal new Message Remap(string oldKey, string newKey) => base.Remap(oldKey, newKey);
|
||||||
|
|
||||||
protected override void OnCreated(Message item)
|
protected override void OnCreated(Message item)
|
||||||
{
|
{
|
||||||
item.Channel.AddMessage(item.UserId);
|
item.Channel.AddMessage(item.Id);
|
||||||
item.User.AddRef();
|
item.User.AddRef();
|
||||||
}
|
}
|
||||||
protected override void OnRemoved(Message item)
|
protected override void OnRemoved(Message item)
|
||||||
{
|
{
|
||||||
item.Channel.RemoveMessage(item.UserId);
|
item.Channel.RemoveMessage(item.Id);
|
||||||
item.User.RemoveRef();
|
item.User.RemoveRef();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ namespace Discord
|
|||||||
var nonce = GenerateNonce();
|
var nonce = GenerateNonce();
|
||||||
if (_config.UseMessageQueue)
|
if (_config.UseMessageQueue)
|
||||||
{
|
{
|
||||||
var msg = _messages.GetOrAdd("nonce_" + nonce, channelId);
|
var msg = _messages.GetOrAdd("nonce_" + nonce, channelId, _currentUserId);
|
||||||
msg.Update(new Net.API.Message
|
msg.Update(new Net.API.Message
|
||||||
{
|
{
|
||||||
Content = blockText,
|
Content = blockText,
|
||||||
@@ -269,9 +269,9 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var response = await _api.SendMessage(channelId, blockText, mentions, nonce).ConfigureAwait(false);
|
var model = await _api.SendMessage(channelId, blockText, mentions, nonce).ConfigureAwait(false);
|
||||||
var msg = _messages.GetOrAdd(response.Id, channelId);
|
var msg = _messages.GetOrAdd(model.Id, channelId, model.Author.Id);
|
||||||
msg.Update(response);
|
msg.Update(model);
|
||||||
try { RaiseMessageSent(result[i]); } catch { }
|
try { RaiseMessageSent(result[i]); } catch { }
|
||||||
}
|
}
|
||||||
await Task.Delay(1000).ConfigureAwait(false);
|
await Task.Delay(1000).ConfigureAwait(false);
|
||||||
@@ -319,9 +319,9 @@ namespace Discord
|
|||||||
if (text.Length > DiscordAPIClient.MaxMessageSize)
|
if (text.Length > DiscordAPIClient.MaxMessageSize)
|
||||||
text = text.Substring(0, DiscordAPIClient.MaxMessageSize);
|
text = text.Substring(0, DiscordAPIClient.MaxMessageSize);
|
||||||
|
|
||||||
var response = await _api.EditMessage(channelId, messageId, text, mentions).ConfigureAwait(false);
|
var model = await _api.EditMessage(channelId, messageId, text, mentions).ConfigureAwait(false);
|
||||||
var msg = _messages.GetOrAdd(messageId, channelId);
|
var msg = _messages.GetOrAdd(messageId, channelId, model.Author.Id);
|
||||||
msg.Update(response);
|
msg.Update(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Deletes the provided message. </summary>
|
/// <summary> Deletes the provided message. </summary>
|
||||||
@@ -402,7 +402,7 @@ namespace Discord
|
|||||||
var msgs = await _api.GetMessages(channel.Id, count).ConfigureAwait(false);
|
var msgs = await _api.GetMessages(channel.Id, count).ConfigureAwait(false);
|
||||||
return msgs.Select(x =>
|
return msgs.Select(x =>
|
||||||
{
|
{
|
||||||
var msg = _messages.GetOrAdd(x.Id, x.ChannelId);
|
var msg = _messages.GetOrAdd(x.Id, x.ChannelId, x.Author.Id);
|
||||||
msg.Update(x);
|
msg.Update(x);
|
||||||
if (_config.TrackActivity)
|
if (_config.TrackActivity)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -42,23 +42,36 @@ namespace Discord
|
|||||||
/// <summary> Returns the current logged-in user. </summary>
|
/// <summary> Returns the current logged-in user. </summary>
|
||||||
public User CurrentUser => _currentUser;
|
public User CurrentUser => _currentUser;
|
||||||
private User _currentUser;
|
private User _currentUser;
|
||||||
|
/// <summary> Returns the id of the server this user is currently connected to for voice. </summary>
|
||||||
|
public string CurrentVoiceServerId => _voiceSocket.CurrentVoiceServerId;
|
||||||
|
/// <summary> Returns the server this user is currently connected to for voice. </summary>
|
||||||
|
public Server CurrentVoiceServer => _servers[_voiceSocket.CurrentVoiceServerId];
|
||||||
|
|
||||||
|
/// <summary> Returns the current connection state of this client. </summary>
|
||||||
public DiscordClientState State => (DiscordClientState)_state;
|
public DiscordClientState State => (DiscordClientState)_state;
|
||||||
private int _state;
|
private int _state;
|
||||||
|
|
||||||
|
/// <summary> Returns the configuration object used to make this client. Note that this object cannot be edited directly - to change the configuration of this client, use the DiscordClient(DiscordClientConfig config) constructor. </summary>
|
||||||
public DiscordClientConfig Config => _config;
|
public DiscordClientConfig Config => _config;
|
||||||
private readonly DiscordClientConfig _config;
|
private readonly DiscordClientConfig _config;
|
||||||
|
|
||||||
|
/// <summary> Returns a collection of all channels this client is a member of. </summary>
|
||||||
public Channels Channels => _channels;
|
public Channels Channels => _channels;
|
||||||
private readonly Channels _channels;
|
private readonly Channels _channels;
|
||||||
|
/// <summary> Returns a collection of all user-server pairs this client can currently see. </summary>
|
||||||
public Members Members => _members;
|
public Members Members => _members;
|
||||||
private readonly Members _members;
|
private readonly Members _members;
|
||||||
|
/// <summary> Returns a collection of all messages this client has seen since logging in and currently has in cache. </summary>
|
||||||
public Messages Messages => _messages;
|
public Messages Messages => _messages;
|
||||||
private readonly Messages _messages;
|
private readonly Messages _messages;
|
||||||
|
//TODO: Do we need the roles cache?
|
||||||
|
/// <summary> Returns a collection of all role-server pairs this client can currently see. </summary>
|
||||||
public Roles Roles => _roles;
|
public Roles Roles => _roles;
|
||||||
private readonly Roles _roles;
|
private readonly Roles _roles;
|
||||||
|
/// <summary> Returns a collection of all servers this client is a member of. </summary>
|
||||||
public Servers Servers => _servers;
|
public Servers Servers => _servers;
|
||||||
private readonly Servers _servers;
|
private readonly Servers _servers;
|
||||||
|
/// <summary> Returns a collection of all users this client can currently see. </summary>
|
||||||
public Users Users => _users;
|
public Users Users => _users;
|
||||||
private readonly Users _users;
|
private readonly Users _users;
|
||||||
|
|
||||||
@@ -343,7 +356,7 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (msg == null)
|
if (msg == null)
|
||||||
msg = _messages.GetOrAdd(data.Id, data.ChannelId);
|
msg = _messages.GetOrAdd(data.Id, data.ChannelId, data.Author.Id);
|
||||||
msg.Update(data);
|
msg.Update(data);
|
||||||
if (_config.TrackActivity)
|
if (_config.TrackActivity)
|
||||||
msg.User.UpdateActivity(data.Timestamp);
|
msg.User.UpdateActivity(data.Timestamp);
|
||||||
@@ -355,7 +368,7 @@ namespace Discord
|
|||||||
case "MESSAGE_UPDATE":
|
case "MESSAGE_UPDATE":
|
||||||
{
|
{
|
||||||
var data = e.Payload.ToObject<Events.MessageUpdate>(_serializer);
|
var data = e.Payload.ToObject<Events.MessageUpdate>(_serializer);
|
||||||
var msg = _messages.GetOrAdd(data.Id, data.ChannelId);
|
var msg = _messages.GetOrAdd(data.Id, data.ChannelId, data.Author.Id);
|
||||||
msg.Update(data);
|
msg.Update(data);
|
||||||
RaiseEvent(nameof(MessageUpdated), () => RaiseMessageUpdated(msg));
|
RaiseEvent(nameof(MessageUpdated), () => RaiseMessageUpdated(msg));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,11 +114,12 @@ namespace Discord
|
|||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public Member Member => _client.Members[ServerId, UserId];
|
public Member Member => _client.Members[ServerId, UserId];
|
||||||
|
|
||||||
internal Message(DiscordClient client, string id, string channelId)
|
internal Message(DiscordClient client, string id, string channelId, string userId)
|
||||||
{
|
{
|
||||||
_client = client;
|
_client = client;
|
||||||
Id = id;
|
Id = id;
|
||||||
ChannelId = channelId;
|
ChannelId = channelId;
|
||||||
|
UserId = userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void Update(Net.API.Message model)
|
internal void Update(Net.API.Message model)
|
||||||
|
|||||||
Reference in New Issue
Block a user