private static string AddMessageReactionHTMLWithEmojiPack( NKDiscordChatWidget.DiscordBot.Classes.EventMessageCreate.EventMessageCreate_Reaction reaction, EmojiPackType emojiPack ) { var longs = Utf8ToUnicode.ToUnicodeCode(reaction.emoji.name); var u = longs.Any(code => !UnicodeEmojiEngine.IsInIntervalEmoji(code, emojiPack)); if (u) { // Реакция без ID, но при этом не является эмодзи, рисуем как есть return(HttpUtility.HtmlEncode(reaction.emoji.name)); } // Реакция без ID и является эмодзи, поэтому рисуем как картинку var localEmojiList = UnicodeEmojiEngine.RenderEmojiAsStringList( emojiPack, longs); var emojiHtml = ""; // ReSharper disable once LoopCanBeConvertedToQuery foreach (var item in localEmojiList) { if (!item.isSuccess) { // Этого символа нет в паке, выводим как есть. Куда деваться emojiHtml += HttpUtility.HtmlEncode(item.rawText); continue; } // hint: localEmojiList.Count может быть больше 1 в случае сложных эмодзи типа :one: var emojiSubFolderName = UnicodeEmojiEngine.GetImageSubFolder(emojiPack); var emojiExtension = UnicodeEmojiEngine.GetImageExtension(emojiPack); var url = string.Format("/images/emoji/{0}/{1}.{2}", emojiSubFolderName, item.emojiCode, emojiExtension ); emojiHtml += string.Format("<img src='{0}' alt=':{1}:'>", HttpUtility.HtmlEncode(url), HttpUtility.HtmlEncode(reaction.emoji.name) ); } return(emojiHtml); }
public static string RenderEmojiStringListAsHtml( IEnumerable <UnicodeEmojiEngine.EmojiRenderResult> codes, EmojiPackType pack, Dictionary <string, string> waitDictionary, int emojiShow ) { var text = ""; var emojiSubFolderName = UnicodeEmojiEngine.GetImageSubFolder(pack); var emojiExtension = UnicodeEmojiEngine.GetImageExtension(pack); foreach (var item in codes) { if (item.isSuccess) { var wait = GetWaitString(); var url = string.Format("/images/emoji/{0}/{1}.{2}", emojiSubFolderName, item.emojiCode, emojiExtension ); waitDictionary[wait] = string.Format( "<span class='emoji unicode-emoji {0}'><img src='{1}' alt=':{2}:'></span>", (emojiShow == 1) ? "blur" : "", HttpUtility.HtmlEncode(url), HttpUtility.HtmlEncode(item.emojiCode) ); text += wait; } else { text += item.rawText; } } return(text); }