想从电报上的组/频道中提取固定消息我是使用Telethon的一部分吗

2024-07-07 12:05:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是TelethonAPI 想提取我是成员的所有频道的固定消息。 请给我介绍一下程序。在

谢谢。在


Tags: 程序消息成员频道telethonapi
2条回答

use可以使用GetFullChannelRequestGetHistoryRequest方法从一个通道提取固定消息

from telethon import TelegramClient
from telethon.tl.functions.channels import GetFullChannelRequest
from telethon.tl.functions.messages import GetHistoryRequest
from telethon.tl.types import PeerChannel

api_id = XXXXX
api_hash = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
phone_number = '+98XXXXXXXX'
################################################

client = TelegramClient('session_name',
                    api_id,
                    api_hash
                    )

assert client.connect()
if not client.is_user_authorized():
    client.send_code_request(phone_number)
    me = client.sign_in(phone_number, input('Enter code: '))

channel_entity = client.get_entity(PeerChannel(channel_id))

channel_info = client(GetFullChannelRequest(channel_entity))

pinned_msg_id = channel_info.full_chat.pinned_msg_id

if pinned_msg_id is not None:
    posts = client(GetHistoryRequest(
        channel_entity,
        limit=1,
        offset_date=None,
        offset_id=pinned_msg_id + 1,
        max_id=0,
        min_id=0,
        add_offset=0,
        hash=0
    ))
    print(posts.messages[0].to_dict())

我使用了Telethon V0.19,但是以前的版本几乎相同

从Telethon 1.2开始,代码要简单得多:

from telethon import TelegramClient, types, sync
with TelegramClient('name', api_id, api_hash) as client:
    message = client.get_messages('TelethonChat', ids=types.InputMessagePinned())

但是,这对私人聊天不起作用(例如,自己获取固定消息)。为此,正如当前接受的答案提示,我们必须获取Full对象。对于私人聊天,这是^{},使用^{}

^{pr2}$

相关问题 更多 >