So I've coded a Telegram user bot, which retrieves messages the moment they are received in the Telegram channel. It allows me to scrape messages directly.
Except I have a problem, when a certain message is sent in the Telegram channel, the bot doesn't detect it, as if the message was invisible for the bot.
with TelegramClient('bot', config('API_ID'), config('API_HASH')) as client:
...
@client.on(events.NewMessage(chats=list(dialog_ids.keys())))
async def new_message_listener(event):
new_message = event.message.message
print(new_message)
It's as if the message is invisible to the bot, and I don't know that the message is there when I check the web or mobile application.
Which is really annoying because it's precisely this kind of message that I want to retrieve.
I asked if there were any restrictions on certain messages on Telegram, but I couldn't find anything clear.
I also changed the part of the code that listens to the event, but without much result.
After some research, I've deduced that either Telegram allows you to protect channels from scrapping by the @client.on(events.NewMessage method of Telethon package. I therefore downloaded the last 5 messages every minutes, which I save as a database.
messages = client.iter_messages(id_channel, limit=5)
After that, i do the difference with stocked in database messages and downloaded messages by their id.
Problem "solved"