/// <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); } }
public UserRatedMessagedEventArgs(ChatUser user, ChatUserMessage message, MessageRating rating, MessageRating previousRating) { User = user; Message = message; Rating = rating; PreviousRating = previousRating; }
/// <summary> /// Send a public message /// </summary> public void SendMessage(ChatUserMessage message) { message.FromUser = _chatProxy.CurrentUser; _sentMessages.Add(message.ToMessageString()); _chatProxy.SendMessage(message); }
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); }
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); }
/// <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); }
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); }
public abstract bool Validate(ChatUserMessage message, IEnumerable <ChatUserMessage> allMessages, out string error);
public ChatReceivedEventArgs(ChatUserMessage message) { Message = message; }
/// <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() ); }
/// <summary> /// Occurs when help is requested from a bot /// </summary> protected virtual void OnHelpRequested(ChatUserMessage message) { SendWhisper(message.FromUser, HelpMessage); }
/// <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 ); }
/// <summary> /// Rate a message /// </summary> /// <param name="message"></param> /// <param name="rating"></param> public void RateMessage(ChatUserMessage message, MessageRating rating) { _chatProxy.RateMessage(message, rating); }
/// <summary> /// Send a public message /// </summary> public void SendMessage(string text) { ChatUserMessage message = ChatUserMessage.Parse(_chatProxy.CurrentUser, text, _chatProxy.Users); SendMessage(message); }