- Bot API: часто задаваемые вопросы
- Общие вопросы
- Как я могу создать бота?
- Можно посмотреть примеры кода?
- Добавьте в ботов фичу X!
- Какие сообщения может получать мой бот?
- Почему мой бот не видит сообщений от других ботов?
- Получение обновлений
- Как можно получать обновления?
- Опрос всегда выдаёт один и тот же результат!
- У меня проблема с вебхуками
- У меня проблема с самозаверенным сертификатом
- Как мне убедиться, что запросы идут с серверов Telegram?
- Как делать запросы в HTTP-ответах к обновлениям?
- Обработка медиафайлов
- Как скачивать файлы?
- Как закачать большой файл?
- Как долго хранится file_id у файлов?
- Массовая рассылка
- Каков лимит сообщений в секунду?
- Как получить список всех подписчиков моего бота?
- Не работает бот в Телеграмм – что делать
- Разбираемся, почему не работает бот в Telegram
- Как понять, что сервис не работает
- Причины отказа
- Ошибка на стороне сервера Телеграмм
- Ошибка на стороне сервера программы
- Ошибка в запросе
- Проблема со связью
- Технические работы
- Большое количество запросов
Bot API: часто задаваемые вопросы
Если вы незнакомы с ботами в Telegram, рекомендуется сначала прочитать ознакомительную статью.
Также, возможно, вас заинтересует описание Bot API.
Общие вопросы
Как я могу создать бота?
Создание бота для Telegram крайне простое, однако, вам понадобится кое-какой опыт в программировании. Для работы вашего бота вам необходимо осуществить первоначальную настройку через бота @BotFather, а затем подключить его к вашему серверу через API.
К сожалению, какого-либо способа создать бота без программирования не существует. Поэтому, если вы не разработчик, лучше поищите себе готового бота или закажите его разработку.
Можно посмотреть примеры кода?
Вот два бота-образца, написанных на PHP:
- Hello Bot: демонстрация основных возможностей Bot API.
- Simple Poll bot: более сложный бот, поддерживающий оба способа получения обновлений (long-polling и вебхуки).
Многие разработчики создают своих ботов с открытым исходным кодом. Мы собираем их на специальной странице.
Добавьте в ботов фичу X!
API ботов — весьма молодой проект. Есть ещё масса возможностей, которые уже рассматриваются к реализации. Пока что администрация Telegram наблюдает за тем, как пользователи используют своих ботов, чтобы понять, в каком направлении необходимо развивать платформу.
Если у вас есть мысли по этому поводу, вы можете высказать их пользователю @BotSupport (на английском).
Какие сообщения может получать мой бот?
При создании бота у него автоматически включается режим приватности, который влияет на получения сообщений в группах. Это значит, что ваш бот будет получать сообщения из групп только при следующих условиях:
- Сообщение было ответом боту или нажатием на его клавиатуру
- В сообщении есть @упоминание бота по его имени пользователя
- В сообщении содержится общая команда (напр., /start ) или команда, предназначающаяся вашему боту (напр., /start@YourBot )
- Сообщение является служебным (о смене названия группы, выходе кого-либо из чата, и т. д.)
При выключении режима приватности, ваш бот будет получать все сообщения из групп, за исключением:
- Сообщений от других ботов
- Команд для других ботов (напр., /start@NotYourBot )
- Ответов на сообщения от других ботов, за исключением случаев, когда в сообщении содержится @упоминание вашего бота.
Почему мой бот не видит сообщений от других ботов?
Диалог двух ботов может привести к нежелательным бесконечным циклам, когда боты отвечают друг другу по кругу. Поэтому было принято решение не давать ботам возможности видеть сообщения от других ботов.
Получение обновлений
Как можно получать обновления?
На текущий момент доступно два способа. Вы можете использовать либо опрос, либо вебхуки. Обратите внимание: если вы используете вебхуки, метод getUpdates работать не будет.
Принципиальное отличие: при опросе вашему приложению самому нужно запрашивать обновления у API, а используя вебхуки — сервера Telegram будут отправлять на ваш сервер каждое обновление с помощью HTTPS POST-запроса.
Вебхуки могут работать только через HTTPS, допустимо использование самозаверенного сертификата.
Доступные порты: 443, 80, 88, 8443.
Опрос всегда выдаёт один и тот же результат!
Метод getUpdates выдаёт 100 последних неподтверждённых обновлений. Чтобы подтвердить обновление, используйте параметр offset при вызове getUpdates вот так:
Все обновления с update_id меньшим или равным offset будут отмечены как подтверждённые и не будут больше возвращаться сервером.
У меня проблема с вебхуками
Если вы успешно задали адрес вебхука, но не получаете обновлений, убедитесь, что:
- SSL-сертификат вашего вебхука валиден и корректен
- При использовании самозаверенного сертификата, вы передаёте его публичный ключ в поле certificate метода setWebhook. Необходимо загружать InputFile , отправка строки не сработает.
- Ваш вебхук работает на одном из допустимых портов: 443, 80, 88, 8443.
У меня проблема с самозаверенным сертификатом
Ознакомьтесь с инструкцией по созданию сертификатов. Если после прочтения у вас остались вопросы, напишите пользователю @BotSupport.
Как мне убедиться, что запросы идут с серверов Telegram?
Для этого включите ваш токен в адрес вебхука, примерно так:
Так как никто посторонний не знает вашего токена, запросы на этот адрес смогут отсылать только сервера Telegram.
Как делать запросы в HTTP-ответах к обновлениям?
Это возможно при использовании вебхуков. Преимуществом является сокращение числа запросов, недостатком — невозможность получения результата запроса и его статуса.
Всякий раз при получении обновления на вебхук, у вас есть два варианта:
2. Ответить напрямую, указав метод в виде JSON в HTTP-ответе:
Пример реализации этой возможности на PHP можно посмотреть в коде HelloBot.
Обработка медиафайлов
Как скачивать файлы?
Для этого используйте метод getFile .
Этот метод работает только для файлов объёмом до 20 МБ.
Как закачать большой файл?
На текущий момент боты могут отправлять файлы объёмом до 50 МБ, так что крупные файлы отправить не получится. Возможно, это ограничение будет снято в будущем.
Как долго хранится file_id у файлов?
file_id у отправленных вашим ботом файлов будут удалены после отправления нескольких тысяч файлов.
Для принятых файлов file_id можно считать вечным и неизменным.
Массовая рассылка
Каков лимит сообщений в секунду?
При работе с отдельным чатом, избегайте отправки более 1 сообщения в секунду. Конечно, допустимы небольшие пики, но со временем вы начнёте получать ошибку 429.
При рассылке уведомлений нескольким пользователям, API не позволит отправлять более 30 сообщений в секунду. Для преодоления этого лимита вам необходимо разбить отправку на части с большим интервалом между собой (около 8-12 часов).
При работе с группой ограничение установлено на 20 сообщений в минуту.
Как получить список всех подписчиков моего бота?
К сожалению, пока сделать это встроенными методами нельзя. Возможно, в будущем будут добавлены пару строк для управления подписчиками.
Чтобы максимально эффективно рассылать сообщения, вам необходимо разбивать отправку на несколько частей с интервалом в 8-12 часов. Также недопустимо отправление более 30 сообщений разным пользователям в секунду — иначе вы будете получать ошибку 429.
Сайт про Telegram на русском (неофициальный).
Здесь собраны приложения на базе MTProto, переведена некоторая документация с официального сайта, а также работает Webogram.
Источник
Не работает бот в Телеграмм – что делать
Телеграм-канал Программист и бизнес.
Каждый день интересные истории, как программист строит бизнес.
Помимо основных функций мессенджера в Telegram имеются дополнительные программы, так называемые боты. Они способны в автоматическом режиме отвечать на заданные команды пользователя. Иногда виртуальные помощники перестают выполнять свои функции. Читайте дальше, чтобы узнать о причинах некорректной работы бота, а также что можно в данном случае предпринять.
Разбираемся, почему не работает бот в Telegram
Для каждой программы характерны временные сбои в работе. Пользователи Телеграмм также периодически сталкиваются с тем, что часть основного и вспомогательного функционала не работает. Такая ситуация вызывает трудности и неудобства для пользователя.
Как понять, что сервис не работает
Зачастую программа сама оповещает пользователя о прекращении своей деятельности. Это происходит в том случае, если разработчик бота предусмотрел создание такого сообщения. Пользователю может приходить уведомление об ошибке с текстом: „Cloudflare telegram bot“. В других случаях, бот попросту не отвечает на отправленные ему запросы.
Причины отказа
Существует несколько причин по которым бот отказывается выполнять функции, предусмотренные разработчиком. Как правило, все проблемы легко устраняются. К ним относятся:
- Неполадки на внутреннем сервере приложения.
- Ошибки на стороне бота.
- Пользователем неправильно введена команда.
- Проблемы с подключением к интернету.
- Проведение профилактических работ.
- Обработка большого количества команд.
- Использование устаревшей версии приложения.
Ошибка на стороне сервера Телеграмм
Корректная работа мессенджера основана на отправке программного кода, который создается специальной системой. Он обрабатывается сервером https//api.telegram.org. После чего сервер высылает текст пользователю. Если возникли какие-то неполадки на сервере, то ни один сервис работать не будет. Решить данную проблему пользователь самостоятельно не сможет. Необходимо просто подождать 10-20 минут, пока система возобновит работу.
Ошибка на стороне сервера программы
Робот в Телеграмм – виртуальный посредник между веб-сервисом и пользователем. Программу создают простые пользователи, либо разработчики приложения. Как правило, пользователи Телеграмм используют программу бесплатно. Однако, есть боты с платным функционалом. Работоспособность бота напрямую зависит от корректной работы сервера. Для функционирования каждого бота прописываются специальные коды и алгоритмы, затем их размещают на сервере.
Если программа первоначально неправильно прописана, она не будет функционировать корректно. Из-за допущенных погрешностей сервер программы не сможет обработать отправленную команду. Как результат – бот не отвечает на запрос пользователя. Пользователь не в силах исправить данную ошибку. Остается лишь ждать, пока проблему решит разработчик.
Когда бот остановился, не хочет выполнять команду, попробуйте его перезапустить через кнопку „Start“. Если ошибка появилась вновь, возможно пользователь зашел в „тупик“ (на устройстве открылся пустой экран) или не исполнился компонент экрана из-за некорректного исполнения.
Если ошибка в коде возникла в роботе, который создал пользователь лично, то проблему решить поможет @Fatherbot. С помощью бота можно найти в ранее созданных программах ошибки и исправить их. Пользователь после отправленного запроса получит инструкцию с указаниями для написания правильного кода. Для этого необходимо выполнить следующие действия:
- В строке поиска пропишите имя бота.
- В открывшемся списке аккаунтов выберите нужную программу.
- Добавьте бота в список контактов.
- Перейдите к диалоговому окну и нажмите кнопку „Начать“.
Если бот Телеграмм некорректно выполняет работу в групповых чатах, тогда @Fatherbot отправьте команду с текстом „/set privacy“. Руководство мессенджера установило для некоторых ботов ограничения для участия в групповых чатах. Подробную информацию о функционале ботов и об их командах можно найти в разделе „Помощь“
Возобновление работы бота невозможно, если сервисный центр мессенджера заблокировал или удалил его профиль. Такие радикальные меры предпринимаются к невостребованным аккаунтам, а также к тем, на которые часто поступают жалобы от пользователей. Руководство Телеграмм настоятельно рекомендует пользователям приложения не устанавливать подозрительных ботов. Они могут быть поддельными, создаваться вместо заблокированных профилей. Их создают мошенники в корыстных целях. Для того чтобы отличить настоящего бота от фейкового, обратите внимание на его адрес. Он находится в профиле под именем робота. Адрес должен начинаться с символа email protected.
Трудности в использовании функций бота могут возникать, если при создании программы пользователь не добавил определенный мультимедийный файл.
Ошибка в запросе
Для корректной работы с ботом в Телеграмм необходимо использовать только задокументированные команды. Если пользователь введет стороннюю фразу или допустит ошибку при формулировке команды, программа ее не поймет. Бот не получит отправленное сообщение с запросом. Вследствии чего задание пользователя не будет выполнено. Как правило, боты имеют стандартные команды, чтобы максимально упростить их взаимодействие с пользователем. Однако, приложение предоставляет возможность разработчикам добавлять новые команды, установленной формы.
Проблема со связью
Трудности с использованием функций программы могут возникать когда нет интернета со стороны пользователя, либо сервера. Для последнего это является чрезвычайной ситуацией. Отсутствие связи у юзеров частое явление, особенно для тех, кто использует мобильный интернет. Чтобы проверить качество связи на смартфоне, отключите и включите использование мобильных данных. Другой вариант, отключите мобильные данные и включите wi-fi. Затем снова активируйте мобильные данные.
Если вы входите в приложение через ПК, то возможно проблема связана с роутером или интернет-кабелем. Проверьте на целостность шнур, либо перезапустите роутер. Позвоните провайдеру, выясните почему нет интернета. Если нет интернета в браузере, обратитесь в службу технической безопасности. Когда пользователь свободно заходит через браузер на другие сайты, значит проблема с сервером Телеграмм. Подождите пока связь восстановиться.
Технические работы
Если причиной отказа выполнения запроса ботом возникает из-за технических работ, то пользователь получит соответствующее уведомление. Телеграмм – безвозмездный и удобный мессенджер. Все сервера требуют периодической перезагрузки, чтобы обеспечить быструю и стабильную работу. Возможно отправка команды совпала с проведением профилактических работ в Телеграмм. Дождитесь когда они закончатся.
Большое количество запросов
Зачастую, такое случается с популярными аккаунтами, которые используются многими пользователями. Если бот находится на слабом сервере, он попросту может не справиться с обработкой большого количества заданий. Он начинает зависать или отказывается работать. Повторите запрос через пять минут. Если причина некорректной работы бота в этом, пользователю придет ответ немного позже.
Будем рады, если представленная в статье информация стала полезной. Не забудьте поставить лайк и поделиться ссылкой с друзьями. Вдруг возникнут вопросы по теме, оставьте их в комментариях ниже.
Источник