где ошибка в aiogram v2.8 чат бот получал, сообщение сохранял его и спрашивал дальше
я хотел написать чат бот но что-то накосячил.... функционал команд бота написал с библиотекой aiogram v2.8
- пользователь вводит автомобиль после чего он сохраняется в базу данных
- можно вывести все машины одним списком
проблема в том что запускаю могу ввести марку машины а дальше бот не выводит следующую команду. help me. как код надо поменять чтобы он работал?
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from aiogram import executor
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher.dispatcher import FSMContext
import sqlite3
# Устанавливаем соединение с базой данных SQLite
conn = sqlite3.connect('cars.db')
cursor = conn.cursor()
# Создание таблицы если её не существует
cursor.execute('''CREATE TABLE IF NOT EXISTS cars
(id INTEGER PRIMARY KEY AUTOINCREMENT,
brand TEXT,
model TEXT,
year INTEGER,
country TEXT)''')
conn.commit()
# Создаем объекты бота и диспетчера
bot = Bot(token="token")
dp = Dispatcher(bot)
dp.middleware.setup(LoggingMiddleware())
# Команда для добавления автомобиля в базу данных
@dp.message_handler(commands=['add_car'])
async def add_car(message: types.Message):
await message.answer("Введите марку автомобиля:")
brand = await ('message')
await message.answer("Введите модель автомобиля:")
model = await bot.wait_for('message')
await message.answer("Введите год выпуска автомобиля:")
year = await bot.wait_for('message')
await message.answer("Введите страну производителя автомобиля:")
country = await bot.wait_for('message')
cursor.execute("INSERT INTO cars (brand, model, year, country) VALUES (?, ?, ?, ?)",
(brand.text, model.text, int(year.text), country.text))
conn.commit()
await message.answer("Автомобиль успешно добавлен в базу данных")
# Команда для вывода списка машин из базы данных
@dp.message_handler(commands=['list_cars'])
async def list_cars(message: types.Message):
cursor.execute("SELECT brand, model, year, country FROM cars")
cars = cursor.fetchall()
if not cars:
await message.answer("В базе данных пока нет автомобилей")
else:
response = "Список автомобилей в базе данных:\n"
for car in cars:
response += f"Марка: {car[0]}, Модель: {car[1]}, Год выпуска: {car[2]}, Страна производитель: {car[3]}\n"
await message.answer(response)
# Запускаем бота
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)