мне добавить кнопку в уже имеющуюся клавиатуру? то есть, человек пишет /menu ,идёт проверка на модератора и если юзер модератор, выдаётся тоже меню (что и для обычного юзера) только с дополнительной кнопкой «админка» внизу?
keyboard.add(button) или keyboard.insert(button)
if “функция_для_проверки_статуса” == админ (или модератор): keyboard.add(кнопка_для_админа)
Тут на самом деле много вариантов . Давайте представим что у нас в раздел меню у нас выходят много хендлеров . Тут на самом деле я бы выбрал 2 метода . Первый это написать фильтр который тут явно не подходит .2 метод Я бы создал функцию которая проверяла бы char_id в админах и возвращала бы ReplyKeyboadMarkup . async def get_menu(chat_id): If chat_id in admin_list: keyboard.add("Кнопка") return keyboard.
А ещё лучше вынести проверку на админа на уровень выше, ибо это не должно быть в ответственности функции для генерации клавиатуры В функцию передавать уже is_admin: bool Да и зачем эту функцию делать асинхронной?
На случай чтобы в этой функции вызвать базу данных где хранятся например админы , как вариант .
Как я написал выше, это вне ответственности данной функции
Я это понял и полностью согласен
А почему ты не хочешь сделать проверку при старте?
можно и так, а можно просто добавлять кнопку в клавиатуру если id юзера есть в списке админов, чтобы не создавать новый экземпляр клавиатуры
Я знаю , просто суть
Обсуждают сегодня