🫠 Кажется нормализовалась работа бота. Я до сих пор не понимаю что именно приводит к проблемам, но когда одновременно наваливается большое количество пользователей, которых нужно проверить, то бот упирается в лимиты ТГ.
И если в ответ на методы просмотра профиля и удаление сообщений прилетают банальные Too many requests и достаточно просто подождать 10-20 секунд, и можно продолжать. То куда хуже дела с локально запущенным
bot api server, который сваливается в flood_wait на методе channel.getDifference, который сам же и вызывает:
Failed to get message A in B: message ... Failed: ... because of [Error : 420 : FLOOD_WAIT_12]
А дальше начинает сыпаться портянка различных ошибок связанных с лимитами:
[timeout:1][total_timeout:1] because of [Error : 500 : Session failed: MTProto error: -429]
Receive MTProto error -500 : Invalid msgs_ack query in session X for auth key Y with N pending requests
Session connection with N pending requests was closed: [Error : 500 : MTProto error: -429]
На это время бот наглухо зависает, не реагирует даже на команды. И хуже того, когда он отвисает, то сообщения не продолжают к нему поступать с того места, где он остановился, а начинают прилетать только новые. Старые же приходят с некоторой (до двух часов) задержкой:
Receive very old update (message/edited_message/edited_channel_post) ... with a delay of 500-7600 seconds
В поддержке неожиданно ответили (спустя три месяца тишины), и даже сходу не послали самому разбираться со своими проблемами, но пока что внятного ответа, что с этим делать, нет.
Но появился интересный апдейт ранее озвученной информации. Оказалось, что с увеличением количества прилетающих боту событий лимиты для вызовов api не увеличиваются 😕
В очередной раз борьба с ветряными мельницами откладывается на борьбу с самим ТГ. Пока что отключил отправку сообщений о блокировках и уменьшил частоту проверки профилей. Но для решения проблемы с лимитами придётся таки допиливать возможность клонировать бота. Других вариантов похоже нет.