Бот не достает данные из базы данных

Подскажите, пожалуйста, почему асинхронный вызов функции в handlers не "достает" данные из базы данных и бот выводит "Рецепт не найден."?

#handlers.py
from aiogram.types import Message
from aiogram.dispatcher.filters import Command

from main import dp
from sql import recipes


@dp.message_handler(Command('persik'))
async def get_recipes(message: Message):
    
    print('Получаем значение команды')
    item = message.text.split(maxsplit=1)
    print(item)

    if not item:
        await message.answer("Пожалуйста, укажите название рецепта.")
        return

    # Получаем информацию о рецепте из базы данных по указанному названию
    recipe_info = await recipes(item)

    print(recipe_info)

    if not recipe_info:
        await message.answer("Рецепт не найден.")
        return

    if len(recipe_info) < 2:
        await message.answer("Информация о рецепте неполная.")
        return

    recipe_name = recipe_info[0]
    recipe_ingredients = recipe_info[1]
    await message.answer(f"Рецепт: {recipe_name}\nИнгредиенты: {recipe_ingredients}")
#sql.py
import sqlite3


async def recipes(item):
    conn = sqlite3.connect('recipes.db')
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM tort WHERE Команда = ?", (str(item),))
    recipes_info = cursor.fetchall()
    conn.close()

    return recipes_info
#main.py
import asyncio
from aiogram import Bot, Dispatcher, executor

loop = asyncio.new_event_loop()
bot = Bot('6113793338:AAHcxo-4cGldzKqTgFpqDT2sWoJcEXVrqVc', parse_mode='HTML')
dp = Dispatcher(bot, loop=loop)

if name == 'main':
    from handlers import dp
    executor.start_polling(dp)

Ответы (1 шт):

Автор решения: gord1402

Метод split разделяет строку в массив по пробелам т.е. если на вход идёт строка "/persik somename" то результатом выполнения split будет ["/persik", "somename"].

Почти уверен, что в бд рецепты не хранятся в таком виде. Так что нам нужно получить название рецепта для этого используем item[1] (получить 2 элемент списка). recipe_info = await recipes(item[1])

Также проверку на существование имени нужно реализовать через len:

if len(item) < 2:
        await message.answer("Пожалуйста, укажите название рецепта.")
        return

Также стоит учитывать что данным способом данные ищутся точно, то есть ошибись пользователь на символ и он ничего не найдёт. О том как это исправить можно посмотреть тут

→ Ссылка