Как редактировать сообщение в Телеграмм боте

Я пытаюсь редактировать сообщения в боте телеграммы.
Я использую следующий код. Я могу отправлять сообщения без проблем, но часть редактирования сообщения не работает. Просто ничего не делает !!

$botToken=»XXXX. «; $website=»https://api.telegram.org/bot».$botToken; $content = file_get_contents(«php://input»); $update = json_decode($content, true); $chatId = $update[«message»][«chat»][«id»]; $message = $update[«message»][«text»]; switch($message) < case(«action»): sendMessage($chatId, «What should I do?»); break; case(«add»): editMessageText($chatId, «should I add?»); break; default: sendMessage($chatId, «default»); >function sendMessage($chatId, $message) < $url = $GLOBALS[website].»/sendMessage? chat_id=».$chatId.».urlencode($message).».$reply1; file_get_contents($url); >function editMessageText($chatId, $messageId, $message) < $url = $GLOBALS[website].»/editMessageText?chat_id=».$chatId.».$messageId.»>-2 phptelegramtelegram-bot

Решение

Проблема в этой части вашего кода

Как сделать: ЗАМЕНА (РЕДАКТИРОВАНИЕ) СООБЩЕНИЙ В TELEGRAM-БОТе / Конструктор sambot.ru / Артем Кук


case(«add»): editMessageText($chatId, «should I add?»);

Вы не передаете параметры правильно. editMessageText метод требует параметр message_id , который должен быть `Integer.

Это должен быть рабочий код

Другие решения

Других решений пока нет …

Источник: web-answers.ru

Как боту изменить сообщение?

Vindicar

Ошибку угадать надо? Так телепаты все на карантине, угадывать некому.
И что за sleep() используется, откуда он взялся?

Vindicar, ошибка: aiogram.utils.exceptions.MessageCantBeEdited: Message can’t be edited
А sleep() импортировал: from asyncio import sleep

Vindicar

szjyakgf, хм. А если подождать минуту? Может, запрос на редактирование приходит слишком быстро.
Решения вопроса 1

message в этой функции — это сообщение пользователя, который написал /start. Дальше бот пытается редактировать это сообщение. и не получается! Конечно, ведь он может редактировать только свои сообщения, а чужие не может.

Он должен просто редактировать своё сообщение, а не сообщение пользователя:

my_new_message = await bot.send_message(message.chat.id, ‘Ждем: 2сек’) await sleep(1) await bot.edit_message_text(chat_id=message.chat.id, message_id=my_new_message.message_id, text=’Ждем: 1сек’) .

Источник: qna.habr.com

Редактирование сообщений

Для того чтобы отрадактировать или удалить сообщение телеграм бота необходимо знать его id.

Еще по теме:  Как войти в Телеграм первый раз с планшета

Создание телеграм-ботов на python (telebot) #9 / Удаление и редактирование сообщений

Для того чтобы отследить id которое телеграм присвоил сообшению необходимо при генерации из внешнего скрипта (СКРИПТ1.php) указать два дополнительных ключа:

  • $return_mas[‘msg_insert_id_url’] = ‘http://ХОСТ/ПУТЬ_К_СКРИПТУ2/СКРИПТ2.php’;
  • $return_mas[‘msg_insert_unic’] = УНИКАЛЬНОЕ_ЗНАЧЕНИЕ;//Например, time()

Где, СКРИПТ2.php — Ваш php скрипт на который редактор отправит данные после того как телеграм оповестит его какой id он присвоил вашему сообщению.

УНИКАЛЬНОЕ_ЗНАЧЕНИЕ — необходимо добавить чтобы понимать какой id присланный редактором какому из ваших сгенерированных сообщений соответствует.

СКРИПТ2.php получит от редакора массив data в формате json, в котором будут данные сообщения. Данные будут в массиве, потому что если вы отправили из внешнего сообщение с вложениями (например, картинками) — то ваше сообщение разобъется на несколько и каждому изображению телеграм присвоит отдельный id

Пример данных, которые получит от редактора файл СКРИПТ2.php:

Msg edit 1.png

Демо файла ФАЙЛ.php, который принимает id сообщения, сгенерированного неким вашим скриптом СКРИПТ1.php — пример написан под библиотеку Ebot Server и кладется в папку, например, /all/ebot_server1/modules/url_resp/scripts, но может вполне отработать и независимо от библиотеки (в этом случае удалите подключенные файлы и укажите значения таких переменных как $bot_id и т.д. самостоятельно)

Демо пример изменит сообщение, которое сгенерировал СКРИПТ1.php

ВАЖНО — Сообщение не отредактируется, если в нем у вас был вывод кнопок под полем ввода. Иными словами, если в редакторе у вас есть видимые кнопки — то они будут передаваться в редактор с каждым сообщением. Такое сообщение телеграм отредактировать не даст.

Пример отредактированного сообщения:

Источник: ebot.one

Рейтинг
( Пока оценок нет )
Загрузка ...