Я использую 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}
''')
это результат
@Julia Извините, это было для тестирования, я отредактировал вопрос






Метод 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.
Вы написали
await update.effective_chat.get_administrators(), но ничего не делаете с результатом.