Описание
Используйте этот метод для редактирования текстовых сообщений и сообщений с играми. В случае успеха, если отредактированное сообщение не является инлайн-сообщением, возвращается отредактированное Message, в противном случае возвращается True. Обратите внимание, что бизнес-сообщения, которые не были отправлены ботом и не содержат инлайн-клавиатуру, могут быть отредактированы только в течение 48 часов с момента отправки.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| business_connection_id | String | Опционально | Уникальный идентификатор бизнес-подключения, от имени которого было отправлено редактируемое сообщение |
| chat_id | Integer или String | Опционально | Обязателен, если не указан inline_message_id. Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername) |
| message_id | Integer | Опционально | Обязателен, если не указан inline_message_id. Идентификатор редактируемого сообщения |
| inline_message_id | String | Опционально | Обязателен, если не указаны chat_id и message_id. Идентификатор инлайн-сообщения |
| text | String | Да | Новый текст сообщения, 1-4096 символов после обработки сущностей |
| parse_mode | String | Опционально | Режим обработки сущностей в тексте сообщения. Подробнее см. параметры форматирования. |
| entities | Массив MessageEntity | Опционально | Список специальных сущностей в тексте сообщения в формате JSON, который может быть указан вместо parse_mode |
| link_preview_options | LinkPreviewOptions | Опционально | Параметры генерации превью ссылок для сообщения |
| reply_markup | InlineKeyboardMarkup | Опционально | Объект в формате JSON для инлайн-клавиатуры. |
Примеры
php
<?php
// Токен вашего бота
$botToken = 'ВАШ_ТОКЕН_БОТА';
// Пример 1: Редактирование сообщения в чате
function editMessageInChat($chatId, $messageId, $newText) {
global $botToken;
$url = "https://api.telegram.org/bot{$botToken}/editMessageText";
$data = [
'chat_id' => $chatId,
'message_id' => $messageId,
'text' => $newText,
'parse_mode' => 'HTML',
'link_preview_options' => json_encode(['is_disabled' => true])
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
// Пример 2: Редактирование inline-сообщения
function editInlineMessage($inlineMessageId, $newText) {
global $botToken;
$url = "https://api.telegram.org/bot{$botToken}/editMessageText";
$data = [
'inline_message_id' => $inlineMessageId,
'text' => $newText,
'parse_mode' => 'MarkdownV2',
'entities' => json_encode([
[
'type' => 'bold',
'offset' => 0,
'length' => 10
]
])
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
// Пример 3: Редактирование с клавиатурой и бизнес-соединением
function editMessageWithKeyboard($chatId, $messageId, $newText) {
global $botToken;
$url = "https://api.telegram.org/bot{$botToken}/editMessageText";
$keyboard = [
'inline_keyboard' => [
[
['text' => 'Кнопка 1', 'callback_data' => 'btn1'],
['text' => 'Кнопка 2', 'callback_data' => 'btn2']
]
]
];
$data = [
'chat_id' => $chatId,
'message_id' => $messageId,
'text' => $newText,
'parse_mode' => 'HTML',
'reply_markup' => json_encode($keyboard),
// 'business_connection_id' => 'ВАШ_BUSINESS_CONNECTION_ID' // опционально
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
// Пример использования:
// $result = editMessageInChat(123456, 789, 'Новый текст сообщения');
// $result = editInlineMessage('inline_msg_123', 'Новый текст inline');
// $result = editMessageWithKeyboard(123456, 789, 'Текст с клавиатурой');
?>
python
import requests
def edit_message_text(token, text, chat_id=None, message_id=None, inline_message_id=None,
parse_mode=None, entities=None, link_preview_options=None,
reply_markup=None, business_connection_id=None):
"""
Редактирует текст сообщения в Telegram.
Args:
token (str): Токен бота
text (str): Новый текст сообщения (1-4096 символов)
chat_id (int/str, optional): ID чата или username канала
message_id (int, optional): ID сообщения для редактирования
inline_message_id (str, optional): ID inline-сообщения
parse_mode (str, optional): Режим парсинга ('HTML' или 'Markdown')
entities (list, optional): Список объектов MessageEntity
link_preview_options (dict, optional): Настройки предпросмотра ссылок
reply_markup (dict, optional): Inline-клавиатура
business_connection_id (str, optional): ID бизнес-соединения
Returns:
dict: Ответ от Telegram API
"""
url = f"https://api.telegram.org/bot{token}/editMessageText"
# Основные обязательные параметры
params = {'text': text}
# Добавляем параметры в зависимости от типа сообщения
if inline_message_id:
params['inline_message_id'] = inline_message_id
elif chat_id and message_id:
params['chat_id'] = chat_id
params['message_id'] = message_id
else:
raise ValueError("Необходимо указать либо inline_message_id, либо chat_id и message_id")
# Опциональные параметры
if parse_mode:
params['parse_mode'] = parse_mode
if entities:
params['entities'] = entities
if link_preview_options:
params['link_preview_options'] = link_preview_options
if reply_markup:
params['reply_markup'] = reply_markup
if business_connection_id:
params['business_connection_id'] = business_connection_id
response = requests.post(url, json=params)
return response.json()
# Пример 1: Редактирование обычного сообщения
def example_edit_regular_message():
token = "YOUR_BOT_TOKEN"
chat_id = 123456789
message_id = 42
result = edit_message_text(
token=token,
chat_id=chat_id,
message_id=message_id,
text="Обновленный текст сообщения",
parse_mode="HTML"
)
if result.get('ok'):
print("Сообщение успешно отредактировано")
print(f"Новый текст: {result['result']['text']}")
else:
print(f"Ошибка: {result.get('description')}")
# Пример 2: Редактирование inline-сообщения
def example_edit_inline_message():
token = "YOUR_BOT_TOKEN"
inline_message_id = "1234567890abcdef"
# Создаем inline-клавиатуру
inline_keyboard = {
"inline_keyboard": [[
{"text": "Кнопка 1", "callback_data": "btn1"},
{"text": "Кнопка 2", "callback_data": "btn2"}
]]
}
result = edit_message_text(
token=token,
inline_message_id=inline_message_id,
text="<b>Обновленный inline-сообщение</b>",
parse_mode="HTML",
reply_markup=inline_keyboard
)
if result.get('ok'):
print("Inline-сообщение успешно отредактировано")
else:
print(f"Ошибка: {result.get('description')}")
# Пример 3: Редактирование с бизнес-соединением
def example_edit_business_message():
token = "YOUR_BOT_TOKEN"
business_connection_id = "business_connection_123"
chat_id = 123456789
message_id = 42
result = edit_message_text(
token=token,
business_connection_id=business_connection_id,
chat_id=chat_id,
message_id=message_id,
text="Обновленный текст бизнес-сообщения",
parse_mode="Markdown"
)
if result.get('ok'):
print("Бизнес-сообщение успешно отредактировано")
else:
print(f"Ошибка: {result.get('description')}")
# Пример 4: Редактирование с отключением предпросмотра ссылок
def example_edit_with_link_preview():
token = "YOUR_BOT_TOKEN"
chat_id = 123456789
message_id = 42
link_preview_options = {
"is_disabled": True,
"url": "https://example.com",
"prefer_small_media": False,
"prefer_large_media": False,
"show_above_text": False
}
result = edit_message_text(
token=token,
chat_id=chat_id,
message_id=message_id,
text="Сообщение с отключенным предпросмотром ссылок: https://example.com",
link_preview_options=link_preview_options
)
if result.get('ok'):
print("Сообщение отредактировано с настройками предпросмотра")
else:
print(f"Ошибка: {result.get('description')}")
# Пример 5: Редактирование с сущностями (entities)
def example_edit_with_entities():
token = "YOUR_BOT_TOKEN"
chat_id = 123456789
message_id = 42
entities = [
{
"type": "bold",
"offset": 0,
"length": 10
},
{
"type": "italic",
"offset": 12,
"length": 8
}
]
result = edit_message_text(
token=token,
chat_id=chat_id,
message_id=message_id,
text="Жирный текст и курсивный текст",
entities=entities
)
if result.get('ok'):
print("Сообщение отредактировано с сущностями")
else:
print(f"Ошибка: {result.get('description')}")
# Запуск примеров (раскомментируйте нужный)
if __name__ == "__main__":
# example_edit_regular_message()
# example_edit_inline_message()
# example_edit_business_message()
# example_edit_with_link_preview()
# example_edit_with_entities()
pass
История изменений
- API 2.0. Добавлен метод editMessageText
- API 5.0. Обновлен метод editMessageText: Добавлена возможность ручного указания текстовых сущностей
- API 7.0. Обновлен метод editMessageText: Заменен параметр disable_web_page_preview на link_preview_options
- API 7.5. Обновлен метод editMessageText: Добавлен параметр business_connection_id
Дополнительно
- Message - Это основной объект, представляющий сообщение в Telegram, который содержит информацию об отправителе, чате, контенте (текст, медиа, служебные данные) и различные метаданные.
- MessageEntity - Объект MessageEntity представляет специальную форматированную сущность в тексте сообщения, такую как упоминания, хэштеги, ссылки или стилизованный текст.
- LinkPreviewOptions - Объект для настройки параметров предварительного просмотра ссылок в сообщениях Telegram.
- InlineKeyboardMarkup - Объект для создания встроенной клавиатуры, которая отображается непосредственно в сообщении.