Задать вопрос
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())
  • Вопрос задан
  • 211 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Решения вопроса 1
@Everything_is_bad
я бы сделал это на уровне Middleware https://docs.aiogram.dev/en/latest/dispatcher/midd...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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