Telethon,在给定要更改的单词的情况下更改文本实体的偏移量和长度
Telethon, change offset and length of a text entity given a word to change
我正在制作一个机器人,它用相同的消息回复用户,但有些词被其他词替换了。
输入示例:
嗨, 这个是一个键盘 例子.
异常输出:
你好, 测试是一个鼠标 例子. (单词 this
和 keyboard
已被替换。)
我的输出:
嗨, 测试ing是鼠标 示例.
我尝试通过更改 event.message.entities
的偏移量和长度值来解决这个问题,但我做不到。
我也试过使用 event.get_entities_text()
但不能。
那么,这个问题的 simplest/best 解决方案是什么?
在 Telethon v1 中,您可以这样做:
text = message.text
replaced = text.replace('this', 'testing')
message.text = replaced
这是因为 message.text
包含 client.parse_mode
所说的格式化实体(默认情况下,Telegram Desktop 使用的“markdown”),因此 text
将是 __Hi__, **this** is a...
,替换 'this'
将保持格式不变。
设置 message.text
时,库会自动将其再次分离为原始文本和实体。
我正在制作一个机器人,它用相同的消息回复用户,但有些词被其他词替换了。
输入示例:
嗨, 这个是一个键盘 例子.
异常输出:
你好, 测试是一个鼠标 例子. (单词 this
和 keyboard
已被替换。)
我的输出:
嗨, 测试ing是鼠标 示例.
我尝试通过更改 event.message.entities
的偏移量和长度值来解决这个问题,但我做不到。
我也试过使用 event.get_entities_text()
但不能。
那么,这个问题的 simplest/best 解决方案是什么?
在 Telethon v1 中,您可以这样做:
text = message.text
replaced = text.replace('this', 'testing')
message.text = replaced
这是因为 message.text
包含 client.parse_mode
所说的格式化实体(默认情况下,Telegram Desktop 使用的“markdown”),因此 text
将是 __Hi__, **this** is a...
,替换 'this'
将保持格式不变。
设置 message.text
时,库会自动将其再次分离为原始文本和实体。