| @@ -28,7 +28,7 @@ namespace Discord.Commands | |||||
| RequireCommandCharInPublic = true; | RequireCommandCharInPublic = true; | ||||
| RequireCommandCharInPrivate = true; | RequireCommandCharInPrivate = true; | ||||
| client.MessageCreated += async (s, e) => | |||||
| client.MessageReceived += async (s, e) => | |||||
| { | { | ||||
| //If commands aren't being used, don't bother processing them | //If commands aren't being used, don't bother processing them | ||||
| if (_commands.Count == 0) | if (_commands.Count == 0) | ||||
| @@ -18,17 +18,17 @@ namespace Discord | |||||
| public partial class DiscordClient | public partial class DiscordClient | ||||
| { | { | ||||
| public event EventHandler<BanEventArgs> BanAdded; | |||||
| private void RaiseBanAdded(string userId, Server server) | |||||
| public event EventHandler<BanEventArgs> UserBanned; | |||||
| private void RaiseUserBanned(string userId, Server server) | |||||
| { | { | ||||
| if (BanAdded != null) | |||||
| RaiseEvent(nameof(BanAdded), () => BanAdded(this, new BanEventArgs(userId, server))); | |||||
| if (UserBanned != null) | |||||
| RaiseEvent(nameof(UserBanned), () => UserBanned(this, new BanEventArgs(userId, server))); | |||||
| } | } | ||||
| public event EventHandler<BanEventArgs> BanRemoved; | |||||
| private void RaiseBanRemoved(string userId, Server server) | |||||
| public event EventHandler<BanEventArgs> UserUnbanned; | |||||
| private void RaiseUserUnbanned(string userId, Server server) | |||||
| { | { | ||||
| if (BanRemoved != null) | |||||
| RaiseEvent(nameof(BanRemoved), () => BanRemoved(this, new BanEventArgs(userId, server))); | |||||
| if (UserUnbanned != null) | |||||
| RaiseEvent(nameof(UserUnbanned), () => UserUnbanned(this, new BanEventArgs(userId, server))); | |||||
| } | } | ||||
| /// <summary> Bans a user from the provided server. </summary> | /// <summary> Bans a user from the provided server. </summary> | ||||
| @@ -45,11 +45,17 @@ namespace Discord | |||||
| { | { | ||||
| public const int MaxMessageSize = 2000; | public const int MaxMessageSize = 2000; | ||||
| public event EventHandler<MessageEventArgs> MessageCreated; | |||||
| public event EventHandler<MessageEventArgs> MessageReceived; | |||||
| private void RaiseMessageCreated(Message msg) | private void RaiseMessageCreated(Message msg) | ||||
| { | { | ||||
| if (MessageCreated != null) | |||||
| RaiseEvent(nameof(MessageCreated), () => MessageCreated(this, new MessageEventArgs(msg))); | |||||
| if (MessageReceived != null) | |||||
| RaiseEvent(nameof(MessageReceived), () => MessageReceived(this, new MessageEventArgs(msg))); | |||||
| } | |||||
| public event EventHandler<MessageEventArgs> MessageSent; | |||||
| private void RaiseMessageSent(Message msg) | |||||
| { | |||||
| if (MessageSent != null) | |||||
| RaiseEvent(nameof(MessageSent), () => MessageSent(this, new MessageEventArgs(msg))); | |||||
| } | } | ||||
| public event EventHandler<MessageEventArgs> MessageDeleted; | public event EventHandler<MessageEventArgs> MessageDeleted; | ||||
| private void RaiseMessageDeleted(Message msg) | private void RaiseMessageDeleted(Message msg) | ||||
| @@ -69,12 +75,6 @@ namespace Discord | |||||
| if (MessageReadRemotely != null) | if (MessageReadRemotely != null) | ||||
| RaiseEvent(nameof(MessageReadRemotely), () => MessageReadRemotely(this, new MessageEventArgs(msg))); | RaiseEvent(nameof(MessageReadRemotely), () => MessageReadRemotely(this, new MessageEventArgs(msg))); | ||||
| } | } | ||||
| public event EventHandler<MessageEventArgs> MessageSent; | |||||
| private void RaiseMessageSent(Message msg) | |||||
| { | |||||
| if (MessageSent != null) | |||||
| RaiseEvent(nameof(MessageSent), () => MessageSent(this, new MessageEventArgs(msg))); | |||||
| } | |||||
| internal Messages Messages => _messages; | internal Messages Messages => _messages; | ||||
| private readonly Messages _messages; | private readonly Messages _messages; | ||||
| @@ -60,17 +60,17 @@ namespace Discord | |||||
| public partial class DiscordClient | public partial class DiscordClient | ||||
| { | { | ||||
| public event EventHandler<UserChannelEventArgs> UserIsTyping; | |||||
| public event EventHandler<UserChannelEventArgs> UserIsTypingUpdated; | |||||
| private void RaiseUserIsTyping(User user, Channel channel) | private void RaiseUserIsTyping(User user, Channel channel) | ||||
| { | { | ||||
| if (UserIsTyping != null) | |||||
| RaiseEvent(nameof(UserIsTyping), () => UserIsTyping(this, new UserChannelEventArgs(user, channel))); | |||||
| if (UserIsTypingUpdated != null) | |||||
| RaiseEvent(nameof(UserIsTypingUpdated), () => UserIsTypingUpdated(this, new UserChannelEventArgs(user, channel))); | |||||
| } | } | ||||
| public event EventHandler<UserIsSpeakingEventArgs> UserIsSpeaking; | |||||
| public event EventHandler<UserIsSpeakingEventArgs> UserIsSpeakingUpdated; | |||||
| private void RaiseUserIsSpeaking(User user, Channel channel, bool isSpeaking) | private void RaiseUserIsSpeaking(User user, Channel channel, bool isSpeaking) | ||||
| { | { | ||||
| if (UserIsSpeaking != null) | |||||
| RaiseEvent(nameof(UserIsSpeaking), () => UserIsSpeaking(this, new UserIsSpeakingEventArgs(user, channel, isSpeaking))); | |||||
| if (UserIsSpeakingUpdated != null) | |||||
| RaiseEvent(nameof(UserIsSpeakingUpdated), () => UserIsSpeakingUpdated(this, new UserIsSpeakingEventArgs(user, channel, isSpeaking))); | |||||
| } | } | ||||
| public event EventHandler<UserEventArgs> UserAdded; | public event EventHandler<UserEventArgs> UserAdded; | ||||
| private void RaiseUserAdded(User user) | private void RaiseUserAdded(User user) | ||||
| @@ -84,12 +84,6 @@ namespace Discord | |||||
| if (UserRemoved != null) | if (UserRemoved != null) | ||||
| RaiseEvent(nameof(UserRemoved), () => UserRemoved(this, new UserEventArgs(user))); | RaiseEvent(nameof(UserRemoved), () => UserRemoved(this, new UserEventArgs(user))); | ||||
| } | } | ||||
| public event EventHandler ProfileUpdated; | |||||
| private void RaiseProfileUpdated() | |||||
| { | |||||
| if (ProfileUpdated != null) | |||||
| RaiseEvent(nameof(ProfileUpdated), () => ProfileUpdated(this, EventArgs.Empty)); | |||||
| } | |||||
| public event EventHandler<UserEventArgs> UserUpdated; | public event EventHandler<UserEventArgs> UserUpdated; | ||||
| private void RaiseMemberUpdated(User user) | private void RaiseMemberUpdated(User user) | ||||
| { | { | ||||
| @@ -108,7 +102,15 @@ namespace Discord | |||||
| if (UserVoiceStateUpdated != null) | if (UserVoiceStateUpdated != null) | ||||
| RaiseEvent(nameof(UserVoiceStateUpdated), () => UserVoiceStateUpdated(this, new UserEventArgs(user))); | RaiseEvent(nameof(UserVoiceStateUpdated), () => UserVoiceStateUpdated(this, new UserEventArgs(user))); | ||||
| } | } | ||||
| public event EventHandler ProfileUpdated; | |||||
| private void RaiseProfileUpdated() | |||||
| { | |||||
| if (ProfileUpdated != null) | |||||
| RaiseEvent(nameof(ProfileUpdated), () => ProfileUpdated(this, EventArgs.Empty)); | |||||
| } | |||||
| /// <summary> Returns the current logged-in user. </summary> | |||||
| public User CurrentUser => _currentUser; | |||||
| private User _currentUser; | private User _currentUser; | ||||
| /// <summary> Returns a collection of all users this client can currently see. </summary> | /// <summary> Returns a collection of all users this client can currently see. </summary> | ||||
| @@ -22,14 +22,12 @@ namespace Discord | |||||
| private UserStatus _status; | private UserStatus _status; | ||||
| private int? _gameId; | private int? _gameId; | ||||
| /// <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 new DiscordClientConfig Config => _config as DiscordClientConfig; | public new DiscordClientConfig Config => _config as DiscordClientConfig; | ||||
| /// <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 DiscordAPIClient API => _api; | public DiscordAPIClient API => _api; | ||||
| /// <summary> Returns the current logged-in user. </summary> | |||||
| public User CurrentUser => _currentUser; | |||||
| /// <summary> Initializes a new instance of the DiscordClient class. </summary> | /// <summary> Initializes a new instance of the DiscordClient class. </summary> | ||||
| public DiscordClient(DiscordClientConfig config = null) | public DiscordClient(DiscordClientConfig config = null) | ||||
| : base(config ?? new DiscordClientConfig()) | : base(config ?? new DiscordClientConfig()) | ||||
| @@ -91,7 +89,7 @@ namespace Discord | |||||
| $"Channel Destroyed: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}"); | $"Channel Destroyed: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}"); | ||||
| ChannelUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | ChannelUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | ||||
| $"Channel Updated: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}"); | $"Channel Updated: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}"); | ||||
| MessageCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | |||||
| MessageReceived += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | |||||
| $"Message Created: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}"); | $"Message Created: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}"); | ||||
| MessageDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | MessageDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | ||||
| $"Message Deleted: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}"); | $"Message Deleted: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}"); | ||||
| @@ -103,9 +101,9 @@ namespace Discord | |||||
| $"Role Updated: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}"); | $"Role Updated: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}"); | ||||
| RoleDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | RoleDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | ||||
| $"Role Deleted: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}"); | $"Role Deleted: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}"); | ||||
| BanAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | |||||
| UserBanned += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | |||||
| $"Banned User: {e.Server?.Name ?? "[Private]" }/{e.UserId}"); | $"Banned User: {e.Server?.Name ?? "[Private]" }/{e.UserId}"); | ||||
| BanRemoved += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | |||||
| UserUnbanned += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | |||||
| $"Unbanned User: {e.Server?.Name ?? "[Private]"}/{e.UserId}"); | $"Unbanned User: {e.Server?.Name ?? "[Private]"}/{e.UserId}"); | ||||
| UserAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | UserAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, | ||||
| $"User Joined: {e.Server?.Name ?? "[Private]"}/{e.User.Id}"); | $"User Joined: {e.Server?.Name ?? "[Private]"}/{e.User.Id}"); | ||||
| @@ -120,7 +118,7 @@ namespace Discord | |||||
| } | } | ||||
| if (_config.LogLevel >= LogMessageSeverity.Verbose) | if (_config.LogLevel >= LogMessageSeverity.Verbose) | ||||
| { | { | ||||
| UserIsTyping += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, | |||||
| UserIsTypingUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, | |||||
| $"Updated User (Is Typing): {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.User?.Name}"); | $"Updated User (Is Typing): {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.User?.Name}"); | ||||
| MessageReadRemotely += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, | MessageReadRemotely += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, | ||||
| $"Read Message (Remotely): {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}"); | $"Read Message (Remotely): {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}"); | ||||
| @@ -465,7 +463,7 @@ namespace Discord | |||||
| if (server != null) | if (server != null) | ||||
| { | { | ||||
| server.AddBan(data.User?.Id); | server.AddBan(data.User?.Id); | ||||
| RaiseBanAdded(data.User?.Id, server); | |||||
| RaiseUserBanned(data.User?.Id, server); | |||||
| } | } | ||||
| } | } | ||||
| break; | break; | ||||
| @@ -474,7 +472,7 @@ namespace Discord | |||||
| var data = e.Payload.ToObject<BanRemoveEvent>(_serializer); | var data = e.Payload.ToObject<BanRemoveEvent>(_serializer); | ||||
| var server = _servers[data.GuildId]; | var server = _servers[data.GuildId]; | ||||
| if (server != null && server.RemoveBan(data.User?.Id)) | if (server != null && server.RemoveBan(data.User?.Id)) | ||||
| RaiseBanRemoved(data.User?.Id, server); | |||||
| RaiseUserUnbanned(data.User?.Id, server); | |||||
| } | } | ||||
| break; | break; | ||||
| @@ -101,8 +101,8 @@ namespace Discord.Tests | |||||
| AssertEvent<MessageEventArgs>( | AssertEvent<MessageEventArgs>( | ||||
| "MessageCreated event never received", | "MessageCreated event never received", | ||||
| () => _hostClient.SendMessage(_testServerChannel, text), | () => _hostClient.SendMessage(_testServerChannel, text), | ||||
| x => _targetBot.MessageCreated += x, | |||||
| x => _targetBot.MessageCreated -= x, | |||||
| x => _targetBot.MessageReceived += x, | |||||
| x => _targetBot.MessageReceived -= x, | |||||
| (s, e) => e.Message.Text == text); | (s, e) => e.Message.Text == text); | ||||
| } | } | ||||