sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type. как решить
bot.py
:
import logging
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types.message import ContentTypes
import config as cfg
from db import Database
import markups as nav
logging.basicConfig(level=logging.INFO)
bot = Bot(token=cfg.token)
dp = Dispatcher(bot)
db = Database("database.db")
@dp.message_handler(commands=['start'])
async def start(message):
if message.chat.type == 'private':
if not db.user_exists(message.from_user.id):
db.add_user(message.from_user.id)
await bot.send_message(message.from_user.id, f"Добро пожаловать!\nВаш счёт: {db.user_money(message.from_user)} руб.")
if __name__ == "__main__":
executor.start_polling(dp, skip_updates = True)
db.py
:
import sqlite3
class Database:
def __init__(self, db_file):
self.connection = sqlite3.connect(db_file)
self.cursor = self.connection.cursor()
def user_exists(self, user_id):
with self.connection:
result = self.cursor.execute("SELECT * FROM `users` WHERE `user_id` = ?", (user_id,)).fetchall()
return bool(len(result))
def add_user(self, user_id):
with self.connection:
self.cursor.execute("INSERT INTO `users` (`user_id`) VALUES (?)", (user_id,))
def user_money(self, user_id):
with self.connection:
result = self.cursor.execute("SELECT `money` FROM `users` WHERE `user_id` = ?", (user_id,)).fetchmany(1)
return int(result[0][0])
def set_money(self, user_id, money):
with self.connection:
return self.cursor.execute("UPDATE `users` SET `money` = ? WHERE `user_id` = ?", (money, user_id,))
Ошибка:
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-9' coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\markp\OneDrive\Рабочий стол\Бот\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py:407> exception=InterfaceError('Error binding parameter 0 - probably unsupported type.')>
Traceback (most recent call last):
File "C:\Users\markp\OneDrive\Рабочий стол\Бот\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 415, in _process_polling_updates
for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
File "C:\Users\markp\OneDrive\Рабочий стол\Бот\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 235, in process_updates
return await asyncio.gather(*tasks)
File "C:\Users\markp\OneDrive\Рабочий стол\Бот\venv\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
File "C:\Users\markp\OneDrive\Рабочий стол\Бот\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 256, in process_update
return await self.message_handlers.notify(update.message)
File "C:\Users\markp\OneDrive\Рабочий стол\Бот\venv\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
File "C:\Users\markp\OneDrive\Рабочий стол\Бот\bot.py", line 21, in start
await bot.send_message(message.from_user.id, f"Добро пожаловать!\nВаш счёт: {db.user_money(message.from_user)} руб.")
File "C:\Users\markp\OneDrive\Рабочий стол\Бот\db.py", line 19, in user_money
result = self.cursor.execute("SELECT 'money' FROM 'users' WHERE 'user_id' = ?", (user_id,)).fetchmany(1)
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
Источник: Stack Overflow на русском