Пишу бота на aiogram. Мне надо сохранять информацию о пользователях в БД. Выбрал aiosqlite, а не sqlite, так как она асинхронная, как и aiogram. Но в БД почему-то не добавляется запись, хотя таблица создается.
Вот код хэдлера:
@all_router.message(Command('start'))
async def cmd_start(message: Message):
load_dotenv()
kb = None
if message.from_user.id == int(os.getenv('ADMIN_ID')):
kb = admin_keyboard
else:
kb = reply_menu_keyboard
users = Users()
await users.add_user(message.from_user.id)
await message.answer(await start_text(message.from_user.username), parse_mode='html', reply_markup=kb)
Вот код методов в классе
Users
, который отвечает за CRUD:
class Users:
'''This class implements commands for working with the bot's users database'''
def __init__(self) -> None:
self.path = DB_PATH
async def start(self) -> None:
async with aiosql.connect(self.path) as con:
cursor = await con.cursor()
request = '''CREATE TABLE IF NOT EXISTS users (
user_telegram_id INTEGER PRIMARY KEY NOT NULL,
status TEXT NOT NULL)'''
await cursor.execute(request)
async def add_user(self, uid: int) -> None:
'''The method adds a user into the table'''
await self.start()
async with aiosql.connect(self.path) as con:
cursor = await con.cursor()
request = 'INSERT INTO users(user_telegram_id, status) VALUES(?, ?)'
await cursor.execute(request, (uid, 'member'))
Когда бы не нажимал
/start
, ничего не происходит, и ошибки никакой тоже не показывает.