diff --git a/telegram/message/html/parser.go b/telegram/message/html/parser.go index 2b272d8eac..4a0652a159 100644 --- a/telegram/message/html/parser.go +++ b/telegram/message/html/parser.go @@ -36,14 +36,15 @@ func (p *htmlParser) fillAttrs() { } const ( - pre = "pre" - code = "code" - em = "em" - ins = "ins" - strike = "strike" - del = "del" - strong = "strong" - span = "span" + pre = "pre" + code = "code" + em = "em" + ins = "ins" + strike = "strike" + del = "del" + strong = "strong" + span = "span" + tgSpoiler = "tg-spoiler" ) func (p *htmlParser) tag(tn []byte) string { @@ -75,6 +76,8 @@ func (p *htmlParser) tag(tn []byte) string { return code case span: return span + case tgSpoiler: + return tgSpoiler default: return string(tn) } @@ -149,6 +152,8 @@ func (p *htmlParser) startTag() error { if p.attr["class"] == "tg-spoiler" { e.format = entity.Spoiler() } + case tgSpoiler: + e.format = entity.Spoiler() } p.stack.push(e) diff --git a/telegram/message/html/tdlib_test.go b/telegram/message/html/tdlib_test.go index 8040920272..d1ce1d1559 100644 --- a/telegram/message/html/tdlib_test.go +++ b/telegram/message/html/tdlib_test.go @@ -196,6 +196,48 @@ func tdlibHTMLTests() []htmlTestCase { false, "", }, + { + "➡️ ➡️➡️ ➡️➡️ ➡️", + "➡️ ➡️➡️ ➡️➡️ ➡️", + entities(&tg.MessageEntitySpoiler{Offset: 5, Length: 5}, &tg.MessageEntityBold{Offset: 10, Length: 5}), + false, + "", + }, + { + "🏟 🏟🏟 <🏟", + "🏟 🏟🏟 <🏟", + entities(&tg.MessageEntitySpoiler{Offset: 5, Length: 6}), + false, + "", + }, + { + "🏟 🏟🏟 ><🏟", + "🏟 🏟🏟 ><🏟", + entities(&tg.MessageEntitySpoiler{Offset: 5, Length: 7}, &tg.MessageEntityBold{Offset: 9, Length: 3}), + false, + "", + }, + { + "➡️ ➡️➡️ ➡️➡️ ➡️", + "➡️ ➡️➡️ ➡️➡️ ➡️", + entities(&tg.MessageEntitySpoiler{Offset: 5, Length: 5}, &tg.MessageEntityBold{Offset: 10, Length: 5}), + false, + "", + }, + { + "🏟 🏟🏟 <🏟", + "🏟 🏟🏟 <🏟", + entities(&tg.MessageEntitySpoiler{Offset: 5, Length: 6}), + false, + "", + }, + { + "🏟 🏟🏟 ><🏟", + "🏟 🏟🏟 ><🏟", + entities(&tg.MessageEntitySpoiler{Offset: 5, Length: 7}, &tg.MessageEntityBold{Offset: 9, Length: 3}), + false, + "", + }, { "\t", "\t",