Копирование формата сообщения пользователя telebot
Моя задача состоит в том, чтобы каким-то образом сохранить формат сообщения (жирный, курсив, подчёркнутый текст и т.д.) пользователя, после чего отправить ему точную копию его сообщения с тем же форматом. Как это можно сделать?
UPD: Такой код почему-то не работает, бот отправляет обычное сообщение, без формата:
def copy_format(message):
bot.send_message(message.chat.id, text=message.text, entities=message.entities)
@bot.message_handler(commands=['test'])
def test(message):
bot.send_message(chat_id=message.chat.id, text='Отправь сообщение с форматом')
bot.register_next_step_handler_by_chat_id(chat_id=message.chat.id, callback=copy_format)
Ответы (4 шт):
Попробуйте добавить
def copy_format(message):
text2 = update.message.reply_text
bot.update.message.reply_text(message.chat.id, caption=text2, entities=message.entities, parse_mode=ParseMode.MARKDOWN)
Есть только один способ (или я не нашел других):
При вводе формата пользователем, он должен ввести не как обычно __text__, а _text_. Или не **text**, а *text* и в таком случае Вам необходимо добавить в строку parse_mode = Markdown:
def copy_format(message):
bot.send_message(message.chat.id, text=message.text, entities=message.entities, parse_mode="Markdown")
Что мы получаем:
Нашёл способ. У объекта сообщения (Message) есть метод html_text. Не уверен насчёт markdown_text, но работает это следующим образом:
@bot.message_handler()
def handler(msg):
formatted_text = msg.html_text
print(html_text)
Легко! Сразу вставлю код, ниже поясню:
def copy_formatting(message: Message):
bot.send_message(message.chat.id, message.text, entities=message.entities)
Поясняю: Объект класса telebot.types.Message обладает атрибутом entities, где хранится вся информация о форматировании (проверял, поддерживаются все виды, доступные в telegram). Такие методы как TeleBot.send_message(...) и TeleBot.edit_message_text(...) имеют аргументы entities, засчет чего можно сохранять и воспроизводить параметры форматирования текста.
Надеюсь, помог, всем хорошего дня!
