@vaganojr

Как сделать проверку на администратора в боте телеграмм на Python Telebot?

как сделать так что бы я могу в список вписать ID админов группы а при команде Мута, размута или кика происходила проверка на админа (что бы обычные участники не могли этого делать)? Просто сейчас это не работает...

import telebot
import time

# Создаем объект бота и токен
bot = telebot.TeleBot('')

# Словарь для хранения статистики чата
stats = {}

admins = ['6497839571', '6515223084']

# Обработчик команды /start
@bot.message_handler(commands=['start'])
def start(message):
    bot.reply_to(message, "Что ты тут стартуешь?\n_dev by Arsthedd_", parse_mode= 'Markdown')


@bot.message_handler(content_types=["new_chat_members"])
def foo(message):
    bot.send_message(message.chat.id, "Приветствуем, наш дорогой ученик! ")


# Обработчик команды /help
@bot.message_handler(commands=['help'])
def help(message):
    bot.reply_to(message, "/kick - кикнуть пользователя\n/mute - замутить пользователя на определенное время\n/unmute - размутить пользователя\n/stats - показать статистику чата\n/me - показать свою статистику")

# Обработчик команды /kick
@bot.message_handler(commands=['kick'])
def kick_user(message):  
    if str(message.from_user.id) in admins:
        if message.reply_to_message:
            chat_id = message.chat.id
            user_id = message.reply_to_message.from_user.id
            user_status = bot.get_chat_member(chat_id, user_id).status
            if user_status == 'administrator' or user_status == 'creator':
                bot.reply_to(message, " Невозможно кикнуть администратора.")
            else:
                bot.kick_chat_member(chat_id, user_id)
                bot.reply_to(message, f" *Пользователь* @{message.reply_to_message.from_user.username} _был послан_", parse_mode= 'Markdown')
        else:
            bot.reply_to(message, "Эта команда должна быть использована в ответ на сообщение пользователя, которого вы хотите послать")
    else:
     bot.reply_to(" *Ты не являешься модератором.*", parse_mode='Markdown')
# Обработчик команды /mute
@bot.message_handler(commands=['mute'])
def mute_user(message):
    if message.from_user.id in admins:
        if message.reply_to_message:
            chat_id = message.chat.id
            user_id = message.reply_to_message.from_user.id
            user_status = bot.get_chat_member(chat_id, user_id).status
            if user_status == 'administrator' or user_status == 'creator':
                bot.reply_to(message, " Замутить модератора нельзя брат.")
            else:
                duration = 3 # Значение по умолчанию - 1 минута
                args = message.text.split()[1:]
                if args:
                    try:
                        duration = int(args[0])
                    except ValueError:
                        bot.reply_to(message, "*Неправильный формат времени*", parse_mode= 'Markdown')
                        return
                    if duration < 1:
                        bot.reply_to(message, "Время должно быть положительным числом.", parse_mode= 'Markdown')
                        return
                    if duration > 24:
                        bot.reply_to(message, "Максимальное время - 1 день.")
                        return
                bot.restrict_chat_member(chat_id, user_id, until_date=time.time()+duration*3600)
                bot.reply_to(message, f" Пользователь _@{message.reply_to_message.from_user.username}_ замучен на *{duration} часа(-ов)*.\n\n_По вопросам мута обращайтесь к одному из модераторов_", parse_mode= 'Markdown')
        else:
            bot.reply_to(message, " Эта команда работает только в ответ на сообщение.")
    else:
        bot.reply_to(" *Ты не являешься модератором.*", parse_mode='Markdown')
# Обработчик команды /unmute
@bot.message_handler(commands=['unmute'])
def unmute_user(message):
    if message.from_user.id in admins:
        if message.reply_to_message:
            chat_id = message.chat.id
            user_id = message.reply_to_message.from_user.id
            bot.restrict_chat_member(chat_id, user_id, can_send_messages=True, can_send_media_messages=True, can_send_other_messages=True, can_add_web_page_previews=True)
            bot.reply_to(message, f"Пользователь _@{message.reply_to_message.from_user.username}_ *размучен.*", parse_mode= 'Markdown')
        else:
            bot.reply_to(message, " Эта команда должна быть использована в ответ на сообщение пользователя, которого вы хотите размутить.")
    else:
        bot.reply_to(" *Ты не являешься модератором.*", parse_mode='Markdown')
  • Вопрос задан
  • 26 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Karputs_Dmitriy
Фрилансер, верстальщик
Привет, просто сделай отбор по user_id который храниться в бд или в озу и все :)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы