示例#1
0
        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);
        }
示例#2
0
 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"));
        }
示例#5
0
 /// <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;
 }
示例#6
0
        private void ChannelJoined(ChannelJoined message)
        {
            var createdMessage = new ChannelCreated
            {
                Channel = message.Channel
            };

            ChannelCreated(createdMessage);
        }
示例#7
0
        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);
        }
示例#8
0
        private void OnChannelCreated(JsonChannel arg)
        {
            var channel = Channels.AddChannel(arg);

            if (channel is null)
            {
                return;
            }

            ChannelCreated?.Invoke(this, channel);
        }
示例#9
0
        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);
        }
示例#10
0
        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();
        }
示例#12
0
 partial void PostChannelCreated(ChannelCreated msg);
示例#13
0
 // ROUTED DISCORD EVENTS //
 #region
 internal async Task OnChannelCreated(SocketChannel x) => await(ChannelCreated?.Invoke(x) ?? Task.CompletedTask);
示例#14
0
 private static ChannelType ChannelTypeCcFun(ChannelCreated msg) => ChannelTypeFun(msg.IsSemiPermanent, msg.IsPermanent);
示例#15
0
 private ChannelId ChannelOrderCcFun(ChannelCreated msg)
 {
     ChannelOrderInsert(msg.ChannelId, msg.Order, msg.ParentId);
     return(msg.Order);
 }
示例#16
0
        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);
        }
示例#17
0
        // Manual move functions

        private static (MaxClients?, MaxClients?) MaxClientsCcFun(ChannelCreated msg) => MaxClientsFun(msg.MaxClients, msg.IsMaxClientsUnlimited, msg.MaxFamilyClients, msg.IsMaxFamilyClientsUnlimited, msg.InheritsMaxFamilyClients);
示例#18
0
 private void OnChannelCreated(IChannel found)
 {
     ChannelCreated?.Invoke(this, found);
 }
示例#19
0
 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;
            }
        }
示例#21
0
 protected virtual void OnChannelCreated(Channel channel, User user, Server server)
 {
     ChannelCreated?.Invoke(this, new ChannelCreatedEvent(channel, user, server, _client));
 }
示例#22
0
 public void HandleChannelCreated(ChannelCreated created)
 {
     ChannelLookup.Add(created.channel.id, created.channel);
 }
示例#23
0
 public void StartTrackingChannel(string channelId)
 {
     ChannelCreated.Invoke(this, new ChannelCreatedEventArgs(channelId));
 }
示例#24
0
 private void RaiseChannelCreated(string channel, string uuid)
 {
     ChannelCreated?.Invoke(this, new PresenceEventArgs(channel, uuid));
 }