Как собирать данные через telegram bot api и отправлять большое количество сообщений за раз?
1. Как вы собираете данные о пользователях помимо тех, что приходят вместе с сообщением? Слышал про ботан.ио, но говорят он последнее время много тупит.
2. Предположим есть база с пользователями (которые написали боту) и их более 3000. Как более правильно разослать им сообщения? Так как у телеграм ограничения на 30 сообщений в секунду, приходит вариант дергать кроном каждую минуту скрипт для отправки, но это крайне не удобно когда есть разделение информации по категориям и подкатегории. А если отправлять за раз со счетчиком на тайм-аут в скрипте, то с каждым подписчиком скрипт будет выполняться все дольше и дольше, что тоже не есть хорошо. Вариант с публичным каналом отпадает, так как нельзя получить никакой информации о подписчиках (по крайней мере я не нашел в документации этого, поправьте если не прав).
1. Какие нужны метрики, для которых не хватает того, что приходит с сообщениями? Чтобы уников/просмотры считать - просто фиксируйте в базу события.
2. Рассылка через очереди. Пауза в 1-2 секунды через 20-30 сообщений.
nllm Скажите, я правильно понимаю, что если не использовать сервер очередей, то сообщения все равно будут ожидать отправки? Сам телеграм хранит их какое-то время в очереди и ждет пока можно отправить? Это можно увидеть в getwebhookinfo в поле pending_update_count
nllm: У меня структура такая: телеграм отправляет веб хуку сообщение, веб хук его получает и отправляет пользователю. Могу ли я "потерять" сообщения, не используя очереди? Ну и что что очередь на отправку сообщения через веб-хук? Ведь веб-хук рано или поздно сообщение получит и отправит пользователю?
WebDev: это нормальная структура. Я говорил про рассылку (например новости компании) юзерам, вот хранится у вас в базе 3000 юзеров. И вариант:
1.получили все номера юзверей в массив
2.получили сообщение которое отправить надо
3.циклом прошлись по массиву и отправили
Такой вариант плохой из-за того, что цикл может пройти более 30итераций за секунду + при огромном количестве юзеров, ваш скрипт может 20 минут крутить отправку сообщений