public void RegisterEvents() { connection.On <ChatListModel>("NewChat", (chat) => { NewChat?.Invoke(chat); }); connection.On <MessageModel>("ReceiveMessage", (message) => { message.IsMyMessage = false; NewCompanionMessage?.Invoke(message); if (!Client.Notifications.Any(x => String.Equals(message.ChatId, x)) && !Properties.UserSettings.Default.AllNotifications) { Notify(message); } }); connection.On <MessageModel>("MessageDeleted", (message) => { MessageDeleted?.Invoke(message); }); connection.On <MessageModel>("MessageUpdated", (message) => { MessageUpdated?.Invoke(message); }); }
private async Task DiscordShardedClientOnMessageUpdated(Cacheable <IMessage, ulong> arg1, SocketMessage arg2, ISocketMessageChannel arg3) { if (MessageUpdated != null) { await MessageUpdated.Invoke(this, arg1, arg2, arg3).ConfigureAwait(false); } }
private async Task ReadOutputAsync(TextReader reader) { await Task.Run(() => { string processOutput; string lastMessage = null; while ((processOutput = reader.ReadLine()) != null) { lastMessage = processOutput; MessageUpdated?.Invoke(this, new MessageUpdatedEventArgs { Message = lastMessage }); } MessageUpdated?.Invoke(this, new MessageUpdatedEventArgs { Message = $@"[已完成]{lastMessage}" }); }); }
internal async Task OnMessageUpdated(Cacheable <IMessage, ulong> before, SocketMessage after, ISocketMessageChannel channel) => await(MessageUpdated?.Invoke(before, after, channel) ?? Task.CompletedTask);
void OnEvent(string eventname, int seq, JsonNode data) { sequence = seq; switch (eventname) { case "READY": gatewayversion = data.SelectValue <int>("v"); sessionid = data.SelectValue <string>("session_id"); OnConnected(); break; case "RESUMED": OnConnected(); break; case "INVALID_SESSION": Disconnect(1021, "Authentication failure", /*data.SelectValue<bool>("d")*/ false); break; case "CHANNEL_CREATE": ChannelCreated?.Invoke(JSON.Serializer.Read <Channel>(data)); break; case "CHANNEL_UPDATE": ChannelUpdated?.Invoke(JSON.Serializer.Read <Channel>(data)); break; case "CHANNEL_DELETE": ChannelDeleted?.Invoke(JSON.Serializer.Read <Channel>(data)); break; case "CHANNEL_PINS_UPDATED": ChannelPinUpdated?.Invoke(data.SelectValue <string>("channel_id")); break; case "MESSAGE_CREATE": MessageCreated?.Invoke(JSON.Serializer.Read <Message>(data)); break; case "MESSAGE_UPDATE": MessageUpdated?.Invoke(JSON.Serializer.Read <Message>(data)); break; case "MESSAGE_DELETE": MessageDeleted?.Invoke(data.SelectValue <string>("channel_id"), data.SelectValue <string>("id")); break; case "MESSAGE_DELETE_BULK": MessagesDeleted?.Invoke(data.SelectValue <string>("channel_id"), data.SelectValue <string[]>("ids")); break; case "GUILD_CREATE": GuildCreated?.Invoke(JSON.Serializer.Read <Guild>(data)); break; case "GUILD_UPDATE": GuildUpdated?.Invoke(JSON.Serializer.Read <Guild>(data)); break; case "GUILD_DELETE": GuildDeleted?.Invoke(JSON.Serializer.Read <UnavailableGuild>(data)); break; case "GUILD_BAN_ADD": UserBanned?.Invoke(JSON.Serializer.Read <GuildUser>(data)); break; case "GUILD_BAN_REMOVED": UserUnbanned?.Invoke(JSON.Serializer.Read <GuildUser>(data)); break; case "GUILD_EMOJIS_UPDATE": EmojisUpdated?.Invoke(data.SelectValue <string>("guild_id"), JSON.Serializer.Read <Emoji[]>(data["emojis"])); break; case "GUILD_INTEGRATIONS_UPDATE": GuildIntegrationsUpdated?.Invoke(data.SelectValue <string>("guild_id")); break; case "GUILD_MEMBER_ADD": GuildMemberAdded?.Invoke(data.SelectValue <string>("guild_id"), JSON.Serializer.Read <GuildMember>(data)); break; case "GUILD_MEMBER_REMOVE": GuildMemberRemoved?.Invoke(data.SelectValue <string>("guild_id"), JSON.Serializer.Read <User>(data)); break; case "GUILD_MEMBER_UPDATE": GuildMemberUpdated?.Invoke(data.SelectValue <string>("guild_id"), JSON.Serializer.Read <Role[]>(data["roles"]), JSON.Serializer.Read <User>(data["user"]), data.SelectValue <string>("nick")); break; case "GUILD_MEMBERS_CHUNK": GuildMembersChunk?.Invoke(data.SelectValue <string>("guild_id"), JSON.Serializer.Read <GuildMember[]>(data["members"])); break; case "GUILD_ROLE_CREATE": GuildRoleCreated?.Invoke(data.SelectValue <string>("guild_id"), JSON.Serializer.Read <Role>(data["role"])); break; case "GUILD_ROLE_UPDATE": GuildRoleUpdated?.Invoke(data.SelectValue <string>("guild_id"), JSON.Serializer.Read <Role>(data["role"])); break; case "GUILD_ROLE_DELETE": GuildRoleDeleted?.Invoke(data.SelectValue <string>("guild_id"), data.SelectValue <string>("role_id")); break; case "MESSAGE_REACTION_ADD": MessageReactionAdded?.Invoke(data.SelectValue <string>("user_id"), data.SelectValue <string>("channel_id"), data.SelectValue <string>("message_id"), JSON.Serializer.Read <Emoji>(data["emoji"])); break; case "MESSAGE_REACTION_REMOVE": MessageReactionRemoved?.Invoke(data.SelectValue <string>("user_id"), data.SelectValue <string>("channel_id"), data.SelectValue <string>("message_id"), JSON.Serializer.Read <Emoji>(data["emoji"])); break; case "MESSAGE_REACTION_REMOVE_ALL": MessageReactionRemovedAll?.Invoke(data.SelectValue <string>("channel_id"), data.SelectValue <string>("message_id")); break; case "PRESENCE_UPDATE": PresenceUpdated?.Invoke(JSON.Serializer.Read <PresenceUpdate>(data)); break; case "TYPING_START": TypingStarted?.Invoke(data.SelectValue <string>("guild_id"), data.SelectValue <string>("user_id"), data.SelectValue <int>("timestamp").ToDateTime()); break; case "USER_UPDATE": UserUpdated?.Invoke(JSON.Serializer.Read <User>(data)); break; case "VOICE_STATE_UPDATE": VoiceStateUpdated?.Invoke(JSON.Serializer.Read <VoiceState>(data)); break; case "VOICE_SERVER_UPDATE": VoiceServerUpdated?.Invoke(data.SelectValue <string>("token"), data.SelectValue <string>("guild_id"), data.SelectValue <string>("endpoint")); break; case "WEBHOOKS_UPDATE": WebhooksUpdated?.Invoke(data.SelectValue <string>("guild_id"), data.SelectValue <string>("channel_id")); break; default: Logger.Warning(this, $"'{eventname}' event not handled", data.ToString()); break; } }
private void SubscribeToEvents() { _subscriptions.Apply(x => x.Dispose()); _subscriptions.Clear(); #region Channel _subscriptions.Add(_connection.On <ChannelSummaryResponse>(ClientEvents.ChannelUpdated, channel => { ChannelUpdated?.Invoke(channel); })); _subscriptions.Add(_connection.On <Guid>(ClientEvents.ChannelClosed, channelId => { ChannelClosed?.Invoke(channelId); })); #endregion #region Message _subscriptions.Add(_connection.On <MessageResponse>(ClientEvents.MessageAdded, message => { MessageAdded?.Invoke(message); })); _subscriptions.Add(_connection.On <MessageResponse>(ClientEvents.MessageUpdated, message => { MessageUpdated?.Invoke(message); })); _subscriptions.Add(_connection.On <Guid, Guid>(ClientEvents.MessageDeleted, (deletedMessageId, channelId) => { MessageDeleted?.Invoke(deletedMessageId, channelId); })); _subscriptions.Add(_connection.On <Guid>(ClientEvents.LastReadMessageChanged, channelId => { LastReadMessageUpdated?.Invoke(channelId); })); #endregion #region Member _subscriptions.Add(_connection.On <ChannelSummaryResponse>(ClientEvents.MemberJoined, (channel) => { MemberJoined?.Invoke(channel); })); _subscriptions.Add(_connection.On <Guid>(ClientEvents.MemberLeft, (channelId) => { MemberLeft?.Invoke(channelId); })); _subscriptions.Add(_connection.On <MemberSummaryResponse, Guid>(ClientEvents.MemberDeleted, (member, channelId) => { MemberDeleted?.Invoke(member, channelId); })); #endregion }
public void Write(string message) { _messages += message + "\r\n"; MessageUpdated?.Invoke(this, new EventArgs()); }
internal void OnMessageUpdated(object sender, MessageUpdatedEventArgs messageEvent) { MessageUpdated?.Invoke(sender as IGeneratedAlgorithm, messageEvent); }
private void OnMessageUpdated(JsonMessage arg) => MessageUpdated?.Invoke(this, new Message(arg, this));
private Task MessageUpdatedAsync(Cacheable <IMessage, ulong> before, SocketMessage after, ISocketMessageChannel channel) { MessageUpdated?.Invoke(before, after, channel); return(Task.CompletedTask); }
private async Task MessageUpdatedAsync(Cacheable <IMessage, ulong> before, SocketMessage after, ISocketMessageChannel channel) { MessageUpdated?.Invoke(before, after, channel); }