Telegram get chat messages /posts - python Telethon

后端 未结 3 2086
-上瘾入骨i
-上瘾入骨i 2021-01-11 13:08

I am using Telethon and Python 3.6xx

Been able to retreive message from groups, no problem but when it comes to channels I am stuck.

dialogs = clien         


        
相关标签:
3条回答
  • 2021-01-11 13:26

    The accepted answer is good, but recent versions of Telethon let you achieve the same more easily. This will iterate over all messages in chat (for this example we use telethon.sync to avoid typing out async):

    from telethon.sync import TelegramClient
    
    with TelegramClient(name, api_id, api_hash) as client:
        for message in client.iter_messages(chat):
            print(message.sender_id, ':', message.text)
    

    Where the variables should be obvious, for example (note these API values won't work, you need your own):

    name = 'anon'
    api_id = 123
    api_hash = 'abcdefgh'
    chat = 'me'
    

    More examples using async are available in client.iter_messages documentation.

    0 讨论(0)
  • 2021-01-11 13:28

    that work for me!

    api_hash from https://my.telegram.org, under API Development.

    from telethon import TelegramClient, events, sync
    
    api_id = 'your api_id'
    api_hash = 'your api_hash'
    
    client = TelegramClient('session_name', api_id, api_hash)
    client.start()
    channel_username = 'username'# your channel
    for message in client.get_messages(channel_username, limit=10):
        print(message.message)
    
    0 讨论(0)
  • 2021-01-11 13:36

    update :

    in the new version of Telethon, @Lonami answer is best and use it.

    ############################################################

    you can use this code for get messages :

    client = TelegramClient('session_name',
                        api_id,
                        api_hash,
                        update_workers=1,
                        spawn_read_thread=False)
    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_username='tehrandb' # your channel
    channel_entity=client.get_entity(channel_username)
    posts = client(GetHistoryRequest(
        peer=channel_entity,
        limit=100,
        offset_date=None,
        offset_id=0,
        max_id=0,
        min_id=0,
        add_offset=0,
        hash=0))
    # messages stored in `posts.messages`
    
    0 讨论(0)
提交回复
热议问题