如何找到嵌套link/and打开的短信的哪一部分?
How to find which part of text message has a nested link/and open it?
我在电报上收到的示例短信:
Listen to best music: Ava Max - My Head & My Heart
我的问题是,我的脚本如何检查消息并最终通过嵌套 link 打开网站?
我试过了:
for entity in event.message.text:
if isinstance(entity, MessageEntityTextUrl):
open_url(entity.url)
但运气不佳 - 脚本无法打开 link。
//编辑
实现了 watzon 的解决方案:
async def my_event_handler(event):
msg = event.message.message
for _, inner_text in msg.get_entities_text(MessageEntityTextUrl):
open_url(inner_text)
现在错误是:
...in my_event_handler
for _, inner_text in msg.get_entities_text(MessageEntityTextUrl):
AttributeError: 'str' object has no attribute 'get_entities_text'
我一定是这里漏掉了,我应该在 msg 中更改什么?
//编辑2
msg = event.message
修复了错误,但我仍然没有得到 link 作为输出。
你应该使用 message.get_entities_text().
示例:
for _, inner_text in message.get_entities_text(MessageEntityTextUrl):
open_url(inner_text)
或者,您可以省略过滤器参数并循环遍历所有提供的实体,但根据您的示例代码,这应该可以正常工作。
@watzon 答案的正确实现看起来像这样:
from telethon.tl.types import MessageEntityTextUrl
async def my_event_handler(event):
msg = event.message
for url_entity, inner_text in msg.get_entities_text(MessageEntityTextUrl):
url = url_entity.url
open_url(url)
...
我在电报上收到的示例短信:
Listen to best music: Ava Max - My Head & My Heart
我的问题是,我的脚本如何检查消息并最终通过嵌套 link 打开网站? 我试过了:
for entity in event.message.text:
if isinstance(entity, MessageEntityTextUrl):
open_url(entity.url)
但运气不佳 - 脚本无法打开 link。
//编辑 实现了 watzon 的解决方案:
async def my_event_handler(event):
msg = event.message.message
for _, inner_text in msg.get_entities_text(MessageEntityTextUrl):
open_url(inner_text)
现在错误是:
...in my_event_handler
for _, inner_text in msg.get_entities_text(MessageEntityTextUrl):
AttributeError: 'str' object has no attribute 'get_entities_text'
我一定是这里漏掉了,我应该在 msg 中更改什么?
//编辑2
msg = event.message
修复了错误,但我仍然没有得到 link 作为输出。
你应该使用 message.get_entities_text().
示例:
for _, inner_text in message.get_entities_text(MessageEntityTextUrl):
open_url(inner_text)
或者,您可以省略过滤器参数并循环遍历所有提供的实体,但根据您的示例代码,这应该可以正常工作。
@watzon 答案的正确实现看起来像这样:
from telethon.tl.types import MessageEntityTextUrl
async def my_event_handler(event):
msg = event.message
for url_entity, inner_text in msg.get_entities_text(MessageEntityTextUrl):
url = url_entity.url
open_url(url)
...