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",