import telebot
import time
from telebot.types import Message
from datetime import datetime, timedelta
bot = telebot.TeleBot("token") # заменить на свой токен
# Список замученных пользователей со временем мута и причиной
mute_list = []
# Список забаненных пользователей с причиной
ban_list = []
# Функция проверки сообщения на мат и удаления сообщения
def check_message(message: Message):
# Список матерных слов
bad_words = ['сука', 'хуй', 'пизда', 'ебать', 'нахуй', 'блять', 'дебил', 'дибил']
# Проверяем, есть ли в сообщении матерные слова
if any(word in message.text.lower() for word in bad_words):
# Удаляем сообщение
bot.delete_message(message.chat.id, message.message_id)
# Ищем, есть ли уже у пользователя варн
warned = next((user for user in mute_list if user['id'] == message.from_user.id), None)
if warned:
# Увеличиваем счетчик варнов на 1
warned['count'] += 1
# Если количество варнов достигло трех, выдаем мут на 1 день
if warned['count'] == 3:
# Добавляем пользователя в список замученных
mute_list.append({'id': message.from_user.id, 'until': datetime.now()+timedelta(days=1), 'reason': 'мат'})
# Выдаем мут на 1 день
bot.restrict_chat_member(message.chat.id, message.from_user.id, until_date=int(time.time()+86400))
# Сбрасываем количество варнов до 0
warned['count'] = 0
else:
# Если количество варнов еще не достигло трех, выдаем пользователю варн
bot.send_message(message.chat.id, f'Вы получили варн за мат.\nКоличество варнов: {warned["count"]}/3', reply_to_message_id = message.message_id)
else:
# Если у пользователя еще нет варнов, добавляем его в список со значением 1
mute_list.append({'id': message.from_user.id, 'count': 1})
bot.send_message(message.chat.id, f'{message.from_user.first_name} получает варн.\nКоличество варнов: 1/3\nПричина: Мат', reply_to_message_id = message.message_id)
# Обработка команды варн
@bot.message_handler(commands=['warn'])
def warn_handler(message: Message):
# Проверяем, что у сообщения есть ответный пользователь
if message.reply_to_message:
# Добавляем пользователя в список со значением 1 варн
mute_list.append({'id': message.reply_to_message.from_user.id, 'count': 1})
# Выдаем пользователю варн за мат
bot.send_message(message.chat.id, f'{message.reply_to_message.from_user.first_name} получает варн.\nКоличество варнов: 1/3\nПричина: Мат.', reply_to_message_id = message.message_id)
else:
bot.send_message(message.chat.id, 'Вы забыли ответить на сообщение пользователя.')
# Обработка команды размут
@bot.message_handler(commands=['unmute'])
def unmute_handler(message: Message):
# Проверяем, что у сообщения есть ответный пользователь
if message.reply_to_message:
# Удаляем пользователя из списка замученных
mute_list.remove(next((user for user in mute_list if user['id'] == message.reply_to_message.from_user.id), None))
# Размучиваем пользователя
bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, until_date=0)
bot.send_message(message.chat.id, f'Срок молчания {message.reply_to_message.from_user.first_name} окончен, но лучше следите за языком...', reply_to_message_id = message.message_id)
else:
bot.send_message(message.chat.id, 'Вы забыли ответить на сообщение пользователя.')
# Обработка команды бан
@bot.message_handler(commands=['ban'])
def ban_handler(message: Message):
# Проверяем, что у сообщения есть ответный пользователь
if message.reply_to_message:
# Добавляем пользователя в список забаненных
ban_list.append({'id': message.reply_to_message.from_user.id, 'reason': 'нарушение правил'})
# Баним пользователя
bot.ban_chat_member(message.chat.id, message.reply_to_message.from_user.id)
bot.send_message(message.chat.id, f'{message.reply_to_message.from_user.first_name} был забанен.\nПричина: Нарушение правил.', reply_to_message_id = message.message_id)
else:
bot.send_message(message.chat.id, 'Вы забыли ответить на сообщение пользователя.')
# Обработка команды разбан
@bot.message_handler(commands=['unban'])
def unban_handler(message: Message):
# Проверяем, что у сообщения есть ответный пользователь
if message.reply_to_message:
# Удаляем пользователя из списка забаненных
for user in ban_list:
if user['id'] == message.reply_to_message.from_user.id:
ban_list.remove(user)
break
# Разбаниваем пользователя
bot.unban_chat_member(message.chat.id, message.reply_to_message.from_user.id)
bot.send_message(message.chat.id, f'Пользователь {message.reply_to_message.from_user.first_name} разбанен.')
else:
bot.send_message(message.chat.id, 'Вы забыли ответить на сообщение пользователя.')
# Обработка команды Мутлист
@bot.message_handler(commands=['mutelist'])
def mute_list_handler(message: Message):
# Генерируем текст списка замученных пользователей
text = '\n'.join([f'{user["id"]} - {user["until"]} - {user["reason"]}' for user in mute_list])
bot.send_message(message.chat.id, f'Список замученных пользователей:\n{text}')
# Обработка команды Банлист
@bot.message_handler(commands=['banlist'])
def ban_list_handler(message: Message):
# Генерируем текст списка забаненных пользователей
text = '\n'.join([f'{user["id"]} - {user["reason"]}' for user in ban_list])
bot.send_message(message.chat.id, f'Список забаненных пользователей:\n{text}')
# Обработка всех сообщений
@bot.message_handler(func=lambda message: True)
def all_message_handler(message: Message):
# Проверяем сообщение на наличие матерных слов
check_message(message)
bot.polling()