Чтение текстов открытых каналов с помощью Telegram API - PullRequest
0 голосов
/ 01 ноября 2019

Я хотел бы создать небольшой скрипт, который будет извлекать тексты Telegram из общедоступного канала (я не администратор канала).

Я нашел еще один вопрос, заданный здесь: Прочитать сообщенияиз открытых каналов Telegram
Я пытался использовать Telethon, как сказано в ответе, но он не работал:

from telethon.tl.functions.contacts import ResolveUsernameRequest
import telethon

client = telethon.TelegramClient("session.txt", api_id=XYZ, api_hash='XYZ')
client.connect()
response = client.invoke(ResolveUsernameRequest("test"))
print(response.channel_id)
print(response.access_hash)

Выдает эту ошибку:

C:/Users/mypc/PycharmProjects/untitled/aa.py:5: RuntimeWarning: coroutine 'TelegramBaseClient.connect' was never awaited
  client.connect()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Traceback (most recent call last):
  File "C:/Users/mypc/PycharmProjects/untitled/aa.py", line 6, in <module>
    response = client.invoke(ResolveUsernameRequest("test"))
AttributeError: 'TelegramClient' object has no attribute 'invoke'

Я попытался прочитать документацию по API, но не до конца понял, как работают эти вызовы:

https://core.telegram.org/method/channels.exportMessageLink

https://core.telegram.org/method/channels.joinChannel

https://core.telegram.org/method/channels.getMessages

Буду признателен, если кто-нибудь сможет объяснить мне, как они работают.

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Этот ответ очень старый. Если мы проверим Быстрый запуск Telethon , у нас будет достаточно кода, чтобы сделать то, что вам нужно:

from telethon import TelegramClient

# Remember to use your own values from my.telegram.org!
api_id = 12345
api_hash = '0123456789abcdef0123456789abcdef'
client = TelegramClient('anon', api_id, api_hash)

async def main():
    # You can print the message history of any chat:
    async for message in client.iter_messages('USERNAME OF THE CHANNEL'):
        print(message.sender.username, message.text)

with client:
    client.loop.run_until_complete(main())
0 голосов
/ 01 ноября 2019

Ну, как говорится, TelegramClient не имеет invoke метода. Вы пробовали client(ResolveUsernameRequest("test"))?

...