电报机器人可以读取/访问我或机器人都不是管理员的电报频道吗?
我知道直到去年11月这是不可能的,但我听说有人这样做了,但到目前为止我还做不到。
我非常感谢您的意见和知识。
P.s.任何解决方法都会很棒。
常见问题解答内容如下:
所有机器人,无论设置如何,都将收到:
- 所有服务消息。
- 与用户私人聊天的所有消息。
- 来自其所属频道的所有消息。
机器人管理员和禁用隐私模式的机器人将收到除其他机器人发送的消息之外的所有消息。
启用隐私模式的机器人将收到:
- 明确针对他们的命令(例如,/command@this_bot)。
- 如果机器人是最后一个向群组发送消息的机器人,则来自用户的一般命令(例如 /start)。
- 通过此机器人发送的消息。
- 回复任何暗示或明确针对此机器人的消息。
因此,如果您的机器人是该频道的成员,它将收到除其他机器人发送的消息之外的所有消息。
您可能可以使用其他类型的 Telegram API:Telegram [客户端] API 和 TDLib?
使用 telethon 库可以轻松阅读频道历史记录(请参阅 telethon 文档)。
为此,我们需要一个
api_id
和一个 api_hash
。因此,请执行以下操作:
api_id
和 api_hash
这里是获取 targetChannelId 的最后 5 消息的示例代码:
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())
首次运行此代码时,它会询问您的电话号码或机器人令牌。以 +9912345...
格式输入您的
电话号码,其中
99
是您的国家/地区代码,其余是您的电话号码。
然后,它可能会向您的 Telegram 应用程序发送登录代码;在控制台中输入它。
注意:只有用户(电话号码)才能看到频道历史消息;机器人不能(至少在电视马拉松中)。仅当机器人是频道管理员之一时,才能侦听频道更新。
client.iter_messages()
接受其他参数,如min_id
,可用于仅在特定消息之后获取消息(例如,我们可以保存已处理的最后一条消息ID,并在下次将该ID传递为min_id
,所以仅返回该消息之后的消息)。