Админка для бота на AIOGRAM
пишу бота на 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 из базы данных и в связи с этим бот не понимает, что я от него хочу. Либо я делаю не так, как надо, возможно написано криво.
Источник: Stack Overflow на русском