From 4dce446cf36901ab73280badef04ea0950091601 Mon Sep 17 00:00:00 2001 From: t Date: Sun, 1 Oct 2023 22:01:42 +0300 Subject: [PATCH] Init --- mod.py | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 mod.py diff --git a/mod.py b/mod.py new file mode 100644 index 0000000..60f504a --- /dev/null +++ b/mod.py @@ -0,0 +1,161 @@ +import telebot +import os +import json + +from telebot import types,util + +if not os.path.exists('db.json'): + with open('db.json', 'w') as f: + json.dump({}, f) + +global db +with open('db.json', 'r') as f: + db = json.load(f) + +bot = telebot.TeleBot(db['token']) + + +def get_admins(message): + admins = bot.get_chat_administrators(chat_id=message.chat.id) + true_admins = [] + for i in admins: + if i.status == "creator" or i.can_restrict_members == True: + true_admins.append(i.user.id) + #print(i.can_restrict_members, " ", i.user.id, " ", " ", i.status, " ", i.user.username ) + return true_admins + +def write_db(db): + with open('db.json', 'w') as f: + json.dump(db, f) + +def get_target(message): + try: + target = message.reply_to_message.from_user.id + except: + print(message.text[message.text.find(" ") + 1 :]) + #target = bot.get_chat(chat_id=message.text[message.text.find(" ") + 1 :]).id + target = bot.get_chat_member(user_id=message.text[message.text.find(" ") + 1 :]) + + return target + +@bot.message_handler(commands=['help', 'start']) +def send_welcome(message): + bot.reply_to(message, """Колотушка работает 🔨 + +Что это такое? +Это минимальный бот-модератор без слежки с открым кодом. +Код: https://gitea.gulyaipole.fun/justuser/just_moderator + +Список команд: +""") + +@bot.message_handler(commands=['mute']) +def mute(message): + if message.from_user.id in get_admins(message): + try: + target = get_target(message) + + if len(message.text.split()) == 1: + bot.restrict_chat_member(message.chat.id, target, until_date = message.date) + bot.reply_to(message, f"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } был заглушен.""", parse_mode='HTML') + else: + time = int(message.text.split()[1]) * 60 + print(time) + bot.restrict_chat_member(message.chat.id, target, until_date = message.date+time) + bot.reply_to(message, f"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } был заглушён на {time/60} минут(ы).""", parse_mode='HTML') + + except: + bot.reply_to(message, "Что-то пошло не так ♿️") + else: + bot.reply_to(message, "Увы, но у вас нету прав.") + + +@bot.message_handler(commands=['unmute']) +def unmute(message): + if message.from_user.id in get_admins(message): + try: + target = get_target(message) + + bot.restrict_chat_member(message.chat.id, target, can_send_messages=True, can_send_other_messages = True, until_date = message.date) + + bot.reply_to(message, f"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } снова имеет дар речи. +""", parse_mode='HTML') + except: + bot.reply_to(message, "Что-то пошло не так ♿️") + else: + bot.reply_to(message, "Увы, но у вас нету прав.") + + +@bot.message_handler(commands=['kick']) +def kick(message): + if message.from_user.id in get_admins(message): + try: + target = get_target(message) + + bot.ban_chat_member(message.chat.id, target) + bot.unban_chat_member(message.chat.id, target) + + bot.reply_to(message, f"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } был исключён. +""", parse_mode='HTML') + except: + bot.reply_to(message, "Что-то пошло не так ♿️") + else: + bot.reply_to(message, "Увы, но у вас нету прав.") + + +@bot.message_handler(commands=['ban']) +def ban(message): + if message.from_user.id in get_admins(message): + try: + target = get_target(message) + + bot.ban_chat_member(message.chat.id, target) + + bot.reply_to(message, f"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } исключён и заблокирован. +""", parse_mode='HTML') + except: + bot.reply_to(message, "Что-то пошло не так ♿️") + else: + bot.reply_to(message, "Увы, но у вас нету прав.") + +@bot.message_handler(commands=['unban']) +def unban(message): + if message.from_user.id in get_admins(message): + try: + target = get_target(message) + + bot.unban_chat_member(message.chat.id, target) + + bot.reply_to(message, f"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } разблокирован. +""", parse_mode='HTML') + except: + bot.reply_to(message, "Что-то пошло не так ♿️") + else: + bot.reply_to(message, "Увы, но у вас нету прав.") + +@bot.message_handler(commands=['setwelcome']) +def setwelcome(message): + if message.from_user.id in get_admins(message): + db["welcome"] = message.html_text[ message.text.find(" ") + 1 :] + + bot.reply_to(message, f"""Установлено новое приветственное сообщение: +\n{db["welcome"]}""", parse_mode='HTML') + write_db(db) + else: + bot.reply_to(message, "Увы, но у вас нету прав.") + +@bot.message_handler(commands=['welcome']) +def welcome(message): + global db + bot.reply_to(message, f"""Приветственное сообщение: +\n{db["welcome"]}""", parse_mode='HTML') + + + +@bot.message_handler(content_types=["new_chat_members"]) +def handler_new_member(message): + global db + bot.reply_to(message, db["welcome"], parse_mode='HTML') + + +bot.polling()