@kafarof

Ф sqlite3.ProgrammingError: Cannot operate on a closed database. Что делать?

from aiogram import F, Router
from aiogram.filters import CommandStart, Command
from aiogram.types import Message
from aiogram.fsm.state import  StatesGroup, State
from aiogram.fsm.context import FSMContext
import sqlite3

router = Router()

db = sqlite3.connect('DataBase.db')

cur = db.cursor()

class Reg(StatesGroup):
    name = State()
    School_class = State()


@router.message(CommandStart())
async def cmd_start(message: Message):
    await message.answer('Привет! Ты попал в телеграм бота по игре про ВОВ. '
                         'Пропиши команду /devtopeople')

@router.message(Command('devtopeople'))
async def help1(message: Message):
    await message.reply('Отлично, перед тем, чтобы начать игру, можешь прочитать информацию про'
                        'создателя и заказчика бота, по команде: /info'
                        'Чтобы начать игру прямо сейчас, команда будет рассказано в команде /help.')

@router.message(Command('help'))
async def help(message: Message):
    await message.answer('Команда для начала: /StartGame')
    await message.answer('Все Ваши данные будут направлены в Базу Данных (Ваш статический TGID и Имя.'
                         'Поэтому рекомендую ставить на время ваше настоящее имя в Телеграм на время'
                         'игры')
    await message.answer('Ваши данные нужны для того, чтобы понимать кто и как ответил. так что можете не беспокоиться. Все данные будут зашифрованы и никто ваши Данные не узнает. ')

@router.message(Command('StartGame'))
async def reg1(message: Message, state: FSMContext):
    await state.set_state(Reg.name)
    await message.answer('Начинаем! Как тебя зовут?')
@router.message(Reg.name)
async def reg_2(message: Message, state: FSMContext):
    await state.update_data(name=message.text)
    await state.set_state(Reg.School_class)
    await message.answer('Введите класс')

@router.message(Reg.School_class)
async def reg3(message: Message, state: FSMContext):
    await state.update_data(School_class=message.text)
    data = await  state.get_data()
    await message.answer(f'Хорошо! Мы закончили.Ваше имя: {data["name"]}, Класс: {data["School_class"]} ')
    cur.execute(f'INSERT INTO result(name) VALUES({data["name"]})')
    db.commit()
    cur.execute(f'INSERT INTO result(class) VALUES({data["class"]})')
    db.commit()
    await state.clear()

@router.message(Command('info'))
async def info(message: Message):
    await message.answer('Создатель бота - kafarof '
                         'Заказчик бота -  '
                         'Цена разработки: за идею')

@router.message(Command('test'))
async def test(message: Message):
        await message.reply(reply_markup=kb.main)

db.close()
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
Убрать db.close() из кода?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы