You can probably use the other type of Telegram API: Telegram [client] API and TDLib?
Using telethon library makes it easy to read channels history (see telethon docs).
For this, we need an api_id
and an api_hash
. So, do the following:
- Log in to Telegram core
- Open the API development tools area
- Fill out the simple form there
- Now you can receive your
api_id
and api_hash
For more information, see Telegram's help documentation about how to get your API credentials.
Here is an example code that gets the last 5 messages of targetChannelId:
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())
The first time you run this code it asks your phone number or bot token. Enter your phone number in the format +9912345...
where 99
is your country code and the rest is your phone number.
It then may send a login code to your Telegram app; enter it in the console.
Note: Only users (phone numbers) can see channel history messages; bots cannot (at least in telethon). Bots can only listen for channel updates only if they are one of its administrators.
The client.iter_messages()
accepts other parameters like min_id
which can be used to get messages only after a specific message (for example, we can save the last message id that we have processed and next time pass that id as min_id
so only messages after that message are returned).