Ejemplo n.º 1
0
 /// <summary>
 /// Send a reply to a message
 /// </summary>
 public void SendReply(ChatUserMessage message, string text)
 {
     if (message.Tags.Count > 0)
     {
         StringBuilder reply = new StringBuilder();
         foreach (string tag in message.Tags)
         {
             reply.AppendFormat("#{0} ", tag);
         }
         reply.Append(text);
         SendMessage(reply.ToString());
     }
     else if (message.ToUsers != null && message.ToUsers.Count > 0)
     {
         List <ChatUser> toUsers = new List <ChatUser> {
             message.FromUser
         };
         foreach (ChatUser user in message.ToUsers)
         {
             if (!IsThisUser(user))
             {
                 toUsers.Add(user);
             }
         }
         SendWhisper(toUsers, text);
     }
     else
     {
         SendMessage(text);
     }
 }
Ejemplo n.º 2
0
 public UserRatedMessagedEventArgs(ChatUser user, ChatUserMessage message, MessageRating rating, MessageRating previousRating)
 {
     User           = user;
     Message        = message;
     Rating         = rating;
     PreviousRating = previousRating;
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Send a public message
        /// </summary>
        public void SendMessage(ChatUserMessage message)
        {
            message.FromUser = _chatProxy.CurrentUser;

            _sentMessages.Add(message.ToMessageString());

            _chatProxy.SendMessage(message);
        }
Ejemplo n.º 4
0
 public override bool Validate(ChatUserMessage message, IEnumerable <ChatUserMessage> allMessages, out string error)
 {
     error = string.Empty;
     if (!message.IsWhisper)
     {
         int messageCount = allMessages.Where(m => m.FromUser == message.FromUser && m.Date > DateTime.Now.Add(-Duration)).Count() + 1;
         if (messageCount > Limit)
         {
             error = string.Format("You are only allowed {0} message(s) per {1} minute(s)", Limit, Duration.TotalMinutes);
             return(false);
         }
     }
     return(true);
 }
Ejemplo n.º 5
0
        public static ChatUserMessage Parse(ChatUser fromUser, string text, IList <ChatUser> allUsers, string fixedTag, List <ChatUser> fixedUsers)
        {
            ChatUserMessage message = Parse(fromUser, text, allUsers, true);

            if (!string.IsNullOrEmpty(fixedTag))
            {
                message.Tags.Clear();
                message.Tags.Add(fixedTag);
            }
            if (fixedUsers != null && fixedUsers.Count > 0)
            {
                message.ToUsers.AddRange(fixedUsers);
            }
            return(message);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Send a reply to a message
        /// </summary>
        public void SendReply(ChatUserMessage message, ChatUserMessage replyMessage)
        {
            if (message.ToUsers != null && message.ToUsers.Count > 0)
            {
                replyMessage.ToUsers = message.ToUsers;
                replyMessage.ToUsers.Add(message.FromUser);
                List <ChatUser> toUsers = new List <ChatUser> {
                    message.FromUser
                };
                foreach (ChatUser user in message.ToUsers)
                {
                    if (!IsThisUser(user))
                    {
                        toUsers.Add(user);
                    }
                }
            }

            SendMessage(replyMessage);
        }
Ejemplo n.º 7
0
        private static ChatUserMessage Parse(ChatUser fromUser, string text, IList <ChatUser> allUsers, bool ignoreTagAndUsers)
        {
            List <string>   tags    = new List <string>();
            List <ChatUser> toUsers = new List <ChatUser>();

            if (!ignoreTagAndUsers)
            {
                // If the message is tagged, send to all users, don't even parse usernames
                if (TryGetTags(text, out tags, out text))
                {
                }
                else
                {
                    toUsers = GetWhisperUsers(text, allUsers, out text);
                }
            }

            ChatUserMessage message = null;

            if (MatchesCommand(text, Commands.IMAGEURL))
            {
                string imageUrl = RemoveCommand(text, Commands.IMAGEURL);
                message = new ImageUrlChatMessage {
                    ImageUrl = imageUrl
                };
            }
            else if (MatchesCommand(text, Commands.WEB))
            {
                string url = RemoveCommand(text, Commands.WEB);
                message = new WebUrlChatMessage {
                    Url = url
                };
            }
            else if (MatchesCommand(text, Commands.STATUS_UPDATE))
            {
                string status = RemoveCommand(text, Commands.STATUS_UPDATE);
                message = new UserStatusMessage {
                    Text = status
                };
            }
            else if (MatchesCommand(text, Commands.ASCII))
            {
                string asciiText = RemoveCommand(text, Commands.ASCII);
                message = new ASCIIChatMessage {
                    Text = asciiText
                };
            }
            else if (MatchesCommand(text, Commands.XAML))
            {
                string xaml = RemoveCommand(text, Commands.XAML);
                message = new XamlChatMessage {
                    Xaml = xaml
                };
            }
            else if (MatchesCommand(text, Commands.MEME))
            {
                string memeText = RemoveCommand(text, Commands.MEME);
                message = MemeChatMessage.FromString(memeText);
            }
            else if (MatchesCommand(text, Commands.POLL))
            {
                string pollText = RemoveCommand(text, Commands.POLL);
                message = PollMessage.FromString(pollText);
            }
            else if (MatchesCommand(text, Commands.LINK) || HyperlinkUtility.IsHyperlink(text))
            {
                string url = RemoveCommand(text, Commands.LINK);
                message = new HyperlinkChatMessage(url);
            }
            else if (MatchesCommand(text, Commands.VIDEOURL))
            {
                string url = RemoveCommand(text, Commands.VIDEOURL);

                if (url.Contains("https://"))
                {
                    url = url.Replace("https://", "http://");
                }
                message = new VideoUrlChatMessage {
                    VideoUrl = url
                };
            }
            else if (MatchesCommand(text, Commands.WHITEBOARD) || text == "/" + Commands.WHITEBOARD)
            {
                if (text == "/" + Commands.WHITEBOARD)
                {
                    text += " ";
                }
                string url = RemoveCommand(text, Commands.WHITEBOARD);
                message = new WhiteboardChatMessage {
                    ImageUrl = url
                };
            }
            else
            {
                message = new NormalChatUserMessage {
                    Text = text
                };
            }

            message.ToUsers  = toUsers;
            message.FromUser = fromUser;
            message.Tags     = tags;

            return(message);
        }
Ejemplo n.º 8
0
 public abstract bool Validate(ChatUserMessage message, IEnumerable <ChatUserMessage> allMessages, out string error);
Ejemplo n.º 9
0
 public ChatReceivedEventArgs(ChatUserMessage message)
 {
     Message = message;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Occurs when a user rates a message
 /// </summary>
 /// <param name="user">The user that is rating the message</param>
 /// <param name="message">The message that is being rated</param>
 /// <param name="rating">The rating that is being given</param>
 protected virtual void OnUserRatedMessage(ChatUser user, ChatUserMessage message, MessageRating rating, MessageRating previousRating)
 {
     //Debug.WriteLine( "User: {0}, rated message {1}", user, rating.ToString() );
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Occurs when help is requested from a bot
 /// </summary>
 protected virtual void OnHelpRequested(ChatUserMessage message)
 {
     SendWhisper(message.FromUser, HelpMessage);
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Occurs when a message is received from another user
 /// </summary>
 /// <param name="message"></param>
 protected virtual void OnMessageReceived(ChatUserMessage message)
 {
     //Debug.WriteLine( "Message received: {0}", message );
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Rate a message
 /// </summary>
 /// <param name="message"></param>
 /// <param name="rating"></param>
 public void RateMessage(ChatUserMessage message, MessageRating rating)
 {
     _chatProxy.RateMessage(message, rating);
 }
Ejemplo n.º 14
0
        /// <summary>
        /// Send a public message
        /// </summary>
        public void SendMessage(string text)
        {
            ChatUserMessage message = ChatUserMessage.Parse(_chatProxy.CurrentUser, text, _chatProxy.Users);

            SendMessage(message);
        }