Проблема заключается в том, что обработчики не регистрируют поступающие фото и видео в состояниях add_photographi и add_video (Если убрать content type, то он не регистрирует обычные сообщение). Хотя состояние kill отрабатывает на отлично
@dp.message_handler(state=Create.create_spam)
async def spam(message: types.Message, state: FSMContext):
async with state.proxy() as data_storage:
if message.text == "Добавить фото" or message.text == "Изменить фото":
data_storage["type"] = "photo"
await bot.send_message(message.chat.id, "Отправьте фото для рассылки", reply_markup=ReplyKeyboardRemove())
await Create.add_photographi.set()
elif message.text == "Добавить видео" or message.text == "Изменить видео":
data_storage["type"] = "video"
await bot.send_message(message.chat.id, "Отправьте видео для рассылки", reply_markup=ReplyKeyboardRemove())
await Create.add_video.set()
elif message.text == "Добавить текст" or message.text == "Изменить текст":
await bot.send_message(message.chat.id, "Отправьте текст для рассылки", reply_markup=ReplyKeyboardRemove())
await Create.add_text.set()
elif message.text == "Добавить кнопку" or message.text == "Изменить кнопку":
await bot.send_message(message.chat.id, "Отправьте текст для кнопки", reply_markup=ReplyKeyboardRemove())
await Create.add_button_text.set()
elif message.text == "Отправить":
users = Database.get_user()
for user in users:
await generate_send_mail(user, state)
await bot.send_message(message.chat.id, "Успешно отправлено!", reply_markup=ReplyKeyboardRemove())
await state.finish()
elif message.text == "Сбросить настройки":
await bot.send_message(message.chat.id, "Вы уверены, что хотите полностью сбросить", reply_markup=yes_no_markup)
await Create.kill.set()
else:
configurate_markup = await generate_markup(state)
await asyncio.sleep(3)
await bot.send_message(message.chat.id, "Нет такого выбора", reply_markup=configurate_markup)
await Create.create_spam.set()
@dp.message_handler(content_types=ContentTypes.PHOTO, state=Create.add_photographi)
async def phot(message: types.Message, state: FSMContext):
async with state.proxy() as data_storage:
data_storage["photo"] = message.photo[-1].file_id
await generate_send_mail(message.chat.id, state)
configurate_markup = await generate_markup(state)
await asyncio.sleep(3)
await bot.send_message(message.chat.id, "Что ещё мы добавим?", reply_markup=configurate_markup)
await Create.create_spam.set()
@dp.message_handler(content_types=ContentTypes.VIDEO, state=Create.add_video)
async def video(message: types.Message, state: FSMContext):
async with state.proxy() as data_storage:
data_storage["photo"] = message.video.file_id
await generate_send_mail(message.chat.id, state)
configurate_markup = await generate_markup(state)
await asyncio.sleep(3)
await bot.send_message(message.chat.id, "Что ещё мы добавим?", reply_markup=configurate_markup)
await Create.create_spam.set()
@dp.message_handler(state=Create.kill)
async def kill(message: types.Message, state: FSMContext):
async with state.proxy() as data_storage:
if message.text == "Да":
elements = ["text", "photo", "video", "type", "markup", "button_text"]
for element in elements:
if element in data_storage:
data_storage.pop(element)
await bot.send_message(message.chat.id, 'Данные очищены!\nЕсли вы хотети создать пост, введите "/get"', reply_markup=ReplyKeyboardRemove())
await state.finish()
elif message.text == "Нет":
await generate_send_mail(message.chat.id, state)
configurate_markup = await generate_markup(state)
await asyncio.sleep(3)
await bot.send_message(message.chat.id, "Что ещё мы добавим?", reply_markup=configurate_markup)
await Create.create_spam.set()