Ошибка ValueError: parameters are of unsupported type, при отправке боту команды /subscribe

JohnyVodniy

Новичок
Пользователь
Фев 12, 2021
2
0
1
Саратов
Добрый вечер. У меня возникла ошибка и не могу понять откуда растут ноги. Запускаю Эхо_Бот и после отправки ему команды "/subscribe" ничего не происходит, но в командной строке появляется ошибка
"ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-9' coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\ageyc\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py:380>
exception=ValueError('parameters are of unsupported type')>
Traceback (most recent call last):
File "C:\Users\ageyc\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 388, in _process_polling_updates
for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
File "C:\Users\ageyc\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 225, in process_updates
return await asyncio.gather(*tasks)
File "C:\Users\ageyc\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
File "C:\Users\ageyc\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 246, in process_update
return await self.message_handlers.notify(update.message)
File "C:\Users\ageyc\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
File "C:\Users\ageyc\Desktop\TelegramBot\bot.py", line 32, in unsubsribe
if (not db.subscriber_exists(message.from_user.id)):
File "C:\Users\ageyc\Desktop\TelegramBot\sqlighter.py", line 18, in subscriber_exists
result = self.cursor.execute("SELECT * FROM `subscriptions` WHERE `user_id` = ?", (user_id)).fetchall()
ValueError: parameters are of unsupported type"
Не могу разобраться на каком этапе и с чем возникает конфликт, при этом бот продолжает работать. Дополнительно прикладываю скрин командной строки с ошибкой. Помогите понять в чем ошибка, заранее благодарен!

Код основного файла bot.py

Python:
import config
import logging


from aiogram import Bot, Dispatcher, executor, types
from sqlighter import SQLighter

#задаем уровень логов
logging.basicConfig(level=logging.INFO)

#инициализируем бота
bot = Bot(token=config.API_TOKEN)
dp = Dispatcher(bot)

# инициализируем соединение с БД
db = SQLighter('db.db')

# Команда активации подписки
@dp.message_handler(commands=['subscribe'])
async def subscribe(message: types.Message):
    if(not db.subscriber_exists(message.from_user.id)):
        # если юзера нет в базе, добавляем его
        db.add_subscriber(message.from_user.id)
    else:
        # если он уже есть, то просто обновляем ему статус подписки
        db.update_subscription(message.from_user.id, True)
       
    await message.answer("Вы успешно подписались на рассылку! \nЖдите, скоро появяться новые раздачи игр и вы узнаете о них первыми =)")

# Команда отписки
@dp.message_handler(commands=['unsubscribe'])
async def unsubscribe(message: types.Message):
    if(not db.subscriber_exists(message.from_user.id)):
        # если юзера нет в базе, добавляем его с неактивной подпиской (запоминаем)
        db.add_subscriber(message.from_user.id, False)
        await message.answer("Вы итак не подписаны.")
    else:
        # если он уже есть, то просто обновляем ему статус подписки
        db.update_subscription(message.from_user.id, False)
        await message.answer("Вы успешно отписаны от рассылки.")
   

#Эхо
@dp.message_handler()
async def echo(message: types.Message):
    await message.answer(message.text)

#запускаем лонг поллинг
if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

Код файла sqlighter.py

Python:
import sqlite3

class SQLighter:

        def __init__(self, database_file):
            """Подлючаемся к БД и сохраняем курсор соединения"""
            self.connection = sqlite3.connect(database_file)
            self.cursor = self.connection.cursor()
       
        def get_subscriptions(self, status = True):
            """Получаем всех активных подписчиков бота"""
            with self.connection:
                return self.cursor.execute("SELECT * FROM `subscriptions` WHERE `status` = ?", (status,)).fetchall()

        def subscriber_exists(self, user_id):
            """Проверяем есть ли уже юзер в базе"""
            with self.connection:
                result = self.cursor.execute("SELECT * FROM `subscriptions` WHERE `user_id` = ?", (user_id)).fetchall()
                return bool(len(result))
       
        def add_subscriber(self, user_id, status = True):
            """Добовляем нового подписчика"""
            with self.connection:
                return self.cursor.execute("INSERT INTO `subscriptions` (`user_id`, `status`) VALUES (?,?)", (user_id, status))

        def update_subscription(self, user_id, status):
            """Обновляем статус подписки пользователя"""
            with self.connection:
                return self.cursor.execute("UPDATE `subsriptions` SET `status` = ? WHERE `user_id` = ?", (status, user_id))
       
        def close(self):
            """Закрываем соединение с БД"""
            self.connection.close()
aiogram 2.11.2
aiohttp 3.7.3
APScheduler 3.6.3
astroid 2.4.2
async-timeout 3.0.1
attrs 20.3.0
Babel 2.9.0
certifi 2020.12.5
cffi 1.14.4
chardet 3.0.4
colorama 0.4.4
cryptography 3.4.4
idna 3.1
isort 5.7.0
lazy-object-proxy 1.4.3
mccabe 0.6.1
multidict 5.1.0
pip 21.0.1
pycparser 2.20
pylint 2.6.0
python-telegram-bot 13.2
pytz 2021.1
setuptools 49.2.1
six 1.15.0
toml 0.10.2
tornado 6.1
typing-extensions 3.7.4.3
tzlocal 2.1
wrapt 1.12.1
yarl 1.6.3
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    201,4 КБ · Просмотры: 3
Последнее редактирование:

eff1c

Новичок
Пользователь
Дек 27, 2020
5
0
3
"ValueError: parameters are of unsupported type"
Пишет же, что параметры не поддерживаемого типа
 

JohnyVodniy

Новичок
Пользователь
Фев 12, 2021
2
0
1
Саратов
"ValueError: parameters are of unsupported type"
Пишет же, что параметры не поддерживаемого типа
Я согласен, я это тоже понял когда перевел ошибку, но какие именно параметры?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 642
472
83
Я согласен, я это тоже понял когда перевел ошибку, но какие именно параметры?
вот тут
File "C:\Users\ageyc\Desktop\TelegramBot\sqlighter.py", line 18, in subscriber_exists
result = self.cursor.execute("SELECT * FROM `subscriptions` WHERE `user_id` = ?", (user_id)).fetchall()
 

Форум IT Специалистов