Коды ошибок Telegram Bot API (интеграция групп и каналов)

Я работаю над своим проектом с открытым исходным кодом BOTServer a http://telegram.org Сервер веб-перехватчиков бот-платформы, для рубистов.

У меня возникла странная ошибка при отправке сообщений (конечная точка sendMessage API) в созданном мной боте Telegram. при отправке сообщений конкретному созданному мной боту я получал следующие ошибки:

  1. Код ошибки 400 -> Неверный запрос: группа отключена

    Telegram::Bot::Exceptions::ResponseError - Telegram API has returned the error. (ok: "false", error_code: "400", description: "[Error]: Bad Request: group is deactivated")

и / или

  1. Код ошибки 403 -> Бот был исключен из чата

    Telegram::Bot::Exceptions::ResponseError - Telegram API has returned the error. (ok: "false", error_code: "403", description: "[Error]: Bot was kicked from a chat")

Это действительно странно. Похоже, проблема связана с «историей» конкретного бота (ошибки не носят систематического характера, и у меня нет проблем с другим ботом). Фактически я проделал следующие шаги:

  1. Я создаю бота (назовем его MYbot)
  2. Я ДОБАВИЛ бота в группу Telegram (например, MYGroup)
  3. УДАЛИЛ бота из Группы
  4. Отправляю сообщения от бота в ответ пользователю (потом возникают ошибки)

Вопрос 1. Хорошо, я почти уверен, что на стороне Telegram Serve произошло что-то не так, и я мог бы удалить и перестроить бота ... Есть ли лучшее решение?

Вопрос 2. Есть опубликованный список ошибок Telegram Bot? Я не нашел в документации / руководствах Telegram Bot.

Обожаю архитектуру Telegram! Но я чувствую, что есть некоторые проблемы / ошибки с API-интерфейсами ботов, особенно в недавних возможностях вставки ботов в группы и канал. Любой подобный опыт?


person Giorgio Robino    schedule 02.12.2015    source источник
comment
Не понимаю 4). Вы уверены, что отправляете сообщение пользователю после того, как он начинает общаться с вашим ботом?   -  person Stas Parshin    schedule 02.12.2015
comment
Да, я уверен; Я отвечу ботом. Кстати, IMMO Bot может начать незапрашиваемый разговор с пользователем (имея его идентификатор чата, это постоянно)   -  person Giorgio Robino    schedule 02.12.2015
comment
AFAIK, бот не может начать разговор даже с явным chat_id. Пользователь должен написать первым. У меня никогда не было таких проблем, поэтому, возможно, вы отправили сообщение не на тот идентификатор (например, в группу). Я знаю, что это не лучшее решение, но вы можете проверить дважды :) Я не думаю, что это проблема с телеграмм-сервером   -  person Stas Parshin    schedule 02.12.2015
comment
Да и нет: бот МОЖЕТ отправить нежелательное сообщение на идентификатор чата пользователя (В НАСТОЯЩЕЕ ВРЕМЯ подписан на бота, конечно). Но в моем случае, как я уже сказал, бот отвечает на очередь пользователя (бот получает обновление и ответ)   -  person Giorgio Robino    schedule 02.12.2015
comment
Это происходит независимо от того, какое сообщение вы отправляете? Я имею в виду, это решается, если вы отправляете другое сообщение? Можете ли вы также опубликовать пример вашего запроса?   -  person Ruben Bermudez    schedule 03.12.2015
comment
@RubenBermudez да, см. Мой ответ здесь ниже.   -  person Giorgio Robino    schedule 28.12.2015
comment
Проблема не устранена. Что-то пошло не так, попробуйте еще раз.   -  person danger89    schedule 14.04.2021


Ответы (3)


Отвечаю сам, найдя возможную причину проблемы. Проблема возникает только с одним конкретным ботом, который я создал в прошлом (и удалил из группы). Как указано в вопросе:

Пошаговая история

  • Шаг 1. После создания я добавил этого бота в группу с двумя пользователями: (я и второй человек).

  • Шаг 2: После этого я удалил этого бота из группы.

  • Шаг 3. Я использовал этого бота для тестирования моего BOTserver, отправившего SendMessage в ответ на обновление веб-перехватчика. Теперь я испытал упомянутые ошибки 400/403.

  • шаг 4: Я УДАЛЕН того бота, который болтает с BotFather.

  • шаг 5: я снова создал того же бота с ** ЖЕ идентичным именем *

  • Шаг 6: Я снова протестировал, и у меня возникла обычная проблема:

    Telegram API has returned the error. (ok: "false", error_code: "401", description: "[Error]: Unauthorized"):

  • Шаг 7. Я создал новых ботов с другими именами. Наконец, больше никаких ошибок!

Заключение:

Я честно, исходное имя бота оставалось в "неправильном" внутреннем состоянии сервера Telegram. Моя гипотеза заключается в том, что добавление / удаление ботов из групп связано с некоторыми проблемами / ошибками.

Мое решение:

  • удалите имя бота, создавшее проблемы, больше не используйте это "имя" :(

  • воссоздать бота с другим именем.

Любой подобный опыт?

person Giorgio Robino    schedule 04.12.2015
comment
У меня был аналогичный опыт работы с телеканалами. Я создал один очень давно и какое-то время оставался нетронутым. Когда в последнее время люди пытаются записать в канал, возникает ошибка. Затем я удаляю канал, создаю его снова, и все идет хорошо. Я даже заметил, что UI канал изменился! Возможно, проблема заключается в сочетании неправильного внутреннего статуса сервера Telegram и версии клиентского приложения Telegram. - person jlvaquero; 20.01.2016
comment
@jlvaquero да ... сценарий, который я описал, произошел до крупных обновлений клиентского приложения (несколько месяцев назад), поэтому моя гипотеза связана с неправильной внутренней ошибкой статуса для некоторых старых имен ботов. - person Giorgio Robino; 20.01.2016

Я получаю эту ошибку из WebHook запросов. Эта проблема возникает после добавления бота в группу и отключения функции бота Add to group через BotFather.

Эта проблема существует до тех пор, пока я не получу обновления вручную методом /getUpdates и не передам их на сервер Telegram, и после этого WebHook работает нормально.

Надеюсь, это сработает и для вас.

person Masoud Zohrabi    schedule 20.01.2016
comment
@Masoud благодарит, но не совсем ясно из вашего опыта. Моя вы хотите объяснить пошаговую последовательность? - person Giorgio Robino; 20.01.2016

вернуть ОК, если бот API возвращает ошибку ответа, как в этом примере

try {
        return Telegram::sendMessage($message);
    } catch (TelegramResponseException $exception) {
        Log::info($exception->getMessage());
        return ['ok' => 'true'];
    }
person Tri Setianto    schedule 10.05.2017