Создатели ботов в Telegram жалуются на ограниченность и нестабильность Bot API
Многие ценят Telegram за удобство, надёжность, функциональность и, конечно же, ботов. С помощью них можно значительно расширить возможности мессенджера. Однако разработчики всё чаще жалуются на периодические сбои в Bot API.
Среди них Никита Колмогоров — автор @voicybot, @shiedy_bot, @banofbot. Его ботами пользуются свыше 10 000 000 людей. В блоге на vc.ru он публично рассказал о своих претензиях к команде Telegram.
Во время недавнего сбоя нагрузка на серверы бота составляла менее 20%, поэтому разработчик заподозрил что-то неладное с Bot API. Чтобы подтвердить свою догадку, он отправил два вызова getUpdates с offset: -1. Они должны были возвращать последнее сообщение и сбрасывать беклог апдейтов, но оба раза Никита получил сообщения 33-х минутной давности.
График, демонстрирующий среднее время между моментом, когда пользователь отправил сообщение, и моментом, когда Telegram доставил это сообщение боту, только подтвердил его правоту. Согласно данным, оно составило как раз 34 минуты:
В разговоре с «Кодом Дурова», Никита подтвердил этот факт и чуть подробнее рассказал о проблеме:
Сбои в Bot API бывают примерно раз в месяц, по какой причине — мне неизвестно. Полгода назад пытался доказать гипотезу, что сбои происходят по моей вине, но так и не смог — судя по всей статистике, нагрузка на мои серверы никогда не превышала 70%, а на все сообщения от Bot API все мои боты отвечают мгновенно — и сразу запрашивают следующие.
Серверы у меня все стоят в Амстердаме, задержка до серверов Bot API была меньше 1.2 миллисекунды, то есть говорят серверы почти в реальном времени. Путем исключения, я могу основательно заявить, что если задержки в ботах и есть у того же Войси — то они на стороне Telegram.
Колмогоров не первый раз уже высказывает недовольства насчёт Bot API. Ещё полтора года назад он написал целый пост с предложениями по улучшению и продублировал его в @BotSupport. Но команда Telegram, похоже, проигнорировала его. Своим мнением о работе Bot API поделились с редакцией «Кода Дурова» и другие разработчики:
Для нас в @FleepBot падения некритичны по сравнению с количеством и качеством обновлений. Bot API слабо развивается и сильно отстает от обычного API. И пусть наконец сделают передачу ботов на другой аккаунт по аналогии с каналами.
По крайней мере, я падений не заметил, но в Bot API можно круто развернуться по функционалу.
— Виталий Амелечкин, создатель @FleepBot, конструктора ботов в Telegram
В плане ответа на вопрос про падение Bot API — у нас практически всегда все ок, за исключением редких ситуаций. Правда их решение нигде не описано и приходится самостоятельно тыкать и выяснять что поправить, чтобы все работало.
Из того, что на памяти, можно вспомнить ситуацию, когда не приходили апдейты. Если кратко, недавно был сбой Bot API, при котором запросы на наш вебхук приходили с очень большой задержкой. Починилось это простой сменой токена бота. Все что нужно знать о Telegram Bot API.
— Рустам Гасанов, разработчик @crosser_bot
Мне на данный момент хватает работы через вебхуки, потому падений каких-то не замечаю — так понимаю, сейчас (и обычно) падает через getUpdates. Хотелось бы, конечно, куда более обширного Bot API. Как минимум, официальной поддержки всех методов TL самого Telegram (как у юзерботов).
Если говорить конкретней и не так широко — неплохо было бы иметь возможность получать список подписчиков непосредственно через Bot API (разумеется, там, где бот установлен в администраторах канала). Аналогично — доступ к истории постов канала.
Есть некоторые моменты, которых тоже не хватает в работе ботов (для постинга, например), но этого функционала еще и нет в самом Telegram — прикреплять опросы к тексту, например, вместо отдельных постов.
В общем, лично на мне скупость BotApi не особо отражается — так, хотелки для pet-projects, ибо я использую все возможности внутреннего user-api, работая с юзерботами, раз уж альтернатив нет.
— Сергей Цветаев, основатель сервиса аналитики Telegram-каналов Telemetr.me
Мало просто выложить продукт в open source, нужно ещё построить процесс вокруг этого. Клиенты все давно открыты, много PR было принято от сторонних разработчиков? Единицы, и то связаны в основном с документацией, локализацией (ранних версий) и фиксов опечаток.
Понятно, что Bot API бежит на tdlib, но этого явно недостаточно, так как для функционирования и масштабирования нужны ещё вспомогательные сервисы в виде очередей и баз данных. А зная любовь Telegram к разработке in house решений, нужно ещё и их открыть, получается.
Tdlib — библиотека для реализации Telegram клиентов. Они в доке к ней где-то пишут этот факт.
— Александр Савчук, сооснователь и разработчик в channely.co, @crosser_bot и ряде других масштабных проектах в Telegram
Нестабильность работы и слабое развитие Bot API наводят на мысль, что для команды Telegram это задача, как минимум, не первостепенной важности. В любом случае, разработчики и создатели ботов всегда готовы помочь, но этому мешает закрытость Bot API. Проблему отсутствия прямого канала общения с командой мессенджера подчеркнул Никита Колмогоров:
Больше всего не нравится отсутствие прямого канала общения с разработчиками Bot API и полная закрытость процесса. Нам некуда писать, не с кем говорить, некому слать предложения по улучшению или вопросы. Да, есть @BotSupport, но туда набрали волонтеров, которые, судя по всему, далеки от самой команды разработки — или просто игнорируют создателей ботов.
Но главных претензий три:
1. Нестабильность Bot API и уже почти постоянные сбои;
2. Закрытость разработчиков Bot API и отсутствие диалогов с разработчиками ботов;
3. Полное забвение программы грантов для разработчиков ботов.
Командой мессенджера был объявлен конкурс для разработчиков ботов. Однако из обещанного $1 млн победители поделили между собой всего лишь $200 000. Этап был завершён 12 января 2018 года, и Telegram больше не возвращался к этому конкурсу.
Читать первым в Telegram-канале «Код Дурова»