Как стать автором
Обновить

Комментарии 22

Чтобы бот не падал, нужно было вместо long polling сделать его на веб хуках.
Версия на сервере работала как-раз на WebHook'ах. Просто репозиторий не обновлял. Там проблема была в коде и логике работы программы, Long Polling не виноват.
Не понимаю как мессенджер может служить аггрегатором статей. Ладно бы записей каких с новостных каналов или bash.org.ru — там они мелькают и сразу же уходят в прошлое, теряя актуальность, и за ними не надо следить. Другое дело Хабр или Медиум — тут интересных статей за день может быть несколько, но уже завтра они потеряются в истории. У меня в feedly есть статьи 20-дневной давности, и я к ним обязательно вернусь как будет время и возможность. В Telegram же я не понимаю как за этим можно следить.
Если есть какая-то интересная статья, то, например, я сохраняю её в Saved Messages. А потом, когда есть время, возвращаюсь к ней. Да и как я писал:
бот ни в коем случае не является заменой сайта, лишь дополнением
Фактически, бот – это просто улучшенный вариант RSS-ленты.
Скорее, ухудшенный. Нет ни mark unread (чтобы вернуться потом), ни произвольной древовидной группировки подписок, плюс vendor lock-in на Telegram.

Зачем для каждого вида сообщений отдельная горутина?

Мб этот подход и не очень плох, но я бы не разбирал сообщения в основном цикле, а передал эту работу следующей абстракции, будь то "контроллер" или менеджер команд. И вообще, лучше как мне кажется через webhook работать.

Через вебхук однозначно лучше. Но мне кажется, что все горутины должны обрабатывать все типы сообщений.


for update := range updateChannel {
...
}

во всех горутинах и все

Можно поподробнее, что значит:


все горутины должны обрабатывать все типы сообщений

я же показал, все слушают updateChannel и потом уже вызывают функцию обрабатывающую конкретное сообщение

Много ли пользователей у бота? Не сталкиваетесь ли с лимитом сообщений при рассылке уведомлений? Сам на днях написал первого бота, хочу тоже рассылать уведомления, но прочитал, что есть лимиты.

Сейчас 152 пользователя. Если честно, ожидал, что после статьи бот упадёт от нагрузки, но, как оказалось, он не так популярен. С лимитом сообщения сталкивался, но в другом своём проекте – бот для тренировки ударения к ЕГЭ. По самой его сути пользователь должен часто отвечать, поэтому иногда возникают ошибки, хотя мне кажется, что причина всё же в чём-то другом, так как на оф. сайте написано, что:


The API will not allow more than ~30 messages to different users per second

А таких нагрузок просто не может быть.

Не заметил, что «users» во множественном числе. Тогда да, вполне возможно наткнуться на такую проблему. Но sleep на 1 секунду должен помочь избежать её.
Пользуясь случаем спрошу:
У ботов есть 2 ограничения на «интенсивность»:
1. Не более 30 сообщений/сек в разные чаты — здесь всё понятно
2. Не более 20 сообщений/мин в одну группу. — вот здесь хотелось бы уточнить:
бот не должен посылать более 20 сообщений в группу за одну календарную минуту (например с 2018-03-11 22:54:00 GMT по 2018-03-11 22:54:99 включительно)
или не более 20 сообщений за последние 60 секунд?

Есть бот, у которого пиковая нагрузка может выходить за эти пределы.
Подскажите, как официально обратиться в техподдержку телеграма?

Если честно, вы меня поставили в тупик.
По первому вопросу: я, к сожалению, не настолько глубоко знаком с API Telegram. Но, предположу, что ограничение именно по календарным минутам. По крайней мере, такая реализация мне кажется более логичной
По второму вопросу: без понятия. Только сейчас понял, что не разу не слышал о техподдержке Telegram. Возможно, стоит обратиться в обычный саппорт. Вдруг, вас как-нибудь перенаправят на технический отдел.

Хоспаде, зачем плодить статьи о телеграм ботах? у телеграма довольно внятное апи, которое не нуждается в разъяснениях
для работы библиотеки go-sqlite3 нужен CGO, а при выполнение команды go build с флагом CGO_ENABLED=1 появляются ошибки


Может Вам заменить SQLite на чисто гошное, например на boltDB.
Спасибо за совет. Я, на самом деле, задумывался об этом. Думаю почитать поподробнее про BoltDB. Если понравится, то перееду на неё.
Автор, а можно ли geektimes туда подтянуть опционально? Я бы с удовольствием в одном месте это читал в телеграме.
Вообще, достаточно поменять только 1 строчку. Вопрос лишь в том, стоит ли делать отдельного бота или лучше добавить такой функционал в этого. Я бы отдал предпочтение второму варианту, но тогда придётся чуть допилить интерфейс взаимодействия, чтобы можно было отдельно управлять подписками на Geektimes и на Habrahabr.
Тоже хотел попросить добавить geektimes. И лучше отдельным ботом, да.

Вообще-то, есть довольно давно бот, написанный хабражителем shpaker. Пользуюсь больше года уже, наверное. Собственно, на эту статью из него перешел ) см. tmfeed

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории