Задать вопрос
Dr_Elvis
@Dr_Elvis
В гугле забанен

Почему может не приходить событие в telethon?

Привет!
Имеется до невозможности простой код бота
from telethon import TelegramClient, events

api_id_client = 11111111
api_hash_client = '6094e698e964...'
client = TelegramClient('Client', api_id_client , api_hash_client )

@client.on(events.NewMessage)
def getmsg(event):
    print(event.message.message)

client.start()
client.run_until_disconnected()

Когда у клиента в чате что-то пишут - работает. Когда я подписал на свой тестовый канал клиента и написал тестовую новость - работает. Но когда я подписался просто на несколько каналов обычных - не работает при новом сообщении в канале. даже event не приходит. никаких ошибок, просто тишина. опять пишу в свой тестовый канал - всё отрабатывает.
В чем может быть причина? есть какие то способы блокировки сообщений канала от API? и вообще может быть такое совпадение что на 10 каналах, что я подписал клиента, все включили какие то блокировки?
  • Вопрос задан
  • 683 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
Dr_Elvis
@Dr_Elvis Автор вопроса, куратор тега Python
В гугле забанен
Походу ограничение на количество пользователей в группе или канале.
Потестировал.
Если в группе\канале до 500 пользователей\подписчиков - работает нормально.
Если в группе\канале больше 500 пользователей\подписчиков - не работает.

Утверждать не могу, так как не нашел конкретной официальной информации, но тестирование показало вот такую картину. Задал вопрос техподдержке телеграма, если ответят - дополню этот комментарий.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ermakovrd
С такой же проблемой столкнулся. Всё работало. Потом, от части групп перестали события приходить.

Решил сравнить группы между собой. Собрал все группы, на которые подписан аккаунт:
dialogs = await client.get_dialogs()
print (dialogs)
И проанализировал различия.

Для тех групп, сообщения от которых не приходят, был выставлен параметр slowmode_enabled=True

При этом, события редактирования сообщений - @client.on(events.MessageEdited), приходят от всех групп.

Решение - принудительное обновление новых сообщений с определённой периодичностью.

#Функция, которая с определённой периодичностью обновляет список новых сообщений.
async def client_catch_up():  
    while True:
        await client.catch_up()  #Сама "обновлялка".
        await asyncio.sleep(30)
        print("client_catch_up отработал...")
		
async def main():
    await client_catch_up()    #Прописываем запуск в main
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы