@DeusExe

Как сохранить полное форматирование текста при его копировании?

Всем привет. Я использую библиотеку telethon для копирования сообщений из одного телеграм-канала в другой, однако не понимаю, как решить проблему сохранения форматирования текста при его копировании. Я передал entities, но текст все равно выходит неформатированным. Пожалуйста, укажите на мою ошибку, так как некоторые стили, такие как text, text, text, копируются нормально, но если это underline или спойлер, то текст приходит неформатированным. Буду очень благодарен за любую помощь.

async def send_media(message, destination_channel_id):
    try:
        if message.media and isinstance(message.media, (MessageMediaPhoto, MessageMediaDocument)):
            return await client.send_message(destination_channel_id, message.text, file=message.media)
    except Exception as e:
        print(f"Ошибка: {e}")


@client.on(events.NewMessage())
async def my_event_handler(event):
    source_channels = await get_source_channels_ids()
    destination_channels = await get_destination_channels_ids()

    if event.chat_id in source_channels:
        text = event.message.text
        entities_to_preserve = event.message.entities

        for destination_channel_id in destination_channels:
            if event.message.media:
                await client.send_file(destination_channel_id, event.message.media, entities=entities_to_preserve, caption=text)
            else:
                await client.send_message(destination_channel_id, text)
  • Вопрос задан
  • 256 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Как насчёт вместо message.text посмотреть в message.text_markdown или message.text_html (доки)? Ну и соответственно указать не text, а markdown или html при вызове send_message().
Ответ написан
@alekssamos
Программист любитель
А почему не копировать методом message.copy? Это как переслать без автора. В защищённых каналах, кажется, тоже должно работать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы