← Все вопросы

Как узнать свой Telegram id, чтобы сделать команды только для админа бота?

Задан 8 месяцев назад153 просмотров2 ответа
5

Делаю бота, и хочу, чтобы команду /broadcast (рассылка всем) мог вызвать только я, а обычные пользователи — нет. Как узнать свой id и как проверить в коде, что команду нажал именно админ?

2 ответа

9
✓ Принятый ответ — помог автору

Сначала узнай свой числовой id. Самый простой способ — временно вывести его в любом хендлере:

@dp.message()
async def whoami(message: Message):
    await message.answer(f"Твой id: {message.from_user.id}")

Напиши боту что-нибудь, он пришлёт твой id (например 987654321). Запиши его и убери этот хендлер.

Теперь защити админскую команду обычной проверкой:

ADMIN_ID = 987654321  # твой id

@dp.message(Command("broadcast"))
async def broadcast(message: Message):
    if message.from_user.id != ADMIN_ID:
        await message.answer("Эта команда только для админа")
        return
    await message.answer("Запускаю рассылку...")

id у каждого пользователя уникальный и не меняется, поэтому такая проверка надёжна. Чужой человек id админа не подделает.

3

Если админских команд много, чтобы не копировать if в каждую, в aiogram делают свой фильтр или кладут id в список ADMINS = [987654321, ...] и проверяют message.from_user.id in ADMINS. Так удобно добавлять новых админов в одном месте.

Ваш ответ

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