telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 429. Description: Too Many Requests: retry after 9
У меня большое количество юзеров ,и бот не выдерживает их,что делать?
hey_umbrella, и какие вы из увиденного сделали выводы? Голова у вас для чего предназначена, думать или ложкой в нее тыкать?
У меня большое количество юзеров ,и бот не выдерживает их,что делать?
Уменьшать количество сообщений рассылаемых ботом. Вот прямо клянусь, никому из получателей нафиг ваши рассылки не нужны. Именно так превратили интернет в помойку бесконечными никому не нужными спам рассылками, сраными лендингами, попытками впихнуть нахрен никому не нужное дерьмо. Хуже спамеров и интернетпродаваторов только комивояджеры, приходящие к тебе домой и впаривающие престарелым людям гавеный пылесос по цене в 200 000.
По существу вопроса:
Решение 1. Создать ТГ канал, в который кидать общую инфу для заинтересованных лиц. Сам факт нахождения человека в канале является его согласием получать от вас вашу рассылку.
Решение 2. Сделайте в боте возможность подписаться на рассылку. При этом, саму рассылку разбейте по категориям и добавьте пользователям возможность выбора нужных категорий. Создайте программную очередь отправки сообщений. Для этого все сообщения рассылки не кидаются напрямую пользователям а закидываются в некий массив/бд/файл из которого бот не чаще чем раз в секунду берет 30 записей и отправляет их адресатам.
hey_umbrella, питон не знаю, потому чисто алгоритмически распишу.
организация очереди:
1. создается своя библиотека/модуль/пакет содержащий:
- в самом простом случае пустой массив
- экспортируемую функцию отправки сообщения, например sendMessage, принимающую в качестве параметров ID группы/канала/пользователя которому необходимо отправить сообщение и само сообщение. Данная функция просто добавляет в массив объект содержащий эти 2 параметра
- внутри библиотеки средствами python (Timer) организуется бесконечный асинхронный цикл, срабатывающий раз в секунду который делает следующее
- проверяет массив на наличие в нем записей
- если записи есть то вынимает (достает удаляя из массива) 30 записей и в цикле обрабатывает каждую, отправляя сообщение адресату
2. везде в коде, где отправляются сообщения пользователям вы:
- подключаете созданную вами библиотеку
- заменяете функции отправки сообщений на вызов функции экспортируемой из этой библиотеки
Это очень примитивный пример, но для понимания механизмов самое то. А как справитесь - замените массив на БД, добавте в таймер проверку на то были ли фактически отправлены предыдущие 30 сообщений и получил ли их сервер и многое другое. Там вы уже сами начнете видеть ситуацию и возможные пути решения возникающих проблем.