Как проверить, является ли пользователь администратором или нет в python-telegram-bot?

Я использую python-telegram-bot

Я хочу проверить, является ли пользователь в группе администратором или нет, если пользователь является администратором, он может использовать команды, а если пользователь не является администратором, он получит сообщение о том, что вы не администратор.

Как мне это сделать?

это мой код:


async def add(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    if update.effective_chat.type == "private":
        await update.message.reply_text(f'این دستور فقط در گروه کار میکند ! برای استفاده ربات را به گروه اضافه کنید و از ادمین بخواهید پیام جدید ایجاد کند !')
    else:
        user_message = update.message.text.lstrip("/add")
        if len(user_message) > 10:
            title = user_message.partition('\n')[0]
            body = user_message.lstrip(title)
            author = update.effective_user.username
            await context.bot.send_message(chat_id=update.effective_chat.id, text=f'''
                    🔴 {title}
            ➖➖➖➖➖
            {body}

            ➖➖➖➖➖
             📝پیام ایجاد شده توسط : @{author}
                    ''')

это результат

Вы написали await update.effective_chat.get_administrators(), но ничего не делаете с результатом.

Julia 08.12.2022 19:43

@Julia Извините, это было для тестирования, я отредактировал вопрос

Mahdi mk 08.12.2022 19:51
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
135
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Метод Bot.get_chat_member (Официальная документация Telegram) позволяет получить информацию о текущем статусе пользователя в группе. Кроме того, вы, по-видимому, уже нашли Bot.get_chat_administrators, который позволяет вам получить список всех текущих администраторов чата. При использовании этого вы должны проверить, присутствует ли отправитель обновления в этом списке. Это может, например. выглядеть так:

chat_admins = await update.effective_chat.get_administrators()
if update.effective_user in (admin.user for admin in chat_admins):
    print("user is admin")
else:
    print("user is not an admin")

Здесь я использовал, что объекты типа User сравнимы по равенству в PTB.


Отказ от ответственности: в настоящее время я являюсь сопровождающим python-telegram-bot.

Другие вопросы по теме

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