Добрый вечер. У меня возникла ошибка и не могу понять откуда растут ноги. Запускаю Эхо_Бот и после отправки ему команды "/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
Код файла sqlighter.py
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
"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()
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
Вложения
Последнее редактирование: