TL; DR: Here’s a Python Decorator I wrote for Telegram Bots so certain commands can only be used by group admins.
from telegram.constants import CHATMEMBER_ADMINISTRATOR, CHATMEMBER_CREATOR
from telegram import Update
from telegram.ext import CallbackContext
def admin_only(func):
def wrapper(*args, **kwargs):
# all handler function has Update as the first argument
update = args[0]
# get the current user's member status
# https://docs.python-telegram-bot.org/en/stable/telegram.chat.html#telegram.Chat.get_member
member = update.effective_chat.get_member(update.message.from_user.id)
if member.status and member.status in [CHATMEMBER_ADMINISTRATOR, CHATMEMBER_CREATOR]:
# execute the decorated function if it's an admin
return func(*args, **kwargs)
else:
update.message.reply_text("This command is for group admin only.")
return wrapper
@admin_only
def admin_secret(update: Update, context: CallbackContext) -> None:
update.message.reply_text("Here's the secret.")