Задать вопрос
dkpage
@dkpage
Учусь

Как сделать доступ к боту только для определенных пользователей или чата?

Есть бот, который должен выполнять запросы, только для определенных людей или чата, что бы другие в телеге не смогли им пользоваться. Так скажем приватный бот.
Пробовал через router.message.filter но если писать условие через or то бот запускается, но условие для фильтрации запросов не работает, то есть метод "id" работает у всех.
Потом сделал:
router.message.filter(F.chat.type == ChatType.SUPERGROUP,  F.from_user.id.in_({42, 1000, 123123}))

и заработало, но будет ли это правильно или есть другие правильные решения, так как надо будет не только по этим условия фильтровать кому можно будет пользоваться а кому нет

import asyncio

from aiogram import Router, Bot, Dispatcher, F
from aiogram.client.default import DefaultBotProperties
from aiogram.types import Message
from aiogram.filters import Command, CommandObject
from aiogram.enums import ParseMode, ChatType

router = Router()
router.message.filter(F.chat.type == ChatType.SUPERGROUP, F.from_user.id == 00000000 or F.from_user.id == 111111111)

@router.message(Command("id"))
async def id(message: Message, bot: Bot):
    await bot.send_message(message.chat.id, f"ID {message.from_user.full_name}: {message.from_user.id}")


async def main():
    TOKEN = open("TOKEN.txt").read()
    bot = Bot(TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
    dp = Dispatcher()
    dp.include_router(router)

    await bot.delete_webhook(True)
    await dp.start_polling(bot)

if name == 'main':
    asyncio.run(main())
  • Вопрос задан
  • 107 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
я бы сделал это на уровне Middleware https://docs.aiogram.dev/en/latest/dispatcher/midd...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы