public MirrativCommentViewModel(ICommentOptions options, IMirrativSiteOptions siteOptions, Message message, bool isFirstComment, ICommentProvider commentProvider, IUser user) : base(options, user, commentProvider, isFirstComment) { MessageType = message.Type; _siteOptions = siteOptions; Id = message.Id; UserId = message.UserId; PostTime = Tools.UnixTime2DateTime(message.CreatedAt).ToString("HH:mm:ss"); var name = new List <IMessagePart> { MessagePartFactory.CreateMessageText(message.Username) }; user.Name = name; var comment = message.Comment; if (siteOptions.NeedAutoSubNickname && message.Type == MessageType.Comment) { var nick = ExtractNickname(comment); if (!string.IsNullOrEmpty(nick)) { user.Nickname = nick; } } NameItemsInternal = name; MessageItems = new List <IMessagePart> { MessagePartFactory.CreateMessageText(comment) }; Init(); }
public static IUser FromJson(string json) { dynamic d = Newtonsoft.Json.JsonConvert.DeserializeObject(json); var userId = d.userid.Value; var nick = d.nickname.Value; var backColor = d.backcolor.Value; var foreColor = d.forecolor.Value; var isNg = d.is_ng.Value.ToLower() == "true"; var name = d.name; var nameItems = new List <IMessagePart>(); foreach (var nameItem in d.name) { if (nameItem.type == "text") { var val = nameItem.value.Value; nameItems.Add(MessagePartFactory.CreateMessageText(val)); } } var user = new UserTest(userId) { Name = nameItems, Nickname = nick, BackColorArgb = backColor, ForeColorArgb = foreColor, IsNgUser = isNg }; return(user); }
public NicoCommentViewModel(NicoSitePlugin.INicoInfo info, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(info as NicoSitePlugin.INicoMessage, metadata, methods, connectionStatus, options) { //_nameItems = MessagePartFactory.CreateMessageItems(info.UserName); MessageItems = MessagePartFactory.CreateMessageItems(info.Text); PostTime = info.PostedAt.ToString("HH:mm:ss"); }
//ParseMessage.IMessage _message; // public LineLiveCommentViewModel(ICommentOptions options, ILineLiveSiteOptions siteOptions, ParseMessage.ILove data, ParseMessage.IUser sender, IUser user, ICommentProvider cp) : // base(options, user, cp, false) // { // MessageType = MessageType.BroadcastInfo; // _siteOptions = siteOptions; // _message = data; // CommentProvider = cp; // var msg = sender.DisplayName + "さんがハートを送りました!"; // MessageItems = new List<IMessagePart> { MessagePartFactory.CreateMessageText(msg) }; // Init(); // } // public LineLiveCommentViewModel(ICommentOptions options, ILineLiveSiteOptions siteOptions, ParseMessage.IGiftMessage data, ParseMessage.IUser sender, IUser user, ICommentProvider cp) : //base(options, user, cp, false) // { // MessageType = MessageType.BroadcastInfo; // _siteOptions = siteOptions; // _message = data; // CommentProvider = cp; // //2018/07/13 // if (data.ItemId == "limited-love-gift" || string.IsNullOrEmpty(data.Url)) // { // //{"type":"giftMessage","data":{"message":"","type":"LOVE","itemId":"limited-love-gift","quantity":1,"displayName":"limited.love.gift.item","sender":{"id":2903515,"hashedId":"715i4MKqyv","displayName":"上杉The Times","iconUrl":"https://scdn.line-apps.com/obs/0hmNs42D-0MmFOTR9H8JtNNnYQNBY3YzEpNmkpRHdEbQI3LnYxIX97UGIdaVdjKXVjd3ktVGNEP1VjenU1ew/f64x64","hashedIconId":"0hmNs42D-0MmFOTR9H8JtNNnYQNBY3YzEpNmkpRHdEbQI3LnYxIX97UGIdaVdjKXVjd3ktVGNEP1VjenU1ew","isGuest":false,"isBlocked":false},"isNGGift":false,"sentAt":1531445716,"key":"2426265.29035150000000000000","blockedByCms":false}} // var msg = sender.DisplayName + "さんがハートで応援ポイントを送りました!"; // MessageItems = new List<IMessagePart> { MessagePartFactory.CreateMessageText(msg) }; // } // else // { // var msg = sender.DisplayName + "さんが" + data.Quantity + "コインプレゼントしました!"; // MessageItems = new List<IMessagePart> { MessagePartFactory.CreateMessageText(msg), new MessageImage { Url = data.Url } }; // } // Init(); // } // public LineLiveCommentViewModel(ICommentOptions options, ILineLiveSiteOptions siteOptions, ParseMessage.IFollowStartData data, ParseMessage.IUser sender, IUser user, ICommentProvider cp) : // base(options, user, cp, false) // { // MessageType = MessageType.BroadcastInfo; // _siteOptions = siteOptions; // _message = data; // CommentProvider = cp; // var msg = sender.DisplayName + "さんがフォローしました!"; // MessageItems = new List<IMessagePart> { MessagePartFactory.CreateMessageText(msg) }; // Init(); // } public LineLiveCommentViewModel(ICommentOptions options, ILineLiveSiteOptions siteOptions, ParseMessage.IMessageData data, ParseMessage.IUser sender, IUser user, ICommentProvider cp) : base(options, user, cp, false) { MessageType = MessageType.Comment; _siteOptions = siteOptions; //_message = data; UserId = sender.Id.ToString(); Id = ""; if (siteOptions.IsAutoSetNickname) { var nick = ExtractNickname(data.Message); if (!string.IsNullOrEmpty(nick)) { user.Nickname = nick; } } SetNameItems(); MessageItems = new List <IMessagePart> { MessagePartFactory.CreateMessageText(data.Message) }; Thumbnail = new MessageImage { Url = sender.IconUrl }; PostTime = Tools.FromUnixTime(data.SentAt).ToString("HH:mm:ss"); Init(); NameItemsInternal = new List <IMessagePart> { MessagePartFactory.CreateMessageText(sender.DisplayName) }; User.Name = NameItemsInternal; }
public static async Task <INicoComment> CreateNicoComment(IChat chat, IUser user, INicoSiteOptions _siteOptions, string roomName, Func <string, Task <IUserInfo> > f, ILogger logger) { var userId = chat.UserId; var is184 = Tools.Is184UserId(userId); if (_siteOptions.IsAutoSetNickname) { SitePluginCommon.Utils.SetNickname(chat.Text, user); } string thumbnailUrl = null; string name = null; try { if (IsNamaId(userId)) { var userInfo = await f(userId);//API.GetUserInfo(_dataSource, userId); thumbnailUrl = userInfo.ThumbnailUrl; if (_siteOptions.IsAutoGetUsername) { name = userInfo.Name; user.Name = new List <IMessagePart> { MessagePartFactory.CreateMessageText(userInfo.Name) }; } } } catch (Exception ex) { logger.LogException(ex); } string id; if (chat.No.HasValue) { var shortName = Tools.GetShortRoomName(roomName); id = $"{shortName}:{chat.No}"; } else { id = roomName; } var comment = chat.Text; return(new NicoComment(chat.Raw) { Text = comment, Id = id, UserName = name, PostedAt = chat.Date, ThumbnailUrl = thumbnailUrl, UserId = userId, ChatNo = chat.No, RoomName = roomName, Is184 = is184, }); }
private void OnMessageReceived(Result result) { var commentData = ParsePrivMsg(result); var userId = commentData.UserId; var isFirstComment = _commentCounter.UpdateCount(userId); var user = GetUser(userId); if (_siteOptions.NeedAutoSubNickname) { SitePluginCommon.Utils.SetNickname(commentData.Message, user); } var message = new TwitchComment(result.Raw) { CommentItems = Tools.GetMessageItems(result), Id = commentData.Id, NameItems = new List <IMessagePart> { MessagePartFactory.CreateMessageText(commentData.Username) }, PostTime = commentData.SentAt.ToString("HH:mm:ss"), UserId = commentData.UserId, }; var metadata = new MessageMetadata(message, _options, _siteOptions, user, this, isFirstComment) { IsInitialComment = false, SiteContextGuid = SiteContextGuid, }; var methods = new TwitchMessageMethods(); var messageContext = new TwitchMessageContext(message, metadata, methods); MessageReceived?.Invoke(this, messageContext); }
private static List <IMessagePart> GetNameParts(dynamic ren) { var nameItems = new List <IMessagePart>(); if (ren.ContainsKey("authorName")) { nameItems.Add(MessagePartFactory.CreateMessageText((string)ren.authorName.simpleText)); } if (ren.ContainsKey("authorBadges")) { foreach (var badge in ren.authorBadges) { if (badge.liveChatAuthorBadgeRenderer.ContainsKey("customThumbnail")) { var url = (string)badge.liveChatAuthorBadgeRenderer.customThumbnail.thumbnails[0].url; var alt = (string)badge.liveChatAuthorBadgeRenderer.tooltip; nameItems.Add(new MessageImage { Url = url, Alt = alt, Width = 16, Height = 16 }); } else if (badge.liveChatAuthorBadgeRenderer.ContainsKey("icon")) { var iconType = (string)badge.liveChatAuthorBadgeRenderer.icon.iconType; var alt = (string)badge.liveChatAuthorBadgeRenderer.tooltip; } else { throw new ParseException(); } } } return(nameItems); }
private NicoComment Convert(Chat chat, string roomName) { string id; if (chat.No.HasValue) { var shortName = Tools.GetShortRoomName(roomName); id = $"{shortName}:{chat.No}"; } else { id = roomName; } var message = new NicoComment(chat.Raw, _siteOptions) { ChatNo = chat.No, CommentItems = new List <IMessagePart> { MessagePartFactory.CreateMessageText(chat.Text) }, Id = id, Is184 = Tools.Is184UserId(chat.UserId), NameItems = null, PostTime = chat.Date.ToString("HH:mm:ss"), RoomName = roomName, UserIcon = null, UserId = chat.UserId, }; return(message); }
public McvYouTubeLiveCommentViewModel(YouTubeLiveSitePlugin.IYouTubeLiveSuperchat item, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(metadata, methods, connectionStatus, options) { var comment = item; _message = comment; _nameItems = comment.NameItems; //MessageItems = comment.CommentItems; var list = new List <IMessagePart>(); var s = item.PurchaseAmount; if (item.CommentItems.Count() > 0) { s += Environment.NewLine; } list.Add(MessagePartFactory.CreateMessageText(s)); list.AddRange(item.CommentItems); MessageItems = list; Thumbnail = comment.UserIcon; Id = comment.Id; PostTime = comment.PostedAt.ToString("HH:mm:ss"); }
private WhowatchMessageContext CreateMessageContext(IWhowatchMessage message, bool isInitialComment) { IMessageMetadata metadata = null; if (message is IWhowatchComment comment) { var user = GetUser(comment.UserId); user.Name = MessagePartFactory.CreateMessageItems(comment.UserName); var isFirstComment = _first.IsFirstComment(user.UserId); metadata = new CommentMessageMetadata(comment, _options, _siteOptions, user, this, isFirstComment) { IsInitialComment = isInitialComment, SiteContextGuid = SiteContextGuid, }; } else if (message is IWhowatchItem item) { var user = GetUser(item.UserId.ToString()); user.Name = MessagePartFactory.CreateMessageItems(item.UserName); metadata = new ItemMessageMetadata(item, _options, _siteOptions, user, this) { IsInitialComment = isInitialComment, SiteContextGuid = SiteContextGuid, }; } WhowatchMessageContext context = null; if (metadata != null) { var methods = new WhowatchMessageMethods(); context = new WhowatchMessageContext(message, metadata, methods); } return(context); }
public TwitchCommentViewModel(ICommentOptions options, ITwitchSiteOptions siteOptions, ICommentData commentData, bool isFirstComment, ICommentProvider commentProvider, IUser user) : base(options, user, commentProvider, isFirstComment) { MessageType = MessageType.Comment; _siteOptions = siteOptions; Id = commentData.Id; UserId = commentData.UserId; DisplayName = commentData.DisplayName; PostTime = commentData.SentAt.ToString("HH:mm:ss"); var name = commentData.Username; user.Name = new List <IMessagePart> { MessagePartFactory.CreateMessageText(name) }; var message = commentData.Message; if (siteOptions.NeedAutoSubNickname) { var nick = ExtractNickname(message); if (!string.IsNullOrEmpty(nick)) { user.Nickname = nick; } } NameItemsInternal = new List <IMessagePart> { MessagePartFactory.CreateMessageText(name) }; MessageItems = Tools.GetMessageItems(commentData.Message, commentData.Emotes); Init(); }
public NicoCommentViewModel(NicoSitePlugin.INicoComment comment, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(comment as NicoSitePlugin.INicoMessage, metadata, methods, connectionStatus, options) { //if (!string.IsNullOrEmpty(comment.UserName)) //{ // _nameItems = MessagePartFactory.CreateMessageItems(comment.UserName); //} var siteOptions = (INicoSiteOptions)metadata.SiteOptions; siteOptions.PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(siteOptions.IsAutoSetNickname): { SetNameItems(comment, metadata, siteOptions); } break; } }; SetNameItems(comment, metadata, siteOptions); MessageItems = MessagePartFactory.CreateMessageItems(comment.Text); if (IsValudThumbnailUrl(comment.ThumbnailUrl)) { Thumbnail = new MessageImage { Url = comment.ThumbnailUrl, Height = 40, Width = 40, }; } Id = comment.Id; PostTime = comment.PostedAt.ToLocalTime().ToString("HH:mm:ss"); }
public static INicoInfo CreateNicoInfo(IChat chat, string roomName, INicoSiteOptions siteOptions) { var match = Regex.Match(chat.Text, "^/info (?<no>\\d+) (?<content>.+)$", RegexOptions.Singleline); if (match.Success) { var no = int.Parse(match.Groups["no"].Value); var content = match.Groups["content"].Value; return(new NicoInfo(chat.Raw, siteOptions) { CommentItems = new List <IMessagePart> { MessagePartFactory.CreateMessageText(content) }, NameItems = null, PostTime = chat.Date.ToString("HH:mm:ss"), UserId = chat.UserId, RoomName = roomName, No = no, }); } else { throw new ParseException(chat.Raw); } }
public NicoCommentViewModel(NicoSitePlugin.INicoEmotion item, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(item as NicoSitePlugin.INicoMessage, metadata, methods, connectionStatus, options) { //_nameItems = MessagePartFactory.CreateMessageItems(item.UserName); MessageItems = MessagePartFactory.CreateMessageItems(item.Content); PostTime = item.PostedAt.ToString("HH:mm:ss"); Info = "エモーション"; }
private MixchMessageContext CreateMessageContext(Packet p, bool isInitialComment) { var userId = p.UserId.ToString(); var user = GetUser(userId) as IUser2; if (!_userDict.ContainsKey(userId)) { _userDict.AddOrUpdate(user.UserId, user, (id, u) => u); } bool isFirstComment; if (_userCommentCountDict.ContainsKey(userId)) { _userCommentCountDict[userId]++; isFirstComment = false; } else { _userCommentCountDict.Add(userId, 1); isFirstComment = true; } var nameItems = new List <IMessagePart>(); nameItems.Add(MessagePartFactory.CreateMessageText(p.Name)); user.Name = nameItems; var messageItems = new List <IMessagePart>(); var messageBody = p.Message(); if (!string.IsNullOrEmpty(messageBody)) { messageItems.Add(MessagePartFactory.CreateMessageText(messageBody)); } MixchMessageContext messageContext = null; IMixchMessage message; message = new MixchMessage("") { MixchMessageType = (MixchMessageType)p.Kind, MessageItems = messageItems, Id = "", // ミクチャはメッセージにIDが存在しない NameItems = nameItems, PostTime = DateTimeOffset.FromUnixTimeSeconds(p.Created).LocalDateTime, UserId = p.UserId.ToString(), IsFirstComment = isFirstComment, }; var metadata = new MessageMetadata(message, _options, _siteOptions, user, this, isFirstComment) { IsInitialComment = isInitialComment, SiteContextGuid = SiteContextGuid, }; var methods = new MixchMessageMethods(); messageContext = new MixchMessageContext(message, metadata, methods); return(messageContext); }
private void SetNameItems() { if (!string.IsNullOrEmpty(User.Nickname)) { NickItemsInternal = new List <IMessagePart> { MessagePartFactory.CreateMessageText(User.Nickname) }; } }
public static List <IMessagePart> ParseMessage(string message) { var b = ReplaceLink(message); var arr = Regex.Split(b, "(\\<[^\\>]+?\\>)"); var list = new List <IMessagePart>(); foreach (var s in arr) { if (!s.StartsWith("<")) { var decoded = ReplaceHtmlEntities(s); list.Add(MessagePartFactory.CreateMessageText(decoded)); } else if (s.StartsWith("<a href")) { var match = Regex.Match(s, "^<a href=\"(?<url>[^\"]+)\""); if (match.Success) { var url = match.Groups["url"].Value; list.Add(new MessageLink { Text = url, Url = url }); } } else if (s.StartsWith("<br")) { list.Add(MessagePartFactory.CreateMessageText(Environment.NewLine)); } else if (s == "<wbr>") { //do nothing } else if (s.StartsWith("<img")) { var match = Regex.Match(s, "(\\<img class=\"emoji\" src=\"(?<url>[^\"]+)\" width=\"(?<width>\\d+)\" height=\"(?<height>\\d+)\" /\\>)"); if (match.Success) { var url = "https://twitcasting.tv" + match.Groups["url"].Value;//domainを追加しないと var width = int.Parse(match.Groups["width"].Value); var height = int.Parse(match.Groups["height"].Value); list.Add(new MessageImage { Url = url, Alt = "", Height = height, Width = width }); } } else { #if DEBUG using (var sw = new System.IO.StreamWriter("tag.txt", true)) { sw.WriteLine(s); } #endif } } return(list); }
public PeriscopeCommentViewModel(PeriscopeSitePlugin.IPeriscopeLeave leave, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(metadata, methods, connectionStatus, options) { _message = leave; _nameItems = MessagePartFactory.CreateMessageItems(leave.DisplayName); MessageItems = MessagePartFactory.CreateMessageItems(leave.Text); //Thumbnail = join..UserIcon; //Id = join.Id.ToString(); //PostTime = join.PostTime; }
public PeriscopeCommentViewModel(PeriscopeSitePlugin.IPeriscopeComment comment, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(metadata, methods, connectionStatus, options) { _message = comment; _nameItems = MessagePartFactory.CreateMessageItems(comment.DisplayName); MessageItems = MessagePartFactory.CreateMessageItems(comment.Text); Thumbnail = null; Id = comment.Id; PostTime = comment.PostedAt.HasValue ? comment.PostedAt.Value.ToString("HH:mm:ss") : (string)null; }
public McvMildomCommentViewModel(MildomSitePlugin.IMildomComment comment, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(metadata, methods, connectionStatus, options) { _message = comment; _nameItems = MessagePartFactory.CreateMessageItems(comment.UserName); MessageItems = comment.CommentItems; Thumbnail = null; Id = null; PostTime = comment.PostedAt.ToString("HH:mm:ss"); }
public OpenrecCommentViewModel(IOpenrecCommentData commentData, ICommentOptions options, IOpenrecSiteOptions siteOptions, ICommentProvider commentProvider, bool isFirstComment, IUser user) : base(options, user, commentProvider, isFirstComment) { MessageType = MessageType.Comment; _options = options; _siteOptions = siteOptions; UserId = commentData.UserId; Id = commentData.Id; PostDate = commentData.PostTime.ToString("HH:mm:ss"); var elapsed = commentData.Elapsed; Elapsed = Tools.ElapsedToString(elapsed); IsStamp = commentData.Stamp != null; IsYell = commentData.IsYell; if (!string.IsNullOrEmpty(commentData.UserIconUrl)) { Thumbnail = new MessageImage { Url = commentData.UserIconUrl }; } if (siteOptions.IsAutoSetNickname) { var nick = ExtractNickname(commentData.Message.Text); if (!string.IsNullOrEmpty(nick)) { user.Nickname = nick; } } //Name { var nameItems = new List <IMessagePart>(); nameItems.Add(MessagePartFactory.CreateMessageText(commentData.Name)); nameItems.AddRange(commentData.NameIcons); NameItemsInternal = nameItems; } //Message { var messageItems = new List <IMessagePart>(); if (commentData.IsYell) { MessageType = MessageType.BroadcastInfo; messageItems.Add(MessagePartFactory.CreateMessageText("エールポイント:" + commentData.YellPoints + Environment.NewLine)); } messageItems.Add(commentData.Message); if (commentData.Stamp != null) { MessageType = MessageType.BroadcastInfo; messageItems.Add(commentData.Stamp); } MessageItems = messageItems; } Init(); }
public NicoCommentViewModel(NicoSitePlugin.INicoComment comment, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(comment as NicoSitePlugin.INicoMessage, metadata, methods, connectionStatus, options) { if (!string.IsNullOrEmpty(comment.UserName)) { _nameItems = MessagePartFactory.CreateMessageItems(comment.UserName); } MessageItems = MessagePartFactory.CreateMessageItems(comment.Text); //Thumbnail = comment.UserIcon; Id = comment.Id; PostTime = comment.PostedAt.ToString("HH:mm:ss"); }
public McvMirrativCommentViewModel(MirrativSitePlugin.IMirrativItem item, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(metadata, methods, connectionStatus, options) { var comment = item; _message = comment; _nameItems = MessagePartFactory.CreateMessageItems(comment.UserName); MessageItems = MessagePartFactory.CreateMessageItems(comment.Text); Thumbnail = null; Id = item.Id; PostTime = comment.PostedAt.ToString("HH:mm:ss"); }
public McvMirrativCommentViewModel(MirrativSitePlugin.IMirrativJoinRoom item, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(metadata, methods, connectionStatus, options) { var comment = item; _message = comment; _nameItems = MessagePartFactory.CreateMessageItems(comment.UserName); MessageItems = MessagePartFactory.CreateMessageItems(comment.Text); Thumbnail = comment.UserIcon; Id = null; PostTime = comment.PostTime; }
private static List <IMessagePart> GetMessageParts(dynamic ren) { var messageItems = new List <IMessagePart>(); if (!ren.ContainsKey("message"))//PaidMessageではコメント無しも可能 { return(messageItems); } if (ren.message.ContainsKey("runs")) { foreach (var r in ren.message.runs) { if (r.ContainsKey("text")) { var text = (string)r.text; messageItems.Add(MessagePartFactory.CreateMessageText(text)); } else if (r.ContainsKey("emoji")) { var emoji = r.emoji; var thumbnail = emoji.image.thumbnails[0]; var emojiUrl = thumbnail.url; var emojiWidth = (int)thumbnail.width; var emojiHeight = (int)thumbnail.height; var emojiAlt = emoji.image.accessibility.accessibilityData.label; messageItems.Add(new MessageImage { Url = emojiUrl, Alt = emojiAlt, Height = emojiHeight, Width = emojiWidth }); } else { throw new ParseException(); } } } else if (ren.message.ContainsKey("simpleText")) { var text = (string)ren.message.simpleText; messageItems.Add(MessagePartFactory.CreateMessageText(text)); } else { throw new ParseException(); } return(messageItems); }
private void P1_MessageReceived(object sender, IInternalMessage e) { if (e is Kind1Type1 kind1Type1) { var message = new PeriscopeComment(kind1Type1); var userId = message.UserId; var isFirstComment = _first.IsFirstComment(userId); var user = GetUser(userId); user.Name = MessagePartFactory.CreateMessageItems(message.Text); var metadata = CreateMessageMetadata(message, user, isFirstComment); var methods = new MessageMethods(); RaiseMessageReceived(new MessageContext(message, metadata, methods)); } else if (e is Kind2Kind1 kind2kind1) { if (!_siteOptions.IsShowJoinMessage) { //取得する必要がないため無視する return; } var message = new PeriscopeJoin(kind2kind1); var userId = message.UserId; var isFirstComment = false; var user = GetUser(userId); user.Name = MessagePartFactory.CreateMessageItems(message.DisplayName); var metadata = CreateMessageMetadata(message, user, isFirstComment); var methods = new MessageMethods(); RaiseMessageReceived(new MessageContext(message, metadata, methods)); } else if (e is Kind2Kind2 kind2Kind2) { if (!_siteOptions.IsShowLeaveMessage) { //取得する必要がないため無視する return; } var message = new PeriscopeLeave(kind2Kind2); var userId = message.UserId; var isFirstComment = false; var user = GetUser(userId); user.Name = MessagePartFactory.CreateMessageItems(message.DisplayName); var metadata = CreateMessageMetadata(message, user, isFirstComment); var methods = new MessageMethods(); RaiseMessageReceived(new MessageContext(message, metadata, methods)); } }
private TwicasMessageContext CreateMessageContext(LowObject.Comment lowComment, bool isInitialComment, string raw) { var commentData = Tools.Parse(lowComment); var userId = commentData.UserId; bool isFirstComment; if (_userCommentCountDict.ContainsKey(userId)) { _userCommentCountDict[userId]++; isFirstComment = false; } else { _userCommentCountDict.AddOrUpdate(userId, 1, (s, n) => n); isFirstComment = true; } var user = GetUser(userId); var message = new TwicasComment(raw) { CommentItems = commentData.Message, Id = commentData.Id.ToString(), NameItems = new List <IMessagePart> { MessagePartFactory.CreateMessageText(commentData.Name) }, PostTime = commentData.Date.ToString("HH:mm:ss"), UserId = commentData.UserId, UserIcon = new MessageImage { Url = commentData.ThumbnailUrl, Alt = null, Height = commentData.ThumbnailHeight, Width = commentData.ThumbnailWidth, }, }; var metadata = new MessageMetadata(message, _options, _siteOptions, user, _cp, isFirstComment) { IsInitialComment = isInitialComment, SiteContextGuid = SiteContextGuid, }; var methods = new TwicasMessageMethods(); var messageContext = new TwicasMessageContext(message, metadata, methods); return(messageContext); }
public static INicoItem CreateNicoItem(IChat chat, string roomName, INicoSiteOptions siteOptions) { //Text ///gift takenoko 41600702 "さーら♔" 600 "" "たけのこ" 1 var content = chat.Text; return(new NicoItem(chat.Raw, siteOptions) { CommentItems = new List <IMessagePart> { MessagePartFactory.CreateMessageText(content) }, NameItems = null, PostTime = chat.Date.ToString("HH:mm:ss"), UserId = chat.UserId, RoomName = roomName, }); }
public void VisibilityTest(bool isNgUser, bool isVisible) { var commentMock = new Mock <IOpenrecCommentData>(); commentMock.Setup(s => s.Stamp).Returns(new Mock <IMessageImage>().Object); commentMock.Setup(s => s.NameIcons).Returns(new List <IMessagePart>()); commentMock.Setup(s => s.Message).Returns(MessagePartFactory.CreateMessageText("")); var optionsMock = new Mock <ICommentOptions>(); var siteOptionsMock = new Mock <IOpenrecSiteOptions>(); siteOptionsMock.Setup(s => s.IsAutoSetNickname).Returns(true); var cpMock = new Mock <ICommentProvider>(); var userMock = new Mock <IUser>(); userMock.Setup(u => u.IsNgUser).Returns(isNgUser); var cvm = new OpenrecCommentViewModel(commentMock.Object, optionsMock.Object, siteOptionsMock.Object, cpMock.Object, false, userMock.Object); Assert.AreEqual(isVisible, cvm.IsVisible); }
public YouTubeLiveCommentViewModel(ICommentOptions options, IYouTubeLiveSiteOptions siteOptions, CommentData commentData, ICommentProvider commentProvider, bool isFirstComment, IUser user) : base(options, user, commentProvider, isFirstComment) { var messageText = commentData.MessageItems.ToText(); IsPaidMessage = commentData.IsPaidMessage; if (siteOptions.IsAutoSetNickname) { var nick = ExtractNickname(messageText); if (!string.IsNullOrEmpty(nick)) { user.Nickname = nick; } } NameItemsInternal = commentData.NameItems; user.Name = commentData.NameItems; if (commentData.IsPaidMessage) { var list = new List <IMessagePart>(); var s = commentData.PurchaseAmount; if (commentData.MessageItems.Count > 0) { s += Environment.NewLine; } list.Add(MessagePartFactory.CreateMessageText(s)); list.AddRange(commentData.MessageItems); MessageItems = list; MessageType = MessageType.BroadcastInfo; } else { MessageItems = commentData.MessageItems; MessageType = MessageType.Comment; } Id = commentData.Id; UserId = commentData.UserId; Thumbnail = commentData.Thumbnail; PostTime = Tools.ParseTimestampUsec(commentData.TimestampUsec).ToLocalTime().ToString("HH:mm:ss"); _siteOptions = siteOptions; Init(); }