Раздеделение главного скрипта на под-скрипты для удобства разработки.
This commit is contained in:
parent
247457937d
commit
958b5c50c0
241
anon.py
241
anon.py
@ -1,156 +1,36 @@
|
|||||||
import telebot
|
import telebot
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
|
from icecream import ic
|
||||||
|
|
||||||
|
########### Функции ##############
|
||||||
|
from func import *
|
||||||
|
|
||||||
########### Работа с БД ##########
|
########### Работа с БД ##########
|
||||||
|
|
||||||
from db import *
|
from db import *
|
||||||
raw_db = read_db()
|
raw_db = read_db()
|
||||||
|
|
||||||
######### Загрузка БД ############
|
###### Класс пользователя ########
|
||||||
|
from user import *
|
||||||
# raw_db = {
|
# user.id = 123
|
||||||
# "Anon": {"id": 2045634, pkey: "fuD2d", channel: "AnotherUser", avatar: "♿️", blocks: [5375652, 436432], keys: {AnotherUser: "dDH73s"}},
|
# user.pkey = "fd35s"
|
||||||
# "2045634": "Anon"
|
# user.channel = "anotheruser"
|
||||||
# }
|
# user.avatar = "♿️"
|
||||||
# Первая строка - информация о пользователе (айди, канал, блокнутые пользователи)
|
# user.blocks = [124235]
|
||||||
# Вторая строчка - для отправки сообщения и блокировки
|
# user.keys = {"anotheruser": "re543"}
|
||||||
# keys - ключи , pkey - личный ключ
|
|
||||||
|
|
||||||
def is_num(str):
|
|
||||||
try:
|
|
||||||
int(str)
|
|
||||||
return True
|
|
||||||
except:
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Класс пользователя
|
|
||||||
class user_:
|
|
||||||
def __init__(self, id, pkey, channel = None, avatar = "♿️", blocks = [], keys = {}):
|
|
||||||
self.id = id
|
|
||||||
self.channel = channel
|
|
||||||
self.avatar = avatar
|
|
||||||
self.blocks = blocks
|
|
||||||
self.pkey = pkey
|
|
||||||
self.keys = keys
|
|
||||||
|
|
||||||
# Загружаем в формат
|
|
||||||
# db = {
|
|
||||||
# "Anon": user.*,
|
|
||||||
# "2045634": "Anon"
|
|
||||||
# }
|
|
||||||
|
|
||||||
|
|
||||||
# Загружаем
|
|
||||||
def load():
|
|
||||||
raw_db = read_db()
|
|
||||||
db = {}
|
|
||||||
for i in raw_db:
|
|
||||||
if is_num(i) == True:
|
|
||||||
db[i] = raw_db[i]
|
|
||||||
elif "token" == i:
|
|
||||||
db["token"] = raw_db["token"]
|
|
||||||
else:
|
|
||||||
id, pkey, channel, avatar, blocks, keys = raw_db[i]["id"], raw_db[i]["pkey"], raw_db[i]["channel"], raw_db[i]["avatar"], raw_db[i]["blocks"], raw_db[i]["keys"],
|
|
||||||
user = user_(id, pkey, channel, avatar, blocks, keys)
|
|
||||||
db[i] = user
|
|
||||||
|
|
||||||
return db
|
|
||||||
|
|
||||||
db = load()
|
|
||||||
|
|
||||||
# Сохраняем
|
|
||||||
def save(db):
|
|
||||||
raw_db = {}
|
|
||||||
for i in db:
|
|
||||||
if is_num(i) == True:
|
|
||||||
raw_db[i] = db[i]
|
|
||||||
elif "token" == i:
|
|
||||||
raw_db["token"] = db["token"]
|
|
||||||
else:
|
|
||||||
raw_db[i] = {"id": db[i].id, "pkey": db[i].pkey, "channel": db[i].channel, "avatar": db[i].avatar, "blocks": db[i].blocks, "keys": db[i].keys}
|
|
||||||
write_db(raw_db)
|
|
||||||
|
|
||||||
####### Работа с хэшем ###########
|
####### Работа с хэшем ###########
|
||||||
|
|
||||||
from hash import hash
|
from hash import hash
|
||||||
from random import randint
|
from random import randint
|
||||||
|
|
||||||
##### Инициализация токена #######
|
##### Инициализация токена #######
|
||||||
|
|
||||||
bot = telebot.TeleBot(raw_db['token'])
|
bot = telebot.TeleBot(raw_db['token'])
|
||||||
|
|
||||||
########## Ловим ошибки ##########
|
########## Ловим ошибки ##########
|
||||||
|
from catch_err import *
|
||||||
|
|
||||||
import logging
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
from io import StringIO # For catch log to variable
|
############## MAIN ##############
|
||||||
|
|
||||||
# Basic init
|
|
||||||
global log_stream
|
|
||||||
log_stream = StringIO()
|
|
||||||
logging.basicConfig(stream=log_stream)
|
|
||||||
|
|
||||||
def catch_error(message, err_type = None):
|
|
||||||
try:
|
|
||||||
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
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
#### Небольшие функции ####
|
|
||||||
|
|
||||||
def is_auth(message):
|
|
||||||
try:
|
|
||||||
db = load()
|
|
||||||
if str(message.chat.id) in db:
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
bot.reply_to(message,"Извините, но Вы не авторизованы.\n\n/reg ник")
|
|
||||||
return False
|
|
||||||
except:
|
|
||||||
catch_error(message)
|
|
||||||
|
|
||||||
# Регулярные выражения
|
|
||||||
from re import search, match, sub, compile
|
|
||||||
|
|
||||||
def nick_ok(message, nick):
|
|
||||||
if len(nick) > 30:
|
|
||||||
bot.reply_to(message,"Слишком длинный ник, попробуйте короче.")
|
|
||||||
return False
|
|
||||||
if is_num(nick):
|
|
||||||
bot.reply_to(message,"Ник должен содержать хоть 1 букву, попробуйте ещё раз.")
|
|
||||||
return False
|
|
||||||
|
|
||||||
en = True
|
|
||||||
ru = True
|
|
||||||
# Если только английский
|
|
||||||
regex = compile('[^a-zA-Z0-9]')
|
|
||||||
check = regex.sub('', nick)
|
|
||||||
if check != nick:
|
|
||||||
en = False
|
|
||||||
# Если только русский
|
|
||||||
regex = compile('[^а-яА-ЯЁё0-9]')
|
|
||||||
check = regex.sub('', nick)
|
|
||||||
if check != nick:
|
|
||||||
ru = False
|
|
||||||
|
|
||||||
if en == False and ru == False:
|
|
||||||
bot.reply_to(message,"Нельзя смешивать алфавиты и ставить спец.-символы, попробуйте ещё раз")
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
############## MAIN
|
|
||||||
|
|
||||||
@bot.message_handler(commands=['start', 'help'])
|
@bot.message_handler(commands=['start', 'help'])
|
||||||
def start(message):
|
def start(message):
|
||||||
@ -173,7 +53,7 @@ def reg(message):
|
|||||||
if len(message.text.split()) == 2:
|
if len(message.text.split()) == 2:
|
||||||
nick = message.text.split()[1]
|
nick = message.text.split()[1]
|
||||||
# Проверка ника
|
# Проверка ника
|
||||||
if not nick_ok(message, nick):
|
if not nick_ok(bot, message, nick):
|
||||||
return 0
|
return 0
|
||||||
if nick in db:
|
if nick in db:
|
||||||
bot.reply_to(message, "Данный пользователь уже зарегистрирован.")
|
bot.reply_to(message, "Данный пользователь уже зарегистрирован.")
|
||||||
@ -189,12 +69,12 @@ def reg(message):
|
|||||||
else:
|
else:
|
||||||
bot.reply_to(message, "Вы ввели не 2 аргумента, нужно: /reg ЛюбойНикнейм")
|
bot.reply_to(message, "Вы ввели не 2 аргумента, нужно: /reg ЛюбойНикнейм")
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
|
|
||||||
@bot.message_handler(commands=['b'])
|
@bot.message_handler(commands=['b'])
|
||||||
def b(message):
|
def b(message):
|
||||||
try:
|
try:
|
||||||
if is_auth(message):
|
if is_auth(bot, message):
|
||||||
db = load()
|
db = load()
|
||||||
nick = db[str(message.chat.id)]
|
nick = db[str(message.chat.id)]
|
||||||
user = db[nick]
|
user = db[nick]
|
||||||
@ -212,12 +92,12 @@ def b(message):
|
|||||||
else:
|
else:
|
||||||
bot.reply_to(message, "Данного пользователя не существует.")
|
bot.reply_to(message, "Данного пользователя не существует.")
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
|
|
||||||
@bot.message_handler(commands=['u'])
|
@bot.message_handler(commands=['u'])
|
||||||
def u(message):
|
def u(message):
|
||||||
try:
|
try:
|
||||||
if is_auth(message):
|
if is_auth(bot, message):
|
||||||
db = load()
|
db = load()
|
||||||
nick = db[str(message.chat.id)]
|
nick = db[str(message.chat.id)]
|
||||||
user = db[nick]
|
user = db[nick]
|
||||||
@ -232,12 +112,12 @@ def u(message):
|
|||||||
save(db)
|
save(db)
|
||||||
bot.reply_to(message, f"Была снята блокировка с пользователя {telebot.formatting.hcode(block)}",parse_mode="HTML")
|
bot.reply_to(message, f"Была снята блокировка с пользователя {telebot.formatting.hcode(block)}",parse_mode="HTML")
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
|
|
||||||
@bot.message_handler(commands=['nick'])
|
@bot.message_handler(commands=['nick'])
|
||||||
def nick(message):
|
def nick(message):
|
||||||
try:
|
try:
|
||||||
if is_auth(message):
|
if is_auth(bot, message):
|
||||||
db = load()
|
db = load()
|
||||||
new_nick = message.text.split()[1]
|
new_nick = message.text.split()[1]
|
||||||
# Проверка ника
|
# Проверка ника
|
||||||
@ -257,12 +137,12 @@ def nick(message):
|
|||||||
else:
|
else:
|
||||||
bot.reply_to(message,"Данный ник уже занят")
|
bot.reply_to(message,"Данный ник уже занят")
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
|
|
||||||
@bot.message_handler(commands=['av'])
|
@bot.message_handler(commands=['av'])
|
||||||
def av(message):
|
def av(message):
|
||||||
try:
|
try:
|
||||||
if is_auth(message):
|
if is_auth(bot, message):
|
||||||
db = load()
|
db = load()
|
||||||
if not len(message.text.split()) > 1:
|
if not len(message.text.split()) > 1:
|
||||||
bot.reply_to(message,"Укажите аватарку")
|
bot.reply_to(message,"Укажите аватарку")
|
||||||
@ -276,10 +156,9 @@ def av(message):
|
|||||||
save(db)
|
save(db)
|
||||||
bot.reply_to(message,"Новая аватарка успешно установлена")
|
bot.reply_to(message,"Новая аватарка успешно установлена")
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
|
|
||||||
|
######### Работа с ключом ########
|
||||||
############# WORK WITH KEY ########
|
|
||||||
|
|
||||||
@bot.message_handler(commands=['key'])
|
@bot.message_handler(commands=['key'])
|
||||||
def key(message):
|
def key(message):
|
||||||
@ -294,7 +173,7 @@ def key(message):
|
|||||||
else:
|
else:
|
||||||
bot.reply_to(message,"/key ник")
|
bot.reply_to(message,"/key ник")
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
|
|
||||||
@bot.message_handler(commands=['ver'])
|
@bot.message_handler(commands=['ver'])
|
||||||
def ver(message):
|
def ver(message):
|
||||||
@ -316,12 +195,12 @@ def ver(message):
|
|||||||
else:
|
else:
|
||||||
bot.reply_to(message,"/ver ник ключ")
|
bot.reply_to(message,"/ver ник ключ")
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
|
|
||||||
@bot.message_handler(commands=['key_res'])
|
@bot.message_handler(commands=['key_res'])
|
||||||
def key_res(message):
|
def key_res(message):
|
||||||
try:
|
try:
|
||||||
if is_auth(message):
|
if is_auth(bot, message):
|
||||||
db = load()
|
db = load()
|
||||||
|
|
||||||
key = hash(randint(74287, 5747962))
|
key = hash(randint(74287, 5747962))
|
||||||
@ -336,50 +215,15 @@ def key_res(message):
|
|||||||
Старый ключ: {telebot.formatting.hcode(old_key)}
|
Старый ключ: {telebot.formatting.hcode(old_key)}
|
||||||
Новый ключ: {telebot.formatting.hcode(key)}""",parse_mode="HTML")
|
Новый ключ: {telebot.formatting.hcode(key)}""",parse_mode="HTML")
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
|
|
||||||
# Проверяем совпадение ключей при отправке сообщений
|
|
||||||
def key_valid(message, channel):
|
|
||||||
try:
|
|
||||||
db = load()
|
|
||||||
our_nick = db[str(message.chat.id)]
|
|
||||||
user = db[our_nick]
|
|
||||||
# Добавляем ключ если его нету в нашей БД
|
|
||||||
if channel not in user.keys:
|
|
||||||
user.keys[channel] = db[channel].pkey
|
|
||||||
save(db)
|
|
||||||
|
|
||||||
db = load()
|
|
||||||
our_key = user.keys[channel]
|
|
||||||
print(channel)
|
|
||||||
dest_key = db[channel].pkey
|
|
||||||
|
|
||||||
if our_key == dest_key:
|
|
||||||
print("Valid: ", channel)
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
print("Not valid: ", channel)
|
|
||||||
use.keys[channel] = dest_key
|
|
||||||
save(db)
|
|
||||||
|
|
||||||
bot.reply_to(message, f"""⚠️ Публичные ключи не совпадают ⚠️
|
|
||||||
Ожидаемый ключ: {telebot.formatting.hcode(our_key)}
|
|
||||||
|
|
||||||
Отправка сообщения отклонена.
|
|
||||||
Если вы уверены - повторите отправку.
|
|
||||||
""", parse_mode="HTML")
|
|
||||||
return False
|
|
||||||
except:
|
|
||||||
catch_error(message)
|
|
||||||
|
|
||||||
####################################
|
|
||||||
|
|
||||||
|
|
||||||
|
##################################
|
||||||
|
|
||||||
@bot.message_handler(commands=['me'])
|
@bot.message_handler(commands=['me'])
|
||||||
def me(message):
|
def me(message):
|
||||||
try:
|
try:
|
||||||
if is_auth(message):
|
if is_auth(bot, message):
|
||||||
db = load()
|
db = load()
|
||||||
nick = db[str(message.chat.id)]
|
nick = db[str(message.chat.id)]
|
||||||
user = db[nick]
|
user = db[nick]
|
||||||
@ -393,9 +237,10 @@ def me(message):
|
|||||||
Ваша аватарка: {telebot.formatting.hcode(user.avatar)}
|
Ваша аватарка: {telebot.formatting.hcode(user.avatar)}
|
||||||
Ваш публичный ключ: {telebot.formatting.hcode(user.pkey)}""",parse_mode="HTML")
|
Ваш публичный ключ: {telebot.formatting.hcode(user.pkey)}""",parse_mode="HTML")
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
|
|
||||||
|
|
||||||
|
###### Передача сообщений ########
|
||||||
|
|
||||||
@bot.message_handler(func=lambda message: True, content_types=['photo','text', 'document', 'voice', 'video'])
|
@bot.message_handler(func=lambda message: True, content_types=['photo','text', 'document', 'voice', 'video'])
|
||||||
def catch_all_messages(message):
|
def catch_all_messages(message):
|
||||||
@ -408,7 +253,7 @@ def catch_all_messages(message):
|
|||||||
channel = message.text[1:]
|
channel = message.text[1:]
|
||||||
if channel in db:
|
if channel in db:
|
||||||
# Проверяем ключи
|
# Проверяем ключи
|
||||||
if not key_valid(message, channel):
|
if not key_valid(bot, message, channel):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
user.channel = channel
|
user.channel = channel
|
||||||
@ -419,7 +264,7 @@ def catch_all_messages(message):
|
|||||||
elif user.channel != None:
|
elif user.channel != None:
|
||||||
channel = user.channel
|
channel = user.channel
|
||||||
# Проверяем ключи
|
# Проверяем ключи
|
||||||
if not key_valid(message, channel):
|
if not key_valid(bot, message, channel):
|
||||||
return 0
|
return 0
|
||||||
db = load()
|
db = load()
|
||||||
|
|
||||||
@ -457,20 +302,23 @@ def catch_all_messages(message):
|
|||||||
bot.send_message(db[channel].id, f"{telebot.formatting.hcode(':'+nick) + avatar}\n" + message.text, parse_mode="HTML")
|
bot.send_message(db[channel].id, f"{telebot.formatting.hcode(':'+nick) + avatar}\n" + message.text, parse_mode="HTML")
|
||||||
|
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
bot.reply_to(message, "Сообщение не было доставлено.\nВероятно пользователь заблокировал бота.")
|
bot.reply_to(message, "Сообщение не было доставлено.\nВероятно пользователь заблокировал бота.")
|
||||||
else:
|
else:
|
||||||
bot.reply_to(message, "Увы, но вас заблокировал данный пользователь.")
|
bot.reply_to(message, "Увы, но вас заблокировал данный пользователь.")
|
||||||
else:
|
else:
|
||||||
bot.reply_to(message, f"У вас не указан чат.\nЧтобы подключится к чату напишите: {telebot.formatting.hcode(':Никнейм')} ", parse_mode="HTML")
|
bot.reply_to(message, f"У вас не указан чат.\nЧтобы подключится к чату напишите: {telebot.formatting.hcode(':Никнейм')} ", parse_mode="HTML")
|
||||||
except:
|
except:
|
||||||
catch_error(message)
|
catch_error(bot, message)
|
||||||
|
|
||||||
#### POLLING ####
|
#### POLLING ####
|
||||||
mode = 1
|
from sys import argv
|
||||||
# Normal - 0, debug - 1
|
if len(argv) > 1:
|
||||||
|
mode = "debug"
|
||||||
|
else:
|
||||||
|
mode = "normal"
|
||||||
|
|
||||||
if mode == 0:
|
if mode == "normal":
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
bot.polling()
|
bot.polling()
|
||||||
@ -478,5 +326,6 @@ if mode == 0:
|
|||||||
exit()
|
exit()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
elif mode == 1:
|
elif mode == "debug":
|
||||||
|
ic("Started debug...")
|
||||||
bot.polling()
|
bot.polling()
|
||||||
|
26
catch_err.py
Normal file
26
catch_err.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import logging
|
||||||
|
import traceback
|
||||||
|
from io import StringIO # Для перевода лога в переменную
|
||||||
|
|
||||||
|
import telebot
|
||||||
|
|
||||||
|
# Базовая инициализация
|
||||||
|
global log_stream
|
||||||
|
log_stream = StringIO()
|
||||||
|
logging.basicConfig(stream=log_stream)
|
||||||
|
|
||||||
|
def catch_error(bot, message, err_type = None):
|
||||||
|
try:
|
||||||
|
if not err_type:
|
||||||
|
global log_stream
|
||||||
|
|
||||||
|
logging.error(traceback.format_exc()) # Логирование ошибок
|
||||||
|
err = log_stream.getvalue() # Ошибка -> переменная
|
||||||
|
|
||||||
|
bot.reply_to(message, "Critical error:\n\n" + telebot.formatting.hcode(err), parse_mode='HTML')
|
||||||
|
|
||||||
|
# Очистка логов
|
||||||
|
log_stream.truncate(0)
|
||||||
|
log_stream.seek(0)
|
||||||
|
except:
|
||||||
|
pass
|
54
db.py
54
db.py
@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
# Создаём БД, если её нету
|
||||||
if not os.path.exists('db.json'):
|
if not os.path.exists('db.json'):
|
||||||
db = {"token": "None"}
|
db = {"token": "None"}
|
||||||
js = json.dumps(db, indent=2)
|
js = json.dumps(db, indent=2)
|
||||||
@ -11,12 +12,57 @@ if not os.path.exists('db.json'):
|
|||||||
exit()
|
exit()
|
||||||
|
|
||||||
|
|
||||||
|
# raw_db = {
|
||||||
|
# "Anon": {"id": 2045634, pkey: "fuD2d", channel: "AnotherUser", avatar: "♿️", blocks: [5375652, 436432], keys: {AnotherUser: "dDH73s"}},
|
||||||
|
# "2045634": "Anon"
|
||||||
|
# }
|
||||||
def read_db(file = 'db.json'):
|
def read_db(file = 'db.json'):
|
||||||
with open(file, "r", encoding="utf-8") as openfile:
|
with open(file, "r", encoding="utf-8") as openfile:
|
||||||
db = json.load(openfile)
|
raw_db = json.load(openfile)
|
||||||
return db
|
return raw_db
|
||||||
|
|
||||||
def write_db(db, file = 'db.json'):
|
def write_db(raw_db, file = 'db.json'):
|
||||||
js = json.dumps(db, indent=2, ensure_ascii=False)
|
js = json.dumps(raw_db, indent=2, ensure_ascii=False)
|
||||||
with open(file, "w", encoding="utf-8") as outfile:
|
with open(file, "w", encoding="utf-8") as outfile:
|
||||||
outfile.write(js)
|
outfile.write(js)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
from user import *
|
||||||
|
# db = {
|
||||||
|
# "Anon": user.*,
|
||||||
|
# "2045634": "Anon"
|
||||||
|
# }
|
||||||
|
|
||||||
|
def is_num(str):
|
||||||
|
try:
|
||||||
|
int(str)
|
||||||
|
return True
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def load():
|
||||||
|
raw_db = read_db()
|
||||||
|
db = {}
|
||||||
|
for i in raw_db:
|
||||||
|
if is_num(i) == True:
|
||||||
|
db[i] = raw_db[i]
|
||||||
|
elif "token" == i:
|
||||||
|
db["token"] = raw_db["token"]
|
||||||
|
else:
|
||||||
|
id, pkey, channel, avatar, blocks, keys = raw_db[i]["id"], raw_db[i]["pkey"], raw_db[i]["channel"], raw_db[i]["avatar"], raw_db[i]["blocks"], raw_db[i]["keys"],
|
||||||
|
user = user_(id, pkey, channel, avatar, blocks, keys)
|
||||||
|
db[i] = user
|
||||||
|
|
||||||
|
return db
|
||||||
|
|
||||||
|
def save(db):
|
||||||
|
raw_db = {}
|
||||||
|
for i in db:
|
||||||
|
if is_num(i) == True:
|
||||||
|
raw_db[i] = db[i]
|
||||||
|
elif "token" == i:
|
||||||
|
raw_db["token"] = db["token"]
|
||||||
|
else:
|
||||||
|
raw_db[i] = {"id": db[i].id, "pkey": db[i].pkey, "channel": db[i].channel, "avatar": db[i].avatar, "blocks": db[i].blocks, "keys": db[i].keys}
|
||||||
|
write_db(raw_db)
|
||||||
|
81
func.py
Normal file
81
func.py
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
#### Ловим ошибки ####
|
||||||
|
from catch_err import *
|
||||||
|
######### БД #########
|
||||||
|
from db import *
|
||||||
|
######################
|
||||||
|
|
||||||
|
# -> True/False
|
||||||
|
def is_auth(bot, message):
|
||||||
|
try:
|
||||||
|
db = load()
|
||||||
|
if str(message.chat.id) in db:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
bot.reply_to(message,"Извините, но Вы не авторизованы.\n\n/reg ник")
|
||||||
|
return False
|
||||||
|
except:
|
||||||
|
catch_error(bot, message)
|
||||||
|
|
||||||
|
|
||||||
|
# Регулярные выражения
|
||||||
|
from re import sub, compile
|
||||||
|
# -> True/False
|
||||||
|
def nick_ok(bot, message, nick):
|
||||||
|
if len(nick) > 30:
|
||||||
|
bot.reply_to(message,"Слишком длинный ник, попробуйте короче.")
|
||||||
|
return False
|
||||||
|
if is_num(nick):
|
||||||
|
bot.reply_to(message,"Ник должен содержать хоть 1 букву, попробуйте ещё раз.")
|
||||||
|
return False
|
||||||
|
|
||||||
|
en = True
|
||||||
|
ru = True
|
||||||
|
# Если только английский
|
||||||
|
regex = compile('[^a-zA-Z0-9]')
|
||||||
|
check = regex.sub('', nick)
|
||||||
|
if check != nick:
|
||||||
|
en = False
|
||||||
|
# Если только русский
|
||||||
|
regex = compile('[^а-яА-ЯЁё0-9]')
|
||||||
|
check = regex.sub('', nick)
|
||||||
|
if check != nick:
|
||||||
|
ru = False
|
||||||
|
|
||||||
|
if en == False and ru == False:
|
||||||
|
bot.reply_to(message,"Нельзя смешивать алфавиты и ставить спец.-символы, попробуйте ещё раз")
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
# Проверяем совпадение ключей при отправке сообщений
|
||||||
|
# -> True/False
|
||||||
|
def key_valid(bot, message, channel):
|
||||||
|
try:
|
||||||
|
db = load()
|
||||||
|
our_nick = db[str(message.chat.id)]
|
||||||
|
user = db[our_nick]
|
||||||
|
# Добавляем ключ если его нету в нашей БД
|
||||||
|
if channel not in user.keys:
|
||||||
|
user.keys[channel] = db[channel].pkey
|
||||||
|
save(db)
|
||||||
|
return True
|
||||||
|
|
||||||
|
our_key = user.keys[channel]
|
||||||
|
dest_key = db[channel].pkey
|
||||||
|
|
||||||
|
if our_key == dest_key:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
use.keys[channel] = dest_key
|
||||||
|
save(db)
|
||||||
|
|
||||||
|
bot.reply_to(message, f"""⚠️ Публичные ключи не совпадают ⚠️
|
||||||
|
Ожидаемый ключ: {telebot.formatting.hcode(our_key)}
|
||||||
|
|
||||||
|
Отправка сообщения отклонена.
|
||||||
|
Если вы уверены - повторите отправку.
|
||||||
|
""", parse_mode="HTML")
|
||||||
|
return False
|
||||||
|
except:
|
||||||
|
catch_error(bot, message)
|
Loading…
Reference in New Issue
Block a user