Ejemplo n.º 1
0
        /// <summary>
        /// Creates a new <see>UserEventArgs</see> with the specified settings.
        /// </summary>
        /// <param name="eventType">The type of chat event.</param>
        /// <param name="user">A reference to the user involved in the event.</param>
        public UserEventArgs(ChatEventType eventType, ChatUser user)
            : base(eventType)
        {
            Debug.Assert(user != null);

            m_user = user;
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Creates a new instance of <see>ChatMessageEventArgs</see> with the given parameters.
 /// </summary>
 /// <param name="eventType">The type of event.</param>
 /// <param name="flags">The other user's flags.</param>
 /// <param name="username">The primarily involved user.</param>
 /// <param name="text">The message.</param>
 public ChatMessageEventArgs(ChatEventType eventType, UserFlags flags, string username, string text)
     : base(eventType)
 {
     m_flags = flags;
     m_un    = username;
     m_txt   = text;
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Creates a new <see>UserEventArgs</see> with the specified settings.
        /// </summary>
        /// <param name="eventType">The type of chat event.</param>
        /// <param name="user">A reference to the user involved in the event.</param>
        public UserEventArgs(ChatEventType eventType, ChatUser user)
            : base(eventType)
        {
            Debug.Assert(user != null);

            m_user = user;
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Creates a new instance of <see>ChatMessageEventArgs</see> with the given parameters.
 /// </summary>
 /// <param name="eventType">The type of event.</param>
 /// <param name="flags">The other user's flags.</param>
 /// <param name="username">The primarily involved user.</param>
 /// <param name="text">The message.</param>
 public ChatMessageEventArgs(ChatEventType eventType, TFlagsType flags, string username, string text)
     : base(eventType)
 {
     _flags = flags;
     _un    = username;
     _txt   = text;
 }
Ejemplo n.º 5
0
 public ChatMessage(ChatEventType eventType, string channel, string messageId)
 {
     EventType      = eventType;
     SubscriptionId = channel;
     ChannelId      = channel.Split("_")[0];
     MessageId      = messageId;
 }
Ejemplo n.º 6
0
        public void OnChatEvent(ChatEventType type, params string[] args)
        {
            Invoke(new MethodInvoker(() => {
                switch (type)
                {
                case ChatEventType.Message:
                    AppendText(String.Format("[{0:D2}:{1:D2}]{3}     {4}", DateTime.Now.Hour, DateTime.Now.Minute, args[0], args[1]));
                    break;

                case ChatEventType.UserJoin:
                    AppendText(String.Format("[{0:D2}:{1:D2}]{2}     \u001Bc1;{3}\u001Bc0; has joined!\n", DateTime.Now.Hour, DateTime.Now.Minute, "".PadLeft(20), args[0]));
                    namesListBox.Items.Add(args [0]);
                    break;

                case ChatEventType.UserPart:
                    AppendText(String.Format("[{0:D2}:{1:D2}]{2}     \u001Bc1;{3}\u001Bc0; has left!\n", DateTime.Now.Hour, DateTime.Now.Minute, "".PadLeft(20), args [0]));
                    namesListBox.Items.Remove(args[0]);
                    break;

                case ChatEventType.NickChange:
                    AppendText(String.Format("[{0:D2}:{1:D2}]{2}     \u001Bc1;{3}\u001Bc0; has changed their nickname to \u001Bc1;{4}\u001Bc0;!\n",
                                             DateTime.Now.Hour,
                                             DateTime.Now.Minute,
                                             "".PadLeft(20),
                                             args[0],
                                             args[1]));
                    namesListBox.Items.Remove(args[0]);
                    namesListBox.Items.Add(args[1]);
                    break;
                }
            }));
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Creates a new instance of <see>ChatMessageEventArgs</see> with the given parameters.
 /// </summary>
 /// <param name="eventType">The type of event.</param>
 /// <param name="flags">The other user's flags.</param>
 /// <param name="username">The primarily involved user.</param>
 /// <param name="text">The message.</param>
 public ChatMessageEventArgs(ChatEventType eventType, UserFlags flags, string username, string text)
     : base(eventType)
 {
     m_flags = flags;
     m_un = username;
     m_txt = text;
 }
Ejemplo n.º 8
0
			public ChatEvent( ChatEventType type, DateTime timestamp, ulong sourceUserId, ulong remoteUserId, string message, ushort priority )
			{
				Type = type;
				Timestamp = timestamp;
				SourceUserId = sourceUserId;
				RemoteUserId = remoteUserId;
				Message = message;
				Priority = priority;
			}
 public static ChatEventDataModel Create(string actor, string userInvolvedId, ChatEventType eventType)
 {
     return(new ChatEventDataModel()
     {
         ActorId = actor,
         UserInvolvedId = userInvolvedId,
         EventType = eventType
     });
 }
Ejemplo n.º 10
0
			public ChatEvent( DateTime timestamp, ulong remoteUserId, string message )
			{
				Timestamp = timestamp;
				RemoteUserId = remoteUserId;
				Message = message;

				//Defaults
				Type = ChatEventType.OnChatReceived;
				SourceUserId = 0;
				Priority = 0;
			}
Ejemplo n.º 11
0
        public async Task <MessageDataModel> AddChatEvent(ChatEventType type,
                                                          string actorId, string userInvolvedId, int chatId)
        {
            try
            {
                var newEvent = await chatEventsRepository.AddAsync(ChatEventDataModel.Create(actorId, userInvolvedId, type));

                var model = MessageDataModel
                            .Create(null, chatId)
                            .AsEvent(newEvent);

                var result = await messagesRepository.AddAsync(model);

                await unitOfWork.Commit();

                return(result);
            }
            catch (Exception e)
            {
                throw new InvalidDataException("Wrong actorId or userId", e);
            }
        }
Ejemplo n.º 12
0
        public void ChatEvent(ChatClient cc, ChatEventType cet, object opt)
        {
            string[] sndstr = new string[2];

            sndstr[0] = cet.ToString();
            if (opt != null)
            {
                sndstr[1] = (string)opt;
            }

            switch (cet)
            {
            case ChatEventType.JOINED:
            case ChatEventType.QUITTED:
                sndstr[1] = cc.NickName;
                break;

            case ChatEventType.MSGG:
                if (sndstr[1].Length > 512)
                {
                    sndstr[1] = sndstr[1].Remove(512);
                }
                sndstr[0] += "\n" + cc.NickName;
                break;

            default:
                break;
            }

            foreach (ChatClient c in clients)
            {
                if (cc.type == ChatClient.ClientType.SERVER && c.type == ChatClient.ClientType.SERVER)
                {
                    continue; // forbid SERVER TO SERVER communication
                }
                c.SendMsg(sndstr);
            }
        }
Ejemplo n.º 13
0
 /// <summary>
 /// Creates a new <see>ServerChatEventArgs</see> with the specified information.
 /// </summary>
 /// <param name="eventType">The type of event.</param>
 /// <param name="flags">Event-specific flags that must be interpreted based on the event type.</param>
 /// <param name="text">Informational message from the server.</param>
 public ServerChatEventArgs(ChatEventType eventType, int flags, string text)
     : base(eventType)
 {
     m_flags = flags;
     m_txt = text;
 }
Ejemplo n.º 14
0
        // Methods
        public ChatEvent(byte[] data) : base(data)
        {
            this.clientVersion  = -1;
            this.characterType  = BattleNetCharacter.Unknown;
            this.characterLevel = -1;
            this.characterAct   = -1;
            this.characterTitle = CharacterTitle.None;
            this.eventType      = (ChatEventType)BitConverter.ToUInt32(data, 3);
            this.flags          = BitConverter.ToUInt32(data, 7);
            this.ping           = BitConverter.ToUInt32(data, 11);
            int length = ByteConverter.GetByteOffset(data, 0, 0x1b);
            int num2   = ByteConverter.GetByteOffset(data, 0x2a, 0x1b, length);

            if (num2 > 0)
            {
                this.name = ByteConverter.GetString(data, 0x1b, num2);
                length   -= num2 + 1;
                num2     += 0x1c;
            }
            else if (num2 == 0)
            {
                num2 = 0x1c;
                length--;
                this.characterType = BattleNetCharacter.OpenCharacter;
            }
            else
            {
                num2 = 0x1b;
            }
            this.account = ByteConverter.GetString(data, num2, length);
            length      += num2 + 1;
            if (this.eventType != ChatEventType.ChannelLeave)
            {
                if ((this.eventType == ChatEventType.ChannelJoin) || (this.eventType == ChatEventType.ChannelUser))
                {
                    if ((data.Length - length) > 3)
                    {
                        this.client = (BattleNetClient)BitConverter.ToUInt32(data, length);
                        length     += 4;
                    }
                    if ((((this.client != BattleNetClient.StarcraftShareware) && (this.client != BattleNetClient.Starcraft)) && (this.client != BattleNetClient.StarcraftBroodWar)) && ((this.client == BattleNetClient.Diablo2) || (this.client == BattleNetClient.Diablo2LoD)))
                    {
                        if (this.client == BattleNetClient.Diablo2LoD)
                        {
                            this.characterFlags |= CharacterFlags.Expansion;
                        }
                        if ((data.Length - length) >= 4)
                        {
                            this.realm = ByteConverter.GetString(data, length, -1, 0x2c);
                            length    += this.realm.Length + 1;
                            if (data.Length >= length)
                            {
                                length += ByteConverter.GetByteOffset(data, 0x2c, length) + 1;
                                if (((length != -1) && (data.Length > length)) && ((data.Length - length) >= 0x21))
                                {
                                    StatString.ParseD2StatString(data, length, ref this.clientVersion, ref this.characterType, ref this.characterLevel, ref this.characterFlags, ref this.characterAct, ref this.characterTitle);
                                }
                            }
                        }
                    }
                }
                else
                {
                    this.message = ByteConverter.GetNullString(data, length);
                }
            }
        }
Ejemplo n.º 15
0
        private void NoteTag(string tag, ChatUser chatUser, string currentChannel, ChatEventType action)
        {
            if (string.IsNullOrEmpty(tag))
                return;

            string act = "joining the channel";
            switch (action)
            {
                case ChatEventType.UserInChannel:
                    act = "being seen in the channel";
                    break;
                case ChatEventType.UserFlagsChanged:
                    act = "having flags updated in the channel";
                    break;
                case ChatEventType.UserLeftChannel:
                    act = "leaving the channel";
                    break;
                case ChatEventType.UserJoinedChannel:
                    act = "joining the channel";
                    break;
            }
            using (ClansDataContext dc = ClansDataContext.Create(m_dbPath))
            {
                if (dc.Clans.Where(c => c.Tag.ToUpper() == tag.ToUpper()).Count() == 0)
                {
                    Clan c = new Clan
                    {
                        GatewayID = m_gatewayID,
                        Tag = tag,
                        DiscoverySource = string.Format("{0}, a Warcraft 3 user in {1}, {2}.", chatUser.Username, currentChannel, act)
                    };
                    dc.Clans.InsertOnSubmit(c);

                    try
                    {
                        dc.SubmitChanges();
                        m_client.MainWindow.AddChat(new ChatNode[] {
                            new ChatNode("JinxBot Clan Gnome added ", Color.DarkRed),
                            new ChatNode(c.DiscoverySource, Color.Yellow)
                        });
                    }
                    catch (Exception ex)
                    {
                        m_client.MainWindow.AddChat(new ChatNode[] {
                            new ChatNode("JinxBot Clan Gnome error ", Color.DarkRed),
                            new ChatNode("Error saving a new clan:", Color.Red),
                            ChatNode.NewLine,
                            new ChatNode(ex.ToString(), Color.OrangeRed)
                    });
                    }
                }
                else
                {
                    m_client.MainWindow.AddChat(new ChatNode[] {
                        new ChatNode("JinxBot Clan Gnome note: ", Color.DarkRed),
                        new ChatNode("Already noted clan ", Color.Yellow),
                        new ChatNode(tag, Color.Lime)
                    });
                }
            }
        }
Ejemplo n.º 16
0
 /// <summary>
 /// Initializes a new <see>ChatEventArgs</see>.
 /// </summary>
 /// <param name="eventType">The event type.</param>
 protected ChatEventArgs(ChatEventType eventType)
 {
     m_evType = eventType;
 }
Ejemplo n.º 17
0
 public void OnChatEvent (ChatEventType type, params string[] args) {
     Invoke (new MethodInvoker (() => {
         switch (type) {
             case ChatEventType.Message:
                 AppendText (String.Format ("[{0:D2}:{1:D2}]{3}     {4}", DateTime.Now.Hour, DateTime.Now.Minute, args[0], args[1]));
                 break;
             case ChatEventType.UserJoin:
                 AppendText (String.Format ("[{0:D2}:{1:D2}]{2}     \u001Bc1;{3}\u001Bc0; has joined!\n", DateTime.Now.Hour, DateTime.Now.Minute, "".PadLeft (20), args[0]));
                 namesListBox.Items.Add (args [0]);
                 break;
             case ChatEventType.UserPart:
                 AppendText (String.Format ("[{0:D2}:{1:D2}]{2}     \u001Bc1;{3}\u001Bc0; has left!\n", DateTime.Now.Hour, DateTime.Now.Minute, "".PadLeft (20), args [0]));
                 namesListBox.Items.Remove (args[0]);
                 break;
             case ChatEventType.NickChange:
                 AppendText (String.Format ("[{0:D2}:{1:D2}]{2}     \u001Bc1;{3}\u001Bc0; has changed their nickname to \u001Bc1;{4}\u001Bc0;!\n",
                     DateTime.Now.Hour,
                     DateTime.Now.Minute,
                     "".PadLeft (20),
                     args[0],
                     args[1]));
                 namesListBox.Items.Remove (args[0]);
                 namesListBox.Items.Add (args[1]);
                 break;
         }
     }));
 }
Ejemplo n.º 18
0
        private void HandleChatEvent(ParseData data)
        {
            DataReader    dr    = new DataReader(data.Data);
            ChatEventType type  = (ChatEventType)dr.ReadInt32();
            int           flags = dr.ReadInt32();
            int           ping  = dr.ReadInt32();

            dr.Seek(12);
            string user = dr.ReadCString();

            byte[] userInfo = dr.ReadNullTerminatedByteArray();
            string text     = Encoding.ASCII.GetString(userInfo);

            switch (type)
            {
            case ChatEventType.UserInChannel:
            case ChatEventType.UserJoinedChannel:
                ChatUser newUser = new ChatUser(user, ping, (UserFlags)flags, UserStats.Parse(user, userInfo));
                if (m_namesToUsers.ContainsKey(user))
                {
                    m_namesToUsers.Remove(user);
                }
                m_namesToUsers.Add(user, newUser);
                UserEventArgs uArgs = new UserEventArgs(type, newUser);
                HandleUserChatEvent(uArgs);
                break;

            case ChatEventType.UserFlagsChanged:
                if (m_namesToUsers.ContainsKey(user))
                {
                    ChatUser changedUser = m_namesToUsers[user];
                    changedUser.Flags = (UserFlags)flags;
                    UserEventArgs updatedArgs = new UserEventArgs(type, changedUser);
                    HandleUserChatEvent(updatedArgs);
                }
                else if (m_channelName.Equals("The Void", StringComparison.OrdinalIgnoreCase))
                {
                    ChatUser voidUser = new ChatUser(user, ping, (UserFlags)flags, UserStats.Parse(user, userInfo));
                    m_namesToUsers.Add(user, voidUser);
                    UserEventArgs voidArgs = new UserEventArgs(type, voidUser);
                    HandleUserChatEvent(voidArgs);
                }
                break;

            case ChatEventType.UserLeftChannel:
                if (m_namesToUsers.ContainsKey(user))
                {
                    ChatUser      goneUser = m_namesToUsers[user];
                    UserEventArgs leftArgs = new UserEventArgs(type, goneUser);
                    HandleUserChatEvent(leftArgs);
                }
                break;

            case ChatEventType.Emote:
            case ChatEventType.Talk:
            case ChatEventType.WhisperReceived:
            case ChatEventType.WhisperSent:
                ChatMessageEventArgs cmArgs = new ChatMessageEventArgs(type, (UserFlags)flags, user, Encoding.UTF8.GetString(userInfo));
                HandleChatMessageEvent(cmArgs);
                break;

            case ChatEventType.NewChannelJoined:
                ServerChatEventArgs joinArgs = new ServerChatEventArgs(type, flags, text);
                m_channelName = text;
                m_namesToUsers.Clear();
                OnJoinedChannel(joinArgs);
                break;

            case ChatEventType.Broadcast:
            case ChatEventType.ChannelDNE:
            case ChatEventType.ChannelFull:
            case ChatEventType.ChannelRestricted:
            case ChatEventType.Error:
            case ChatEventType.Information:
                ServerChatEventArgs scArgs = new ServerChatEventArgs(type, flags, text);
                HandleServerChatEvent(scArgs);
                break;
            }

            BattleNetClientResources.IncomingBufferPool.FreeBuffer(data.Data);
        }
Ejemplo n.º 19
0
 public UserChatMessage(ChatEventType eventType, string channel, string messageId, PublicUserData user, RoomRole roomRole, bool subscribing) : base(eventType, channel, messageId)
 {
     User        = user;
     RoomRole    = roomRole;
     Subscribing = subscribing;
 }
Ejemplo n.º 20
0
 // Methods
 public ChatEvent(byte[] data)
     : base(data)
 {
     this.clientVersion = -1;
     this.characterType = BattleNetCharacter.Unknown;
     this.characterLevel = -1;
     this.characterAct = -1;
     this.characterTitle = CharacterTitle.None;
     this.eventType = (ChatEventType) BitConverter.ToUInt32(data, 3);
     this.flags = BitConverter.ToUInt32(data, 7);
     this.ping = BitConverter.ToUInt32(data, 11);
     int length = ByteConverter.GetByteOffset(data, 0, 0x1b);
     int num2 = ByteConverter.GetByteOffset(data, 0x2a, 0x1b, length);
     if (num2 > 0)
     {
     this.name = ByteConverter.GetString(data, 0x1b, num2);
     length -= num2 + 1;
     num2 += 0x1c;
     }
     else if (num2 == 0)
     {
     num2 = 0x1c;
     length--;
     this.characterType = BattleNetCharacter.OpenCharacter;
     }
     else
     {
     num2 = 0x1b;
     }
     this.account = ByteConverter.GetString(data, num2, length);
     length += num2 + 1;
     if (this.eventType != ChatEventType.ChannelLeave)
     {
     if ((this.eventType == ChatEventType.ChannelJoin) || (this.eventType == ChatEventType.ChannelUser))
     {
         if ((data.Length - length) > 3)
         {
             this.client = (BattleNetClient) BitConverter.ToUInt32(data, length);
             length += 4;
         }
         if ((((this.client != BattleNetClient.StarcraftShareware) && (this.client != BattleNetClient.Starcraft)) && (this.client != BattleNetClient.StarcraftBroodWar)) && ((this.client == BattleNetClient.Diablo2) || (this.client == BattleNetClient.Diablo2LoD)))
         {
             if (this.client == BattleNetClient.Diablo2LoD)
             {
                 this.characterFlags |= CharacterFlags.Expansion;
             }
             if ((data.Length - length) >= 4)
             {
                 this.realm = ByteConverter.GetString(data, length, -1, 0x2c);
                 length += this.realm.Length + 1;
                 if (data.Length >= length)
                 {
                     length += ByteConverter.GetByteOffset(data, 0x2c, length) + 1;
                     if (((length != -1) && (data.Length > length)) && ((data.Length - length) >= 0x21))
                     {
                         StatString.ParseD2StatString(data, length, ref this.clientVersion, ref this.characterType, ref this.characterLevel, ref this.characterFlags, ref this.characterAct, ref this.characterTitle);
                     }
                 }
             }
         }
     }
     else
     {
         this.message = ByteConverter.GetNullString(data, length);
     }
     }
 }
Ejemplo n.º 21
0
 /// <summary>
 /// Creates a new <see>ServerChatEventArgs</see> with the specified information.
 /// </summary>
 /// <param name="eventType">The type of event.</param>
 /// <param name="flags">Event-specific flags that must be interpreted based on the event type.</param>
 /// <param name="text">Informational message from the server.</param>
 public ServerChatEventArgs(ChatEventType eventType, int flags, string text)
     : base(eventType)
 {
     m_flags = flags;
     m_txt   = text;
 }
Ejemplo n.º 22
0
 /// <summary>
 /// Initializes a new <see>ChatEventArgs</see>.
 /// </summary>
 /// <param name="eventType">The event type.</param>
 protected ChatEventArgs(ChatEventType eventType)
 {
     m_evType = eventType;
 }
Ejemplo n.º 23
0
        private void HandleChatEvent(BncsReader dr)
        {
            if (_oldParseCallback != null)
            {
                _oldParseCallback(dr);
                dr.Seek(-dr.Position);
                dr.Seek(4);
            }

            ChatEventType type  = (ChatEventType)dr.ReadInt32();
            int           flags = dr.ReadInt32();
            int           ping  = dr.ReadInt32();

            dr.Seek(12);
            string user = dr.ReadCString();

            byte[] userInfo = dr.ReadNullTerminatedByteArray();
            string text     = Encoding.ASCII.GetString(userInfo);

            switch (type)
            {
            case ChatEventType.UserInChannel:
            case ChatEventType.UserJoinedChannel:
                ChatUser newUser = new ChatUser(user, ping, (ClassicUserFlags)flags, UserStats.Parse(user, userInfo));
                if (_namesToUsers.ContainsKey(user))
                {
                    _namesToUsers.Remove(user);
                }
                _namesToUsers.Add(user, newUser);
                UserEventArgs <ChatUser> uArgs = new UserEventArgs <ChatUser>(type, newUser);
                HandleUserChatEvent(uArgs);
                break;

            case ChatEventType.UserFlagsChanged:
                if (_namesToUsers.ContainsKey(user))
                {
                    ChatUser changedUser = _namesToUsers[user];
                    changedUser.Flags = (ClassicUserFlags)flags;
                    UserEventArgs <ChatUser> updatedArgs = new UserEventArgs <ChatUser>(type, changedUser);
                    HandleUserChatEvent(updatedArgs);
                }
                else if (_channelName.Equals("The Void", StringComparison.OrdinalIgnoreCase))
                {
                    ChatUser voidUser = new ChatUser(user, ping, (ClassicUserFlags)flags, UserStats.Parse(user, userInfo));
                    _namesToUsers.Add(user, voidUser);
                    UserEventArgs <ChatUser> voidArgs = new UserEventArgs <ChatUser>(type, voidUser);
                    HandleUserChatEvent(voidArgs);
                }
                break;

            case ChatEventType.UserLeftChannel:
                if (_namesToUsers.ContainsKey(user))
                {
                    ChatUser goneUser = _namesToUsers[user];
                    UserEventArgs <ChatUser> leftArgs = new UserEventArgs <ChatUser>(type, goneUser);
                    HandleUserChatEvent(leftArgs);
                }
                break;

            case ChatEventType.Emote:
            case ChatEventType.Talk:
            case ChatEventType.WhisperReceived:
            case ChatEventType.WhisperSent:
                ChatMessageEventArgs <UserFlags> cmArgs = new ChatMessageEventArgs <UserFlags>(type, (UserFlags)flags, user, Encoding.UTF8.GetString(userInfo));
                HandleChatMessageEvent(cmArgs);
                break;

            case ChatEventType.NewChannelJoined:
                ServerChatEventArgs joinArgs = new ServerChatEventArgs(type, flags, text);
                _channelName = text;
                _namesToUsers.Clear();
                OnJoinedChannel(joinArgs);
                break;

            case ChatEventType.Broadcast:
            case ChatEventType.ChannelDNE:
            case ChatEventType.ChannelFull:
            case ChatEventType.ChannelRestricted:
            case ChatEventType.Error:
            case ChatEventType.Information:
                ServerChatEventArgs scArgs = new ServerChatEventArgs(type, flags, text);
                HandleServerChatEvent(scArgs);
                break;
            }
        }