From 42b3e1315171dc428da2d3551de4c7c47534b08e Mon Sep 17 00:00:00 2001 From: t Date: Sat, 14 Oct 2023 17:10:21 +0300 Subject: [PATCH] Fix acces for anon admins. --- mod.py | 137 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 109 insertions(+), 28 deletions(-) diff --git a/mod.py b/mod.py index 061896a..78f72d1 100644 --- a/mod.py +++ b/mod.py @@ -4,7 +4,7 @@ import json from telebot import types,util -global db, users +global db, users, blocks ####### CREATE DB IF NOT EXIST @@ -24,6 +24,12 @@ if not os.path.exists('users.json'): outfile.write(js) +if not os.path.exists('blocks.json'): + blocks = [] + js = json.dumps(blocks, indent=2) + with open("blocks.json", "w") as outfile: + outfile.write(js) + ############WORK WITH DBs########## def read_db(): @@ -48,6 +54,17 @@ def write_users(): outfile.write(js) + +def read_blocks(): + global blocks + with open('blocks.json', 'r') as openfile: + blocks = json.load(openfile) +def write_blocks(): + global blocks + js = json.dumps(blocks, indent=2) + with open("blocks.json", "w") as outfile: + outfile.write(js) + ####################FAST HASH################# from xxhash import xxh32 @@ -73,6 +90,12 @@ def get_admins(message): catch_error(message) return None +# Fix for anon admins, all anon (not premium) users == admins +def is_anon(message): + if message.from_user.username == "Channel_Bot" and message.from_user.is_premium == None: + return True + else: + return False def get_target(message): try: @@ -116,6 +139,7 @@ def key_by_value(dictionary, key): def analytic(message): global users + read_users() if key_by_value(users, message.from_user.id) == message.from_user.username: pass @@ -133,7 +157,6 @@ read_db() read_users() bot = telebot.TeleBot(db['token']) - ##################COMMANDS####### @bot.message_handler(commands=['start', 'faq']) @@ -152,23 +175,27 @@ def help(message): bot.reply_to(message, """ Список команд: -/mute # Мут человека в ответ на сообщение -/unmute # Снятие мута -/kick # Кик -/ban # Бан -/unban # Снятие бана -/setwelcome Добро пожаловать # Приветственное сообщение -/welcome # Демонстрация текущего сообщения -/lock # Блокировка чата (для обычных пользователей) -/unlock # Снятие блокировки чата - -/support Помогите :( # Написать разработчику. Прошу писать по делу. +/mute ⇁ Мут человека в ответ на сообщение +/unmute ⇁ Снятие мута +/kick ⇁ Кик +/ban ⇁ Бан +/unban ⇁ Снятие бана +/setwelcome ⇁ Приветственное сообщение +/welcome ⇁ Демонстрация текущего сообщения +/lock ⇁ Блокировка чата (для обычных пользователей) +/unlock ⇁ Снятие блокировки чата +/chatid ⇁ Айди чата + +/secret ⇁ Функция для получения ссылки html на пользователя в лс. +/html ⇁ Отправка текста сообщения в режиме формата html. + +/support Помогите :( ⇁ Написать разработчику. Прошу писать по делу. """) @bot.message_handler(commands=['mute']) def mute(message): try: - if message.from_user.id in get_admins(message): + if message.from_user.id in get_admins(message) or is_anon(message): target = get_target(message) if target: if len(message.text.split()) == 1: @@ -192,7 +219,7 @@ def mute(message): @bot.message_handler(commands=['unmute']) def unmute(message): try: - if message.from_user.id in get_admins(message): + if message.from_user.id in get_admins(message) or is_anon(message): target = get_target(message) if target: bot.restrict_chat_member(message.chat.id, target, can_send_messages=True, can_send_other_messages = True, until_date = message.date) @@ -209,7 +236,7 @@ def unmute(message): @bot.message_handler(commands=['kick']) def kick(message): try: - if message.from_user.id in get_admins(message): + if message.from_user.id in get_admins(message) or is_anon(message): target = get_target(message) if target: bot.ban_chat_member(message.chat.id, target) @@ -228,7 +255,7 @@ def kick(message): @bot.message_handler(commands=['ban']) def ban(message): try: - if message.from_user.id in get_admins(message): + if message.from_user.id in get_admins(message) or is_anon(message): target = get_target(message) if target: bot.ban_chat_member(message.chat.id, target) @@ -244,7 +271,7 @@ def ban(message): @bot.message_handler(commands=['unban']) def unban(message): try: - if message.from_user.id in get_admins(message): + if message.from_user.id in get_admins(message) or is_anon(message): target = get_target(message) if target: bot.unban_chat_member(message.chat.id, target) @@ -260,7 +287,7 @@ def unban(message): @bot.message_handler(commands=['setwelcome']) def setwelcome(message): try: - if message.from_user.id in get_admins(message): + if message.from_user.id in get_admins(message) or is_anon(message): global db db[str(message.chat.id)] = message.html_text[ message.text.find(" ") + 1 :] @@ -285,7 +312,7 @@ def welcome(message): @bot.message_handler(commands=['lock']) def lock(message): try: - if message.from_user.id in get_admins(message): + if message.from_user.id in get_admins(message) or is_anon(message): bot.set_chat_permissions(message.chat.id, telebot.types.ChatPermissions(can_send_messages=False, can_send_other_messages = False, can_send_polls = False)) bot.reply_to(message, "Чат был заблокирован 🔒") else: @@ -296,7 +323,7 @@ def lock(message): @bot.message_handler(commands=['unlock']) def unlock(message): try: - if message.from_user.id in get_admins(message): + if message.from_user.id in get_admins(message) or is_anon(message): bot.set_chat_permissions(message.chat.id, telebot.types.ChatPermissions(can_send_messages=True, can_send_other_messages = True, can_send_polls = True)) bot.reply_to(message, "Чат был разблокирован 🔓") else: @@ -307,7 +334,7 @@ def unlock(message): @bot.message_handler(commands=['id']) def getid(message): try: - if message.from_user.id in get_admins(message): + if message.from_user.id in get_admins(message) or is_anon(message): bot.reply_to(message, "ID: " + telebot.formatting.hcode(str(get_target(message))), parse_mode="HTML" ) else: bot.reply_to(message, "Увы, но у вас нету прав.") @@ -319,7 +346,7 @@ def getid(message): @bot.message_handler(commands=['secret']) def secret(message): try: - if message.from_user.id in get_admins(message): + if message.from_user.id in get_admins(message) or is_anon(message): bot.send_message(message.from_user.id, telebot.util.user_link(message.reply_to_message.from_user)) bot.delete_message(message.chat.id, message.id) else: @@ -336,16 +363,46 @@ def html(message): except: catch_error(message) +@bot.message_handler(commands=['chatid']) +def chatid(message): + try: + if message.from_user.id in get_admins(message) or is_anon(message): + bot.reply_to(message, "Айди чата: " + telebot.formatting.hcode( str(message.chat.id) ), parse_mode='HTML') + else: + bot.reply_to(message, "Увы, но у вас нету прав.") + except: + catch_error(message) ######################SUPPORT######## @bot.message_handler(commands=['support']) def support(message): try: - text = message.text[message.text.find(" ") + 1 :] + global blocks + read_blocks() - bot.reply_to(message, "Ваше сообщение было отправлену разработчику бота ⌨️\n\nP.S.: Чтобы получить ответ вы обязательно должны написать боту в личные сообщения.") - bot.send_message(2057834471, text + f"\n\nПользователь: {message.from_user.id}") + if message.chat.id not in blocks: + text = message.text[message.text.find(" ") + 1 :] + + bot.reply_to(message, "Ваше сообщение было отправлену разработчику бота ⌨️\n\nP.S.: Чтобы получить ответ вы обязательно должны написать боту в личные сообщения.") + bot.send_message(2057834471, text + f"\n\nПользователь: {message.from_user.id}") + else: + bot.reply_to(message, "Увы, но вы заблокированы") + except: + catch_error(message) +@bot.message_handler(commands=['block']) +def block(message): + try: + if message.chat.id == 2057834471: + global blocks + read_blocks() + id = int(message.text.split()[1] ) + + blocks.append(id) + write_blocks() + bot.reply_to(message, "Пользователь заблокирован.") + else: + bot.reply_to(message, "Увы, но у вас нету прав.") except: catch_error(message) @bot.message_handler(commands=['reply']) @@ -377,12 +434,36 @@ def handler_new_member(message): ##############ANALYTIC######## -@bot.message_handler(func=lambda message: True) +@bot.message_handler() def catch_all_messages(message): analytic(message) +# BLOCK LINKS FOR GULYAIPOLE (INDIVIDUAL, SECRET) + try: + if message.chat.id == -1001766918049 and message.from_user.id not in get_admins(message): + if 'https://t.me/' in message.text or ( hasattr(message, 'entities') and hasattr(message.entities[0], 'url') and message.entities[0].url != None ): + bot.delete_message(message.chat.id, message.id) + bot.send_message(message.chat.id, f"Пользователь {telebot.util.user_link(message.from_user)} пытался отправить ссылку на группу/чат.", parse_mode='HTML') + except: + #catch_error(message) + pass + +@bot.edited_message_handler() +def catch_edited_messages(message): + try: + if message.chat.id == -1001766918049 and message.from_user.id not in get_admins(message): + if 'https://t.me/' in message.text or ( hasattr(message, 'entities') and hasattr(message.entities[0], 'url') and message.entities[0].url != None ): + bot.delete_message(message.chat.id, message.id) + bot.send_message(message.chat.id, f"Пользователь {telebot.util.user_link(message.from_user)} пытался отправить ссылку на группу/чат.", parse_mode='HTML') + except: + #catch_error(message) + pass + + # For what? -# This add users = {} +# This add users to db for using command like: +# /ban @username +# Without reply to message. All usernames hashed. ##################CATCH ERRORS####