Админка для бота на AIOGRAM

Рейтинг: 0Ответов: 0Опубликовано: 25.05.2023

пишу бота на AIOGRAM.

@dp.message_handler(commands=['main_sub'])
async def main_sub(message: types.Message):
    adm = db.get_subscriptions_addmin
    if message.from_user.id not in adm:
        await bot.send_message(message.chat.id, 'Не дозволено')
    else:
        db.update_subscription_addmin(message.from_user.id, True)
        await message.answer('Вы админ')

Есть такая функция, мне нужно не дать использовать эту команду пользователю, который не является админом. Но при этом я хочу, чтобы бот брал данные из бд, а не вписывать ID админов вручную. Как это сделать?

def get_subscriptions_addmin(self, glavni_admin = True):
    """Получаем всех админов бота"""
    with self.connection:
        return self.cursor.execute("SELECT `user_id`, `glavni_admin` FROM `subscriptions` WHERE `glavni_admin` = ?", (glavni_admin,)).fetchall()

Вот ошибки, которые возникают, при использовании этой функции.

ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-9' coro=<Dispatcher._process_polling_updates() done, defined at D:\Telegram_Bot\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py:407> exception=TypeError("argument of type 'method' is not iterable")>
Traceback (most recent call last):
  File "D:\Telegram_Bot\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 "D:\Telegram_Bot\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 235, in process_updates
    return await asyncio.gather(*tasks)
  File "D:\Telegram_Bot\venv\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
    response = await handler_obj.handler(*args, **partial_data)
  File "D:\Telegram_Bot\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 256, in process_update
    return await self.message_handlers.notify(update.message)
  File "D:\Telegram_Bot\venv\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
    response = await handler_obj.handler(*args, **partial_data)
  File "D:\Telegram_Bot\bot.py", line 52, in main_sub
    if message.from_user.id not in adm:
TypeError: argument of type 'method' is not iterable

По видимому, не берётся ID из базы данных и в связи с этим бот не понимает, что я от него хочу. Либо я делаю не так, как надо, возможно написано криво.

Ответы

Ответов пока нет.