Как сохранить текст который отправил пользователь в html формате?
У меня есть в коде админка, где происходит рассылка сообщения и фото по пользователям, есть проблема, то что когда пользователь отправляет мне текст в лс( а в тексте присутствуют ссылки, жирные шрифты, цитирование и тд), как мне сохранить этот текст так же как отправил пользователь и разослать сообщение по боту?
Код:
class MailingPhotos(StatesGroup): text = State() photo = State() '''Рассылка с фото''' @dp.message_handler(Text(equals='✏️ Рассылка с фото')) async def mailing_photos(message: types.Message): print(1) try: await bot.send_message(message.from_user.id, '<b>Введите текст(✏️Рассылка с фото)</b>', parse_mode=types.ParseMode.HTML) await MailingPhotos.text.set() except ValueError: await message.answer('❗️ Значение должно быть строкой') @dp.message_handler(state=MailingPhotos.text) async def text_mailing_photo(message: types.Message, state=FSMContext): async with state.proxy() as data: data['text'] = html.escape(message.text) # Отправка текста и фотографии print(data['text']) await bot.send_message(message.from_user.id, '<b>Теперь введите фотографию для рассылки</b>', parse_mode=types.ParseMode.HTML) await MailingPhotos.text.set() await MailingPhotos.next() @dp.message_handler(state=MailingPhotos.photo, content_types=ContentType.PHOTO) async def photo_mailing_photo(message: types.Message, state=FSMContext): async with state.proxy() as data: data['photo'] = message.photo[-1].file_id #photo_id = message.photo[-1].file_id # Получение file_id последней отправленной фотографии all_user_mailing_photo = db_test_pay.mailing_confirmed() counter = 0 for i in all_user_mailing_photo: await bot.send_photo(chat_id=i[0], photo=data['photo'], caption=data['text'], parse_mode=types.ParseMode.HTML) counter += 1 await bot.send_message(message.from_user.id, f'''✅ Рассылка успешно завершена!</b> <b>Количество отправленных сообщений:</b> {counter}''', parse_mode=types.ParseMode.HTML) # Очистка состояния await state.finish() |
class MailingPhotos(StatesGroup): text = State() photo = State() '''Рассылка с фото''' @dp.message_handler(Text(equals='✏️ Рассылка с фото')) async def mailing_photos(message: types.Message): print(1) try: await bot.send_message(message.from_user.id, '<b>Введите текст(✏️Рассылка с фото)</b>', parse_mode=types.ParseMode.HTML) await MailingPhotos.text.set() except ValueError: await message.answer('❗️ Значение должно быть строкой') @dp.message_handler(state=MailingPhotos.text) async def text_mailing_photo(message: types.Message, state=FSMContext): async with state.proxy() as data: data['text'] = html.escape(message.text) # Отправка текста и фотографии print(data['text']) await bot.send_message(message.from_user.id, '<b>Теперь введите фотографию для рассылки</b>', parse_mode=types.ParseMode.HTML) await MailingPhotos.text.set() await MailingPhotos.next() @dp.message_handler(state=MailingPhotos.photo, content_types=ContentType.PHOTO) async def photo_mailing_photo(message: types.Message, state=FSMContext): async with state.proxy() as data: data['photo'] = message.photo[-1].file_id #photo_id = message.photo[-1].file_id # Получение file_id последней отправленной фотографии all_user_mailing_photo = db_test_pay.mailing_confirmed() counter = 0 for i in all_user_mailing_photo: await bot.send_photo(chat_id=i[0], photo=data['photo'], caption=data['text'], parse_mode=types.ParseMode.HTML) counter += 1 await bot.send_message(message.from_user.id, f'''✅ Рассылка успешно завершена!</b> <b>Количество отправленных сообщений:</b> {counter}''', parse_mode=types.ParseMode.HTML) # Очистка состояния await state.finish()
Вылезает ошибка: File "C:UsersclazyAppDataLocalProgramsPythonPython310libsite-packagesaiogramutilsexceptions.py", line 140, in detect
raise err(cls.text or description)
aiogram.utils.exceptions.CantParseEntities: Can't parse entities: unexpected end tag at byte offset 55
Дополнительно:
В тегах укажите питон, а не хтмл, вы же не на хтмл это пишете...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для сохранения текста, отправленного пользователем через HTML форму, в HTML формате, вам необходимо использовать PHP для обработки данных и сохранения их в файле или базе данных.
Вот пример кода на PHP, который позволит вам сохранить текст в HTML формате:
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $text = $_POST["text"]; // Проверяем, что текст не пустой if (!empty($text)) { // Открываем файл для записи $file = fopen("saved_text.html", "w"); // Записываем текст в файл в HTML формате fwrite($file, "<p>" . $text . "</p>"); // Закрываем файл fclose($file); echo "Текст успешно сохранен в HTML формате!"; } else { echo "Пожалуйста, введите текст перед сохранением!"; } } ?>
Этот код проверяет, была ли отправлена форма методом POST, затем извлекает текст из поля формы с именем "text". Если текст не пустой, он открывает файл "saved_text.html" для записи и записывает в него текст в HTML формате с помощью тегов , и
. Затем файл закрывается и выводится сообщение о успешном сохранении.
Не забудьте создать HTML форму с полем для ввода текста и кнопкой отправки, чтобы пользователи могли отправлять текст на обработку PHP.