После сообщения «this group was upgraded to a supergroup» бот не может отправить сообщение в группу Телеграм

Ситуация — вы создали группу в Телеграм и добавили в нее бота. Бот периодически рассылает сообщения всем участникам группы. Все работает хорошо.

Но в какой то момент вы хотите, чтобы бот мог отвечать на любое сообщение от любого пользователя в группе. Как известно, для этого бота надо сделать администратором. Не проблема, так как вы являетесь владельцем группы, то можете назначить админом кого угодно, даже бота. Назначаем бота админом и теперь он может отвечать на вопросы всех участников. Бинго! Кстати в группе после этого появилось сообщение: «this group was upgraded to a supergroup». Но что это? Бот перестал рассылать сообщения по собственной инициативе. На стороне бота видим ошибку «Bad Request: chat not found». Ага, оказывается изменился chat_id, ок, не проблема копируем новый chat_id из URL группы в web-версии Телеграм. То есть например если URL чата https://web.telegram.org/k/#-1234567890 — то chat_id по идее должен быть «-1234567890». То есть так обычно бывает в группах, которые не supergroup. Потому что вставив новый chat_id в настройки бота мы с удивлением обнаруживаем что ошибка прежняя — чат не обнаружен.

Так вот, оказывается все очень просто — chat_id в supergroup может не совпадать с тем что указан в URL. А получить его мы можем, например, с помощью такого кода в Python, если бот написан на нем (помним что ответы на сообщения работают, ведь в них chat_id извлекается из входящего сообщения):

@bot.message_handler(commands=['chat_id'])
    def get_chat_id(message):
    bot.send_message(message.chat.id, message.chat.id)

Выполнив в группе команду /chat_id получаем наконец верный chat_id, вставляем в настройки бота и вот он вновь может отправлять сообщения сам.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *