首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python从电报频道获得最后一条消息

用Python从电报频道获得最后一条消息
EN

Stack Overflow用户
提问于 2020-10-04 15:21:12
回答 2查看 6.5K关注 0票数 3

我使用python-电报-bot库用Python编写了一个bot,它将URL发送到bot是管理员的通道。

现在,我想让机器人读取,比方说,最后5条消息(我并不真正关心这个数字,因为我只需要在聊天中读取消息),并将它们存储在代码中以供进一步研究。

我已经让我的机器人和:

代码语言:javascript
运行
复制
bot = telegram.Bot(token='mytoken')
bot.sendMessage(chat_id='@mychatid', text=entry.link)

但是我找不到一个bot.getLastMessagebot.getMessage类的类进入python-电-bot库。

如果已经没有这样的书面类,我如何通过Telegram API来实现它,因为我在API实现方面还有点初学者呢?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-04 16:44:01

不幸的是,这在机器人中是不可能的。

在这里,您可以使用查找所有可用的方法 ( python-telegram-bot在幕后调用),并且没有这样的方法可以根据需要获取消息。

最接近通过api的是getChat (它将返回聊天中的pinned_message )。

在这种情况下,您可以做的是将bot发送的消息存储起来,以及更新bot接收到的消息(通过设置处理程序),然后在某个存储区(数据库)中进行获取。

票数 3
EN

Stack Overflow用户

发布于 2022-08-07 18:51:35

你试过其他类型的电报API,电报[客户] API和TDLib吗?

使用电传图书馆可以方便地读取通道历史记录(请参阅电视文档)。

为此,我们需要一个api_id和一个api_hash

要获得这些参数,我们需要登录到我们的电报核心并转到API开发工具区。有一个简单的表单需要填写,然后,我们可以收到我们的api_idapi_hash。请参阅电报关于如何获取API凭据的帮助文档。

下面是获取targetChannelId最后5条消息的示例代码

代码语言:javascript
运行
复制
from telethon import TelegramClient


API_ID = 123456     # See above for how to get it
API_HASH = '123abc' # See above for how to get it
client = TelegramClient('my-client', API_ID, API_HASH)


async def main():
    async for message in client.iter_messages('targetChannelId', limit=5):
        print(message.id, message.text)


with client:
    client.loop.run_until_complete(main())

当您第一次运行此代码时,它会询问您的电话号码或bot令牌。以+9912345...格式输入您的电话号码,其中99是您的国家代码,其余是您的电话号码。然后,它可能会发送一个登录代码到您的电报应用程序,输入它在控制台。

注意:机器人不能看到频道历史信息(至少在电传中是这样),但是用户(电话号码)可以看到。只有当机器人是administrators.之一时,它们才能侦听频道更新

client.iter_messages()接受可以使用的其他参数,如min_id,因此只有在特定消息之后才能获得消息(例如,我们可以保存我们处理的最后一个消息id,下次将该id作为min_id传递,因此只有在该消息之后才返回消息)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64196443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档