Я хочу сделать такуюю систему: Пользователь выбирает время, источники, актуальность и получает выдачу по желанию. Я сделал следующее:
class StateBot(StatesGroup):
main_state = State()
filter_date_state = State()
filter_source_state = State()
filter_actual_state = State()
@dp.message_handler(lambda message: message.text and 'Фильтр' in message.text)
async def get_date(message: types.Message):
await message.reply("Выберите дату", reply_markup=date_keyboard)
await StateBot.filter_date_state.set()
@dp.message_handler(state=StateBot.filter_date_state)
async def get_source(message: types.Message, state: FSMContext):
await message.reply("Выберите источники", reply_markup=source_keyboard)
global CURRENT_DATA
message = message['text'].lower()
if 'день' in message:
CURRENT_DATA = DATE.DAY
elif 'неделя' in message:
CURRENT_DATA = DATE.WEEK
elif 'месяц' in message:
CURRENT_DATA = DATE.MONTH
elif 'год' in message:
CURRENT_DATA = DATE.YEAR
await StateBot.filter_source_state.set()
@dp.message_handler(text='Далее', state=StateBot.filter_source_state)
async def get_actual(message: types.Message, state: FSMContext):
await message.reply("Выберите актуальность", reply_markup=actual_keyboard)
global CURRENT_SOURCE
CURRENT_SOURCE = list(set(CURRENT_SOURCE))
await StateBot.filter_actual_state.set()
И вот тут начинается проблема. Когда он доходит до источников, я хочу что бы пользователь мог выбрать несколько источников Для чего пишу функцию ниже, но бот упорно не входит в эту функцию не при каких условиях и я не понимаю почему
@dp.message_handler(lambda message: message.text and 'YouTube' in message.text or 'VK' in message.text)
async def add_source(message: types.Message, state: FSMContext):
global CURRENT_SOURCE
message = message['text'].lower()
if 'youtube' in message:
CURRENT_SOURCE.append(SOURCE.YOUTUBE)
if 'vk' in message:
CURRENT_SOURCE.append(SOURCE.VK)
Я так же пробовал:
@dp.message_handler(lambda message: message.text and 'YouTube' in message.text or 'VK' in message.text, state=StateBot.filter_source_state)
@dp.message_handler(text=['YouTube', 'VK'])
@dp.message_handler(filters.Text(contains=['YouTube', 'VK'], ignore_case=True))
Но он, как и раньше просто не заходил в эту функцию при нажатии на кнопки YouTube или VK, что я делаю не так?
P.S. При этом если с самого начала ввести YouTube то он войдёт в эту функцию, но если выбрать дату, а потом нажать на кнопочку YouTube он опять игнорирует эту функцию