Telethon,在给定要更改的单词的情况下更改文本实体的偏移量和长度

Telethon, change offset and length of a text entity given a word to change

我正在制作一个机器人,它用相同的消息回复用户,但有些词被其他词替换了。

输入示例:

, 这个是一个键盘 例子.

异常输出:

你好, 测试是一个鼠标 例子. (单词 thiskeyboard 已被替换。)

我的输出:

, 测试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 时,库会自动将其再次分离为原始文本和实体。