From ec47bbeb15f70b58500bca320dfafe9f82552967 Mon Sep 17 00:00:00 2001 From: t Date: Sat, 14 Oct 2023 00:29:55 +0300 Subject: [PATCH] Init. --- anon.py | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 anon.py diff --git a/anon.py b/anon.py new file mode 100644 index 0000000..810b616 --- /dev/null +++ b/anon.py @@ -0,0 +1,119 @@ +import telebot +import os +import json + +global db + +########### CREATE DB IF NOT EXIST + +if not os.path.exists('db.json'): + db = {"token": "None"} + js = json.dumps(db, indent=2) + with open("db.json", "w") as outfile: + outfile.write(js) + + print('Input token in "None" (db.json)') + exit() + +# db = { +# "Anon": {"id": 2045634, channel: "AnotherUser", blocks: [5375652, 436432]}, +# 2045634: "Anon" +#} +# Can't hash Username :( +# (It broke all) + +############WORK WITH DBs########## + +def read_db(): + global db + with open('db.json', 'r') as openfile: + db = json.load(openfile) +def write_db(): + global db + js = json.dumps(db, indent=2) + with open("db.json", "w") as outfile: + outfile.write(js) + +################ TOKEN INIT ###### + +read_db() +bot = telebot.TeleBot(db['token']) + +##################CATCH ERRORS#### + +import logging +import traceback + +from io import StringIO # For catch log to variable + +# Basic init +global log_stream +log_stream = StringIO() +logging.basicConfig(stream=log_stream) + +def catch_error(message, err_type = None): + if not err_type: + global log_stream + + logging.error(traceback.format_exc()) # Log error + err = log_stream.getvalue() # Error to variable + + bot.reply_to(message, "Critical error:\n\n" + telebot.formatting.hcode(err), parse_mode='HTML') + + log_stream.truncate(0) # Clear + log_stream.seek(0) # Clear + +############## MAIN + +@bot.message_handler(commands=['start']) +def start(message): + bot.reply_to(message, f"""Приветствую, это бот без слежки для анонимного общения. +Главное - выполняет свою функцию без рекламы и платы, без слежки. + +Для начала зарегистрируйся: +/reg ЛюбойНикнейм + +Исходный код: https://gitea.gulyaipole.fun/justuser/just_anonchat +Связь с админом: { telebot.formatting.hcode("c:justuser") } + +Ещё проекты: @just_openbots""", parse_mode="HTML") + +@bot.message_handler(commands=['reg']) +def reg(message): + global db + read_db() + if len(message.text.split()) == 2: + if message.text.split()[1] in db: + bot.reply_to(message, "Данный пользователь уже зарегистрирован.") + elif str(message.chat.id) in db: + bot.reply_to(message, "Вы уже зарегистрированы.") + else: + db[message.text.split()[1]] = {"id": message.chat.id, "channel": None, "blocks": []} + db[message.chat.id] = message.text.split()[1] + + write_db() + bot.reply_to(message, "Вы зарегистрировались!\nПриятного использования.") + else: + bot.reply_to(message, "Вы ввели не 2 аргумента, нужно: /reg ЛюбойНикнейм") + +@bot.message_handler(func=lambda message: True) +def catch_all_messages(message): + global db + read_db() + nick = db[str(message.chat.id)] + if message.text[:2] == "c:": + channel = message.text[2:] + if channel in db: + db[nick]["channel"] = channel + bot.reply_to(message, "Установлен адресат: " + telebot.formatting.hcode(channel), parse_mode="HTML") + write_db() + else: + bot.reply_to(message, "Не существует данного пользователя.") + elif db[nick]["channel"] != None: + bot.send_message(db[nick]["id"], f"{telebot.formatting.hcode(nick)}\n" + message.text, parse_mode="HTML") + else: + bot.reply_to(message, f"У вас не указан чат.\nЧтобы подключится к чату напишите: {telebot.formatting.hcode('c:Никнейм')} ", parse_mode="HTML") + +#### POLLING #### + +bot.polling()