![](/img/trans.png)
[英]How to get the Chat or Group name of Incoming Telegram message using Telethon?
[英]How to get channel/chat/user name of forwarded message using Telethon?
我嘗試通過頻道 ID 獲取頻道名稱:
result = self._client(GetHistoryRequest(
entity,
limit=100,
offset_date=None,
offset_id=0,
max_id=0,
min_id=last_read_message_id,
add_offset=0
))
for message in result.messages:
if isinstance(message.fwd_from, MessageFwdHeader):
fwd_channel_id = message.fwd_from.channel_id
if fwd_channel_id:
fwd_result = self._client(GetFullChannelRequest( # problem!!!
InputPeerChannel(message.fwd_from.channel_id, 0)
))
message.fwd_from
看起來像:
fwd_from=MessageFwdHeader(
channel_id=1053596007,
date=datetime.fromtimestamp(1507891987.0),
post_author=None, # None!!!
from_id=None,
channel_post=3030
),
所以,我不能從message.fwd_from
獲取頻道名稱。 我不加入這個頻道。
當我嘗試調用GetFullChannelRequest
時,出現下一個錯誤:
ChannelInvalidError(...), '無效通道 object。確保傳遞正確的類型,例如確保請求是為通道設計的,或者尋找更適合的不同通道。
如何正確獲取頻道名稱?
在這里回答
例:
result = self._client(GetHistoryRequest(
entity,
limit=100,
offset_date=None,
offset_id=0,
max_id=0,
min_id=last_read_message_id,
add_offset=0
))
for message in result.messages:
if isinstance(message.fwd_from, MessageFwdHeader):
entity = self._client.get_input_entity(
PeerChannel(message.fwd_from.channel_id)
)
if message.fwd_from.channel_id:
fwd_result = self._client(GetFullChannelRequest(entity))
if hasattr(fwd_result, 'chats') and len(fwd_result.chats) > 0:
fwd_title = fwd_result.chats[0].title
上一版telethon
可以在消息object中搜索,例如頻道名稱是
message.forward.chat.title
對於用戶
message.forward.sender.first_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.