使用电报API阅读公共频道文本 [英] Read public channel texts using Telegram API

查看:294
本文介绍了使用电报API阅读公共频道文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个小脚本,该脚本将从公共频道(我不是该频道的管理员)中获取电报文本.

I would like to create a small script that will fetch Telegram texts from a public channel (I am not the channel's admin).

我在这里发现了另一个问题: 从Telegram阅读公共频道的消息
我已经尝试按照答案中的说明使用Telethon,但是没有用:

I've found another question asked here: Read the messages of the public channels from Telegram
I've tried using Telethon as said in the answer, but it didn't work:

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文档,但是我不完全了解这些调用的工作方式:

I've tried reading the API documentation, but I didn't fully understand how those calls work:

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

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

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

如果有人能向我解释这些工作原理,我将不胜感激.

I'd be grateful if someone could explain to me how those work.

推荐答案

该答案非常古老.如果我们检查 Telethon的快速入门,我们将有足够的代码来做你所需要的:

That answer is very old. If we check Telethon's Quick-Start we have enough code to do what you need:

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())

这篇关于使用电报API阅读公共频道文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆