Как распознавать дин. команды боту?

Есть бот. И он принимает команды вида "/command1" , которые уже прописаны. Но что делать, если мне нужно распознавать команды типа:
"/search_XXX", где xxx динамическое число не прописанное заранее, чтобы посылать запрос в БД. Прописывать все известные не вариант, ибо их слишком много..
Использую aiogram.
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Просто сделать декоратор с использованием регекса

@dp.message_handler(regexp=r'^/search_\w+$')

Дальше уже импортировать библиотеку re и достать нужную часть текста
@dp.message_handler(regexp=r'^/search_\w+$')
async def text(message: types.Message):
    query = re.search(r'^/search_(\w+)$', message.text).group(1)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@o5a
Если xxx это просто параметр поиска, то его можно передавать через пробел. Тогда команда будет универсальная, а аргумент можно вытащить из строки.
@bot.message_handler(commands=['search'])
def search(message):
  if ' ' in message.text:
    param = message.text.split(maxsplit=1)[1]
    ...
  else:
    bot.send_message(message.chat.id, 'no params')

Будет понимать команды вида
/search XXX
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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