From d02e9c184c77aa074c96d6c69d6f5582131fd082 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 11 Jul 2024 11:06:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=B1=D0=B0=D0=B3?= =?UTF-8?q?=D0=BE=D0=B2,=20=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20=D0=BE?= =?UTF-8?q?=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mod.py | 127 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 66 insertions(+), 61 deletions(-) diff --git a/mod.py b/mod.py index 42f0403..d1a18d8 100644 --- a/mod.py +++ b/mod.py @@ -9,9 +9,9 @@ global db, users, la ####### CREATE DB IF NOT EXIST if not os.path.exists('db.json'): - db = {"token": "None"} + db = {'token': 'None'} js = json.dumps(db, indent=2) - with open("db.json", "w") as outfile: + with open('db.json', 'w') as outfile: outfile.write(js) print('Input token in "None" (db.json)') @@ -20,13 +20,13 @@ if not os.path.exists('db.json'): if not os.path.exists('users.json'): users = {} js = json.dumps(users, indent=2) - with open("users.json", "w") as outfile: + with open('users.json', 'w') as outfile: outfile.write(js) if not os.path.exists('la.json'): la = {} js = json.dumps(la, indent=2) - with open("la.json", "w") as outfile: + with open('la.json', 'w') as outfile: outfile.write(js) ############WORK WITH DBs########## @@ -37,7 +37,7 @@ def read_db(): def write_db(): global db js = json.dumps(db, indent=2) - with open("db.json", "w") as outfile: + with open('db.json', 'w') as outfile: outfile.write(js) @@ -48,7 +48,7 @@ def read_users(): def write_users(): global users js = json.dumps(users, indent=2) - with open("users.json", "w") as outfile: + with open('users.json', 'w') as outfile: outfile.write(js) # LA - Low Admin. @@ -59,7 +59,7 @@ def read_la(): return la def write_la(la): js = json.dumps(la, indent=2) - with open("la.json", "w") as outfile: + with open('la.json', 'w') as outfile: outfile.write(js) ####################FAST HASH################# @@ -74,13 +74,13 @@ def sha(text): def get_admins(message): try: - if bot.get_chat(message.chat.id).type == "private": + if bot.get_chat(message.chat.id).type == 'private': return [] else: 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: + if i.status == 'creator' or i.can_restrict_members == True: true_admins.append(i.user.id) return true_admins except Exception as e: @@ -89,7 +89,7 @@ def get_admins(message): # Fix for anon admins, all anon (not premium) users == admins def is_anon(message): - if message.from_user.username == "Channel_Bot" or message.from_user.username == "GroupAnonymousBot": + if message.from_user.username == 'Channel_Bot' or message.from_user.username == 'GroupAnonymousBot': if message.from_user.is_premium == None: return True else: @@ -165,7 +165,7 @@ def have_rights(message, set_la = False): if str(message.from_user.username) in la[str(message.chat.id)]: return True else: - bot.reply_to(message, "Увы, но у вас нету прав.") + bot.reply_to(message, 'Увы, но у вас нету прав.') def key_by_value(dictionary, key): for i in dictionary: @@ -179,7 +179,7 @@ def analytic(message): if key_by_value(users, message.from_user.id) == message.from_user.username: pass - elif message.from_user.username == "None": + elif message.from_user.username == 'None': pass else: users[sha(message.from_user.username)] = message.from_user.id @@ -197,18 +197,18 @@ bot = telebot.TeleBot(db['token']) @bot.message_handler(commands=['start', 'faq']) def send_welcome(message): - bot.reply_to(message, """Колотушка работает 🔨 + bot.reply_to(message, '''Колотушка работает 🔨 Что это такое? Это минимальный бот-модератор без слежки с открытым кодом. Код: https://gitea.gulyaipole.fun/justuser/just_moderator Список команд - /help -""") +''') @bot.message_handler(commands=['help']) def help(message): - bot.reply_to(message, """ + bot.reply_to(message, ''' Список команд: /mute ⇁ Мут человека в ответ на сообщение @@ -229,7 +229,7 @@ def help(message): /html ⇁ Отправка текста сообщения в режиме формата html. /support ⇁ Написать разработчику. Прошу писать по делу. -""") +''') @bot.message_handler(commands=['mute']) def mute(message): @@ -240,10 +240,10 @@ def mute(message): if target: if time: bot.restrict_chat_member(message.chat.id, target, until_date = message.date + time[1]) - answer = f"Пользователь { get_name(message) } был заглушён на {time[0]} {time[2]}." + answer = f'Пользователь { get_name(message) } был заглушён на {time[0]} {time[2]}.' else: bot.restrict_chat_member(message.chat.id, target, until_date = message.date) - answer = f"Пользователь { get_name(message) } был заглушен." + answer = f'Пользователь { get_name(message) } был заглушен.' try: bot.reply_to(message, answer, parse_mode='HTML') except: @@ -260,11 +260,13 @@ def unmute(message): if have_rights(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) - bot.reply_to(message, f"""Пользователь { get_name(message) } снова имеет дар речи. -""", parse_mode='HTML') + bot.restrict_chat_member(message.chat.id, target, can_send_messages=True + , can_send_other_messages = True, can_send_polls = True + , can_add_web_page_previews = True, until_date = message.date) + bot.reply_to(message, f'''Пользователь { get_name(message) } снова имеет дар речи. +''', parse_mode='HTML') else: - catch_error(message, None, "no_user") + catch_error(message, None, 'no_user') except Exception as e: catch_error(message, e) @@ -278,10 +280,10 @@ def kick(message): bot.ban_chat_member(message.chat.id, target) bot.unban_chat_member(message.chat.id, target) - bot.reply_to(message, f"""Пользователь { get_name(message) } был исключён. -""", parse_mode='HTML') + bot.reply_to(message, f'''Пользователь { get_name(message) } был исключён. +''', parse_mode='HTML') else: - catch_error(message, None, "no_user") + catch_error(message, None, 'no_user') except Exception as e: catch_error(message, e) @@ -293,10 +295,10 @@ def ban(message): target = get_target(message) if target: bot.ban_chat_member(message.chat.id, target) - bot.reply_to(message, f"""Пользователь { get_name(message) } исключён и заблокирован. -""", parse_mode='HTML') + bot.reply_to(message, f'''Пользователь { get_name(message) } исключён и заблокирован. +''', parse_mode='HTML') else: - catch_error(message, None, "no_user") + catch_error(message, None, 'no_user') except Exception as e: catch_error(message, e) @@ -307,10 +309,10 @@ def unban(message): target = get_target(message) if target: bot.unban_chat_member(message.chat.id, target) - bot.reply_to(message, f"""Пользователь { get_name(message) } разблокирован. -""", parse_mode='HTML') + bot.reply_to(message, f'''Пользователь { get_name(message) } разблокирован. +''', parse_mode='HTML') else: - catch_error(message, None, "no_user") + catch_error(message, None, 'no_user') except Exception as e: catch_error(message, e) @@ -319,10 +321,10 @@ def setwelcome(message): try: if have_rights(message): global db - db[str(message.chat.id)] = message.html_text[ message.text.find(" ") + 1 :] + db[str(message.chat.id)] = message.html_text[ message.text.find(' ') + 1 :] - bot.reply_to(message, f"""Установлено новое приветственное сообщение: -\n{db[str(message.chat.id)]}""", parse_mode='HTML') + bot.reply_to(message, f'''Установлено новое приветственное сообщение: +\n{db[str(message.chat.id)]}''', parse_mode='HTML') write_db() except Exception as e: catch_error(message, e) @@ -332,8 +334,8 @@ def welcome(message): try: global db read_db() - bot.reply_to(message, f"""Приветственное сообщение: -\n{db[str(message.chat.id)]}""", parse_mode='HTML') + bot.reply_to(message, f'''Приветственное сообщение: +\n{db[str(message.chat.id)]}''', parse_mode='HTML') except Exception as e: catch_error(message, e) @@ -342,9 +344,9 @@ def lock(message): try: if have_rights(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, "Чат был заблокирован 🔒") + bot.reply_to(message, 'Чат был заблокирован 🔒') else: - bot.reply_to(message, "Увы, но у вас нету прав.") + bot.reply_to(message, 'Увы, но у вас нету прав.') except Exception as e: catch_error(message, e) @@ -353,7 +355,7 @@ def unlock(message): try: if have_rights(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, "Чат был разблокирован 🔓") + bot.reply_to(message, 'Чат был разблокирован 🔓') except Exception as e: catch_error(message, e) @@ -361,7 +363,7 @@ def unlock(message): def getid(message): try: if have_rights(message): - bot.reply_to(message, "ID: " + telebot.formatting.hcode(str(get_target(message))), parse_mode="HTML" ) + bot.reply_to(message, 'ID: ' + telebot.formatting.hcode(str(get_target(message))), parse_mode='HTML' ) except Exception as e: catch_error(message, e) @@ -401,16 +403,17 @@ def html(message): def chatid(message): try: if have_rights(message): - bot.reply_to(message, "Айди чата: " + telebot.formatting.hcode( str(message.chat.id) ), parse_mode='HTML') + bot.reply_to(message, 'Айди чата: ' + telebot.formatting.hcode( str(message.chat.id) ), parse_mode='HTML') else: - bot.reply_to(message, "Увы, но у вас нету прав.") + bot.reply_to(message, 'Увы, но у вас нету прав.') except Exception as e: catch_error(message, e) ############ LOW-ADMIN ############## -def have_la(id): +def have_la(message): try: + id = message.from_user.id la = read_la() if id in la: return True @@ -425,9 +428,9 @@ def have_la(id): def la(message): bot.reply_to(message, f'''Доступные команды: - {telebot.formatting.hcode("/la-list")} - список администраторов в режиме low-admin - {telebot.formatting.hcode("/la-add @nick")} - добавить в администраторы - {telebot.formatting.hcode("/la-del @nick")} - удалить из администраторов + {telebot.formatting.hcode('/la-list')} - список администраторов в режиме low-admin + {telebot.formatting.hcode('/la-add @nick')} - добавить в администраторы + {telebot.formatting.hcode('/la-del @nick')} - удалить из администраторов ''', parse_mode = 'HTML') @bot.message_handler(commands=['la-list']) @@ -436,7 +439,7 @@ def la_list(message): if have_rights(message, set_la=True): la = read_la() if have_la(str(message.chat.id)): - s = "Список администраторов в режиме low-admin:\n" + s = 'Список администраторов в режиме low-admin:\n' for i in la[str(message.chat.id)]: s = s + '\n@' + i bot.reply_to(message, s, parse_mode='HTML') @@ -454,7 +457,7 @@ def la_add(message): la[str(message.chat.id)].append(nick) print(la) write_la(la) - bot.reply_to(message, f"Пользователь @{nick} успешно добавлен в список администраторов.") + bot.reply_to(message, f'Пользователь @{nick} успешно добавлен в список администраторов.') except Exception as e: catch_error(message, e) @@ -469,7 +472,7 @@ def la_del(message, set_la=True): if nick in la[str(message.chat.id)]: la[str(message.chat.id)].remove(nick) write_la(la) - bot.reply_to(message, f"Пользователь @{nick} был исключён из списка администраторов.") + bot.reply_to(message, f'Пользователь @{nick} был исключён из списка администраторов.') except Exception as e: catch_error(message, e) @@ -480,8 +483,9 @@ def la_del(message, set_la=True): @bot.chat_join_request_handler() def join_request(message: telebot.types.ChatJoinRequest): try: - bot.send_message(message.chat.id, f"""Поступила заявка на вступление от { telebot.util.user_link(message.from_user) } -Принять: { telebot.formatting.hcode(f"/accept {message.from_user.id}") }""", parse_mode="HTML") + bot.send_message(message.chat.id, f'''Поступила заявка на вступление от { telebot.util.user_link(message.from_user) } +Принять: { telebot.formatting.hcode(f'/accept {message.from_user.id}') }''', parse_mode='HTML') + analytic(message) except Exception as e: catch_error(message, e) @@ -491,7 +495,7 @@ def accept_request(message): if have_rights(message): if len(message.text.split()) == 2: bot.approve_chat_join_request(message.chat.id, message.text.split()[1] ) - bot.reply_to(message, "Заявка принята.") + bot.reply_to(message, 'Заявка принята.') except Exception as e: catch_error(message, e) @@ -500,19 +504,20 @@ def accept_request(message): @bot.message_handler(commands=['support']) def support(message): try: - bot.reply_to(message, f"""Связь с аднимистратором в @just_anonchat_bot -Адрес - {telebot.formatting.hcode(":justuser")}""", parse_mode="HTML") + bot.reply_to(message, f'''Связь с аднимистратором в @just_anonchat_bot +Адрес - {telebot.formatting.hcode(':justuser')}''', parse_mode='HTML') except Exception as e: catch_error(message, e) #####################WELCOME##### -@bot.message_handler(content_types=["new_chat_members"]) +@bot.message_handler(content_types=['new_chat_members']) def handler_new_member(message): try: global db read_db() bot.reply_to(message, db[str(message.chat.id)], parse_mode='HTML') + analytic(message) except Exception as e: catch_error(message, e) @@ -542,7 +547,7 @@ logging.basicConfig(stream=log_stream) # Known errors known_errs = { - "A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: not enough rights to restrict/unrestrict chat member": "Увы, но у бота не хватает прав для этого." + 'A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: not enough rights to restrict/unrestrict chat member': 'Увы, но у бота не хватает прав для этого.' } # message error err_type ('no_user', ...) @@ -559,16 +564,16 @@ def catch_error(message, e, err_type = None): logging.error(traceback.format_exc()) # Log error err = log_stream.getvalue() # Error to variable - bot.send_message(message.chat.id, "Critical error (свяжитись через /support ) :\n\n" + telebot.formatting.hcode(err), parse_mode='HTML') + bot.send_message(message.chat.id, 'Critical error (свяжитись через /support ) :\n\n' + telebot.formatting.hcode(err), parse_mode='HTML') log_stream.truncate(0) # Clear log_stream.seek(0) # Clear - elif err_type == "no_user": - bot.send_message(message.chat.id, "Не указан пользователь.") + elif err_type == 'no_user': + bot.send_message(message.chat.id, 'Не указан пользователь.') ##################MAIN THREAD##### -''' +#''' while True: try: bot.polling() @@ -578,4 +583,4 @@ while True: pass ''' bot.polling() -#''' +'''