public void UpdateChannelCreated(ChannelCreated msg) { var obj = new Channel(); obj.Parent = msg.ChannelParentId; { var tmp = MaxClientsCcFun(msg); obj.MaxClients = tmp.Item1; obj.MaxFamilyClients = tmp.Item2; } obj.ChannelType = ChannelTypeCcFun(msg); obj.ForcedSilence = ReturnFalse(msg); obj.IsPrivate = ReturnFalse(msg); obj.OptionalData = null; obj.Order = msg.Order; obj.Name = msg.Name; obj.Topic = msg.Topic; obj.IsDefault = msg.IsDefault; obj.HasPassword = msg.HasPassword; obj.Codec = msg.Codec; obj.CodecQuality = msg.CodecQuality; obj.NeededTalkPower = msg.NeededTalkPower; obj.IconId = msg.IconId; obj.CodecLatencyFactor = msg.CodecLatencyFactor; obj.IsUnencrypted = msg.IsUnencrypted; obj.DeleteDelay = msg.DeleteDelay; obj.PhoneticName = msg.PhoneticName; SetChannel(obj, msg.ChannelId); }
private async Task DiscordShardedClientOnChannelCreated(SocketChannel arg) { if (ChannelCreated != null) { await ChannelCreated.Invoke(this, arg).ConfigureAwait(false); } }
private void OnSocketReceived(IAsyncResult ar) { var listener = (TcpListener)ar.AsyncState; TcpClient client; try { client = listener.EndAcceptTcpClient(ar); listenWaiter.Set(); var channel = new TcpChannel(client); channel.IsInitiative = false; Env.Instance.Logger.Trace("HandleIncomingUnsecureRequest: New command channel accepted from: {0}", client.Client.RemoteEndPoint); //没有发送任何事件,直到收到Connect消息。 ChannelCreated?.Invoke(channel); } catch (SocketException e) { //TODO 要不要在这里结束worker? listenWaiter.Set(); return; } catch (ObjectDisposedException e) { //TODO 谁抛出这个异常的? Debug.WriteLine("Exception happened OnSocketReceived" + e.StackTrace); return; } }
public void HandlesValidChannelCreated() { var channels = new List <Channel> { new Channel { Id = "CHANID1", IsArchived = false }, }; var mockState = SetupChannelsMock(channels); var message = new ChannelCreated { Type = EventType.ChannelCreated, Channel = new Channel { Id = "CHANID2" } }; RunHandler(message, mockState); Assert.Equal(2, channels.Count); Assert.True(channels.Any(c => c.Id == "CHANID1")); Assert.True(channels.Any(c => c.Id == "CHANID2")); }
/// <summary> /// Constructs a new <see cref="BaseSocketClientAbstraction"/> around an existing <see cref="WebSocket.BaseSocketClient"/>. /// </summary> /// <param name="baseSocketClient">The value to use for <see cref="WebSocket.BaseSocketClient"/>.</param> /// <exception cref="ArgumentNullException">Throws for <paramref name="baseSocketClient"/>.</exception> protected BaseSocketClientAbstraction(BaseSocketClient baseSocketClient) : base(baseSocketClient) { baseSocketClient.ChannelCreated += x => ChannelCreated?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.ChannelDestroyed += x => ChannelDestroyed?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.ChannelUpdated += (x, y) => ChannelUpdated?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.CurrentUserUpdated += (x, y) => CurrentUserUpdated?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.GuildAvailable += x => GuildAvailable?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.GuildMembersDownloaded += x => GuildMembersDownloaded?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.GuildMemberUpdated += (x, y) => GuildMemberUpdated?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.GuildUnavailable += x => GuildUnavailable?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.GuildUpdated += (x, y) => GuildUpdated?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.JoinedGuild += x => JoinedGuild?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.LeftGuild += x => LeftGuild?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.MessageReceived += x => MessageReceived?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.MessageUpdated += (x, y, z) => MessageUpdated?.InvokeAsync(x.Abstract(), y.Abstract(), z.Abstract()) ?? Task.CompletedTask; baseSocketClient.MessageDeleted += (x, y) => MessageDeleted?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.ReactionAdded += (x, y, z) => ReactionAdded?.InvokeAsync(x.Abstract(), y.Abstract(), z.Abstract()) ?? Task.CompletedTask; baseSocketClient.ReactionRemoved += (x, y, z) => ReactionRemoved?.InvokeAsync(x.Abstract(), y.Abstract(), z.Abstract()) ?? Task.CompletedTask; baseSocketClient.ReactionsCleared += (x, y) => ReactionsCleared?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.RecipientAdded += x => RecipientAdded?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.RecipientRemoved += x => RecipientRemoved?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.RoleCreated += x => RoleCreated?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.RoleDeleted += x => RoleDeleted?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.RoleUpdated += (x, y) => RoleUpdated?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.UserBanned += (x, y) => UserBanned?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.UserIsTyping += (x, y) => UserIsTyping?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.UserJoined += x => UserJoined?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.UserLeft += x => UserLeft?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; baseSocketClient.UserUnbanned += (x, y) => UserUnbanned?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.UserUpdated += (x, y) => UserUpdated?.InvokeAsync(x.Abstract(), y.Abstract()) ?? Task.CompletedTask; baseSocketClient.UserVoiceStateUpdated += (x, y, z) => UserVoiceStateUpdated?.InvokeAsync(x.Abstract(), y.Abstract(), z.Abstract()) ?? Task.CompletedTask; baseSocketClient.VoiceServerUpdated += x => VoiceServerUpdated?.InvokeAsync(x.Abstract()) ?? Task.CompletedTask; }
private void ChannelJoined(ChannelJoined message) { var createdMessage = new ChannelCreated { Channel = message.Channel }; ChannelCreated(createdMessage); }
private void ChannelCreated(ChannelCreated message) { var existingChannelIndex = base.BotState.Channels.FindIndex(c => c.Id == message.Channel.Id); if (existingChannelIndex >= 0) { base.BotState.Channels.RemoveAt(existingChannelIndex); } base.BotState.Channels.Add(message.Channel); }
private void OnChannelCreated(JsonChannel arg) { var channel = Channels.AddChannel(arg); if (channel is null) { return; } ChannelCreated?.Invoke(this, channel); }
private void OnChannelCreated(SocketFrame gatewayEvent) { GatewayEventArgs <Channel> eventArgs; if (IsChannelAGuildChannel(gatewayEvent)) { eventArgs = new GatewayEventArgs <Channel>(gatewayEvent.GetData <GuildChannel>()); } else { eventArgs = new GatewayEventArgs <Channel>(gatewayEvent.GetData <DirectMessageChannel>()); } ChannelCreated?.Invoke(this, eventArgs); }
public Channel CreateChannel(string channelName) { if (_channels.ContainsKey(channelName)) { return(_channels[channelName]); } if (!Rfc2812Util.IsValidChannelName(channelName)) { return(null); } var newChan = new Channel(this, channelName); _channels.Add(channelName, newChan); ChannelCreated.Fire(this, new ChannelEventArgs(newChan)); return(newChan); }
//private CancellationTokenSource _channelCancellSource; //private CancellationTokenSource _source; private async Task ListenAction(CancellationToken token) { TcpListener tcpListener = new TcpListener(IPAddress.Any, port); Action cleanup = () => { tcpListener?.Stop(); tcpListener = null; }; token.Register(cleanup); try { tcpListener.Start(); } catch (Exception) { throw new Exception("Can not start ChannelManager, Port is occupied."); } while (!token.IsCancellationRequested) { TcpClient client = await tcpListener.AcceptTcpClientAsync(); #pragma warning disable 4014 Task.Run(() => #pragma warning restore 4014 { var channel = new TcpChannel(client); channel.IsInitiative = false; //没有发送任何事件,直到收到Connect消息。 ChannelCreated?.Invoke(channel); }, token); } cleanup(); //TODO 需要测试! 如果_listenTask.Wait, 这里把_listenTask设置为null,是不会报错。 Stop(); }
partial void PostChannelCreated(ChannelCreated msg);
// ROUTED DISCORD EVENTS // #region internal async Task OnChannelCreated(SocketChannel x) => await(ChannelCreated?.Invoke(x) ?? Task.CompletedTask);
private static ChannelType ChannelTypeCcFun(ChannelCreated msg) => ChannelTypeFun(msg.IsSemiPermanent, msg.IsPermanent);
private ChannelId ChannelOrderCcFun(ChannelCreated msg) { ChannelOrderInsert(msg.ChannelId, msg.Order, msg.ParentId); return(msg.Order); }
public void UpdateChannelCreated(ChannelCreated msg) { var obj = new Channel(); { var tmpv = msg.ParentId; if (tmpv != null) { obj.Parent = (ChannelId)tmpv; } } { var tmp = MaxClientsCcFun(msg); { var tmpv = tmp.Item1; if (tmpv != null) { obj.MaxClients = (MaxClients)tmpv; } } { var tmpv = tmp.Item2; if (tmpv != null) { obj.MaxFamilyClients = (MaxClients)tmpv; } } } { var tmpv = ChannelTypeCcFun(msg); if (tmpv != null) { obj.ChannelType = (ChannelType)tmpv; } } { var tmpv = ReturnFalse(msg); if (tmpv != null) { obj.ForcedSilence = (bool)tmpv; } } obj.IsPrivate = null; { var tmpv = ReturnFalse(msg); if (tmpv != null) { obj.Subscribed = (bool)tmpv; } } obj.PermissionHints = null; obj.OptionalData = null; { var tmpv = ChannelOrderCcFun(msg); if (tmpv != null) { obj.Order = (ChannelId)tmpv; } } { var tmpv = msg.Name; if (tmpv != null) { obj.Name = (str)tmpv; } } { var tmpv = msg.Topic; if (tmpv != null) { obj.Topic = (str)tmpv; } } { var tmpv = msg.IsDefault; if (tmpv != null) { obj.IsDefault = (bool)tmpv; } } { var tmpv = msg.HasPassword; if (tmpv != null) { obj.HasPassword = (bool)tmpv; } } { var tmpv = msg.Codec; if (tmpv != null) { obj.Codec = (Codec)tmpv; } } { var tmpv = msg.CodecQuality; if (tmpv != null) { obj.CodecQuality = (u8)tmpv; } } { var tmpv = msg.NeededTalkPower; if (tmpv != null) { obj.NeededTalkPower = (i32)tmpv; } } { var tmpv = msg.IconId; if (tmpv != null) { obj.IconId = (IconHash)tmpv; } } { var tmpv = msg.CodecLatencyFactor; if (tmpv != null) { obj.CodecLatencyFactor = (i32)tmpv; } } { var tmpv = msg.IsUnencrypted; if (tmpv != null) { obj.IsUnencrypted = (bool)tmpv; } } { var tmpv = msg.DeleteDelay; if (tmpv != null) { obj.DeleteDelay = (Duration)tmpv; } } { var tmpv = msg.PhoneticName; if (tmpv != null) { obj.PhoneticName = (str)tmpv; } } SetChannel(obj, msg.ChannelId); }
// Manual move functions private static (MaxClients?, MaxClients?) MaxClientsCcFun(ChannelCreated msg) => MaxClientsFun(msg.MaxClients, msg.IsMaxClientsUnlimited, msg.MaxFamilyClients, msg.IsMaxFamilyClientsUnlimited, msg.InheritsMaxFamilyClients);
private void OnChannelCreated(IChannel found) { ChannelCreated?.Invoke(this, found); }
partial void ProcessEachChannelCreated(ChannelCreated notifies);
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; } }
protected virtual void OnChannelCreated(Channel channel, User user, Server server) { ChannelCreated?.Invoke(this, new ChannelCreatedEvent(channel, user, server, _client)); }
public void HandleChannelCreated(ChannelCreated created) { ChannelLookup.Add(created.channel.id, created.channel); }
public void StartTrackingChannel(string channelId) { ChannelCreated.Invoke(this, new ChannelCreatedEventArgs(channelId)); }
private void RaiseChannelCreated(string channel, string uuid) { ChannelCreated?.Invoke(this, new PresenceEventArgs(channel, uuid)); }