diff --git a/func.py b/func.py new file mode 100644 index 0000000..c631eed --- /dev/null +++ b/func.py @@ -0,0 +1,145 @@ +import var + +import telebot + +#FUNC import +from func import * + +API_TOKEN = var.API_MAIN + +bot = telebot.TeleBot(API_TOKEN) + +#Work with JSON +import json +def read(): + with open('db.json', 'r') as openfile: + var.db = json.load(openfile) +def write(): + js = json.dumps(var.db, indent=4) + with open("db.json", "w") as outfile: + outfile.write(js) + +#SHA256 for sign +import hashlib +#Date&Time +from datetime import date +import time + + + +def err(message): + bot.reply_to(message,"Что-то пошло не так, отмена операции.") + var.steps[message.chat.id] = None + +def err_reg(message): + bot.reply_to(message,""" +Пожалуйста, авторизуйстесь. +Для этого введите свой ник (желательно игровой).""") + var.steps[message.chat.id]="reg" + +def checkauth(message): + read() + id=str(message.chat.id) + if id in var.db: + return True + elif not id in var.db: + err_reg(message) + return False + +def reg(message): + read() + + id=(message.chat.id) + nick=message.text + + try: + getid = list(db.keys())[list(db.values()).index(nick)] + except: + getid=None + + if not getid in var.db: + bot.reply_to(message,"Пожалуйста, введите пароль для аккаунта банка.") + var.steps[message.chat.id]="pass" + var.anick[message.chat.id]=nick + elif getid in var.db: + bot.reply_to(message,"""Вы пытаетесь зайти под именем другого игрока или с нового аккаунта? +Поддержка больше чем 1 аккаунта не реализована, напишите администратору - @kirill638355""") + var.steps[message.chat.id]=None + + +def passwd(message): + read() + id=str(message.chat.id) + + pas = hashlib.sha256(str.encode(message.text)).hexdigest() + + try: + deb=var.db[var.anick[message.chat.id]+"_pas"] + except: + deb=None + + try: + mon=var.db[var.anick[message.chat.id]] + except: + mon=None + + if pas == deb: + bot.reply_to(message,"Поздравляю, Вы успешно авторизовались.") + var.steps[message.chat.id]=None + var.db[id]=var.anick[message.chat.id] + if var.anick[message.chat.id] in var.db: + pass + else: + var.db[var.anick[message.chat.id]]=0 + + write() + elif deb == None: + + var.steps[message.chat.id]=None + var.db[id]=var.anick[message.chat.id] + if mon == None: + var.db[var.anick[message.chat.id]]=0 + + today = date.today() + dttm = today.strftime("%d.%m.%Y_"+time.strftime("%H:%M", time.localtime())) + + signstr=message.text+dttm + sign=str(hashlib.sha256(str.encode(signstr)).hexdigest()) + + f=open('reg.sha256','a') + f.write(sign+"-"+dttm+"\n") + f.close() + + bot.reply_to(message,"Поздравляю, Вы успешно зарегестрировались.") + bot.reply_to(message,f""" +Ваш ключ восстановления пароля - {sign} +#REG +НИКОМУ НЕ ПЕРЕСЫЛАЙТЕ ЕГО, КРОМЕ - @kirill638355 +ИНАЧЕ ВАШУ ЗАПИСЬ МОГУТ УКРАСТЬ. +""") + var.db[var.anick[message.chat.id]+"_pas"]=pas + + write() + else: + err(message) + + + +def unreg(message): + read() + + print(var.db) + + id=str(message.chat.id) + print(id) + + var.db.pop(id) + write() + + print(var.db) + + bot.reply_to(message,""" +Вы успешно вышли из своего аккаунта. +ВНИМАНИЕ: ВАШ НИК БОЛЬШЕ НЕ ПРИВЯЗАН НИ К ОДНОМУ ТЕЛЕГРАМ АККАУНТУ. +""") + diff --git a/main.py b/main.py index 7a38741..9f39499 100644 --- a/main.py +++ b/main.py @@ -1,43 +1,18 @@ import telebot -API_TOKEN = '' -bot = telebot.TeleBot(API_TOKEN) #Keyboard from telebot.types import ReplyKeyboardMarkup, KeyboardButton -#SHA256 for sign -import hashlib -#Date&Time -from datetime import date -import time - -#JSON for database -import json -db = {"Nick":10} -def read(): - #Read db and push - global db - with open('db.json', 'r') as openfile: - db = json.load(openfile) -def write(): - #Read db and write - js = json.dumps(db, indent=4) - with open("db.json", "w") as outfile: - outfile.write(js) - -#Create new table -#write() - - -#Step(reg / pay / other) -steps = {} -#Pay number -pnum = 0 -#Pay nick -pnick = "" +#VAR import +import var +var.init() +#FUNC import +from func import * +API_TOKEN = var.API_MAIN +bot = telebot.TeleBot(API_TOKEN) @bot.message_handler(commands=['start']) @@ -50,218 +25,180 @@ def welcome(message): markup.add('Помощь') bot.reply_to(message, """ -Start message +Используя данный банк, вы соглашаетесь с следующими положениями в ссылке - https://t.me/cryptodm_bank/8 """,reply_markup=markup) @bot.message_handler(commands=['help']) def help(message): bot.reply_to(message, """ -Help message -""") - - -def err_reg(message): - bot.reply_to(message,""" -Пожалуйста,авторизуйстесь. -Для этого введите свой игровой ник.""") - global steps - steps[message.chat.id]="reg" - - - -@bot.message_handler(commands=['change']) -def change(message): - bot.reply_to(message,""" -Сейчас недоступен обмен в любое время,приносим извинения за временные неудобства. - -Чтобы продать/купить валюту Вы должны назначить время от 17:00 до 22:00 ПО МОСКВЕ(Оффициальный способ) -Или поменять валюту у игроков(Неоффициальный способ,не безопасно) - -Введите время,пожалуйста: -""") - global steps - steps[message.chat.id]="change" +┌─────────Помощь───────── +├[Основная информация](https://t.me/cryptodm_bank/5) +├[Спец.команды](https://t.me/cryptodm_bank/4) +├[Соглашения](https://t.me/cryptodm_bank/8) +│ +├Разработчик/Администратор +├@kirill638355 +├Ник: \_SAN5\_SkeLet0n\_ +│ +├[Исходный код](https://gitlab.com/justuser31/dm_moneybot) +└───────────────────────── +""",parse_mode='Markdown') -def checkauth(message): - read() - id=str(message.chat.id) - if id in db: - return True - elif not id in db: - err_reg(message) - return False +@bot.message_handler(commands=['unreg']) +def unregs(message): + unreg(message) @bot.message_handler(commands=['balance']) def balance(message): - read() + read() - if checkauth(message): - name=db[str(message.chat.id)] - bot.reply_to(message,"Ваш баланс >> "+str(db[name])+" dM") - - - -@bot.message_handler(commands=['unreg']) -def unreg(message): - try: - id=str(message.chat.id) + if checkauth(message): + name=var.db[str(message.chat.id)] + bot.reply_to(message,f""" +Баланс ➣ {var.db[name]} CDM +""") - print(id) - db.pop(id,None) - print(db) - write() +@bot.message_handler(commands=['change']) +def change(message): + if checkauth(message): + var.steps[message.chat.id]="change" bot.reply_to(message,""" -Вы успешно вышли из своего аккаунта. -ВНИМАНИЕ: ВАШ НИК БОЛЬШЕ НЕ ПРИВЯЗАН НИ К ОДНОМУ ТЕЛЕГРАМ АККАУНТУ. -ЕГО МОГУТ УКРАСТЬ,РЕКОМЕНДУЕМ ПРИВЯЗАТЬ ОБРАТНО.""") - except: - bot.reply_to(message,"Что-то пошло не так.") +Пока моментальный ввод/вывод недоступен, извините. + +┌─────Расписание── +│17:00 - 22:00 (По Москве) +├──────────────── +└➣Введите время или напишите "отмена" +""") + else: + err(message) @bot.message_handler(commands=['pay']) def pay(message): if checkauth(message): - bot.reply_to(message,"Введите сумму,которую хотите перевести") - global steps - steps[message.chat.id]="pay_num" + bot.reply_to(message,"Сумма ➣") + var.steps[message.chat.id]="pay_num" @bot.message_handler(func=lambda message: True) def checks(message): - global steps if message.text == 'Баланс': balance(message) - db['breakme'] elif message.text == 'Ввести/Вывести': change(message) - db['breakme'] elif message.text == 'Перевод': pay(message) - db['breakme'] elif message.text == 'Помощь': help(message) - db['breakme'] else: - print(111111111111111111111111) - try: - print(steps[message.chat.id]) + print(var.steps[message.chat.id]) except: - steps[message.chat.id] = None - - if steps[message.chat.id] == "reg": - id=message.chat.id - nick=message.text + var.steps[message.chat.id] = None - print(type(not nick in db)) - #Check id(get id by nick owner) in db - try: - getid = list(db.keys())[list(db.values()).index(nick)] - except: - getid=None - if not getid in db: - print(nick) + if var.steps[message.chat.id] == "reg": + reg(message) - db[id]=nick - if nick in db: - pass - else: - db[nick]=0 + elif var.steps[message.chat.id] == "pass": + passwd(message) - write() + elif var.steps[message.chat.id] == "change": + if (message.text).lower() != "отмена": + try: + read() + bot.send_message(2057834471,"#######################\nИгрок "+str(var.db[str(message.chat.id)])+" (@"+message.from_user.username+")"+" просит встречу в "+message.text+"\n#######################\n") + bot.reply_to(message,"Запрос успешно отправлен!") + var.steps[message.chat.id]=None + except: + err(message) + elif (message.text).lower() == "отмена": + bot.reply_to(message,"Операция отменена.") + var.steps[message.chat.id]=None - bot.reply_to(message,"Поздравляю,Вы успешно авторизовались.") - #elif nick in db: - elif getid in db: - bot.reply_to(message,"""Вы пытаетесь зайти под именем другого игрока или с нового аккаунта? - Поддержка больше чем 1 аккаунта не реализована,напишите администратору - @kirill638355""") - steps[message.chat.id]=None - elif steps[message.chat.id] == "pay_num": - global pnum + elif var.steps[message.chat.id] == "pay_num": try: +# if True: read() - pnum = int(message.text) - if int(pnum) > 0: - if db[db[str(message.chat.id)]] > int(pnum): - bot.reply_to(message,"Введите ник адресата") - steps[message.chat.id]="pnick" + #FLOAT + var.pnum[message.chat.id] = float(message.text) + if var.pnum[message.chat.id] > 0.00000000001: + if float(var.db[var.db[str(message.chat.id)]]) >= var.pnum[message.chat.id]: + bot.reply_to(message,"Ник адресата ➣") + var.steps[message.chat.id]="pnick" else: - bot.reply_to(message,"Что-то пошло не так,отмена операции") - steps[message.chat.id]=None + err(message) else: - bot.reply_to(message,"Что-то пошло не так,отмена операции") - steps[message.chat.id]=None + print(1) + err(message) except: - bot.reply_to(message,"Что-то пошло не так,отмена операции") - steps[message.chat.id]=None - - elif steps[message.chat.id] == "pnick": - global pnick - pnick = message.text - bot.reply_to(message,"Ник: "+pnick+"\nСумма: "+str(pnum)+"\nВы уверены? Для подтверждения напишите 'да'(без ковычек и маленькими буквами)") - steps[message.chat.id] = "pay_valid" - elif steps[message.chat.id] == "pay_valid": + err(message) + + elif var.steps[message.chat.id] == "pnick": + var.pnick[message.chat.id] = message.text + bot.reply_to(message,f""" +Ник ➣ {var.pnick[message.chat.id]} +Сумма ➣ {str(var.pnum[message.chat.id])} +Для подтверждения напишите 'да' """) + var.steps[message.chat.id] = "pay_valid" + + elif var.steps[message.chat.id] == "pay_valid": if message.text == 'да': try: - read() - - print(db) - print(str(db[pnick])+" "+str(db[pnick])) - db[pnick] = db[pnick]+pnum - db[db[str(message.chat.id)]] = db[db[str(message.chat.id)]]-pnum +# if 1 == 1: + var.db[var.pnick[message.chat.id]] = var.db[var.pnick[message.chat.id]]+var.pnum[message.chat.id] + var.db[var.db[str(message.chat.id)]] = var.db[var.db[str(message.chat.id)]]-var.pnum[message.chat.id] #Date today = date.today() - payer=db[str(message.chat.id)] - payer_bill=str(message.chat.id) - sum=str(pnum) + payer=var.db[str(message.chat.id)] +# payer_bill=str(message.chat.id) + sum=str(var.pnum[message.chat.id]) dttm=today.strftime("%d.%m.%Y_"+time.strftime("%H:%M", time.localtime())) - signstr=payer+pnick+dttm - sign=str(hashlib.sha256(str.encode(signstr)).hexdigest()) + signstr=payer+var.pnick[message.chat.id]+dttm + sign=str(hashlib.sha1(str.encode(signstr)).hexdigest()) bot.reply_to(message,"Успешно") bot.reply_to(message,f""" - -----ЧЕК---- - Плательщик: {payer} - Номер счёта: {payer_bill} - Сумма: {sum} - ~~~~~~~~~~ - Получатель: {pnick} - Время&Дата: {dttm} - ------------ - ЧАСТНЫЙ БАНК ИГРОКА _SAN5_SkeLet0n_ - ПОДПИСЬ: {sign} - ___________ - """) +-----ЧЕК---- +Плательщик: {payer} +Сумма: {sum} CDM +~~~~~~~~~~ +Получатель: {var.pnick[message.chat.id]} +Время&Дата: {dttm} +------------ +~CryptoDM~ +ПОДПИСЬ: {sign} +___________ +""") f=open('signs.sha256','a') - f.write(sign+" "+dttm+"\n") + f.write(sign+"-"+dttm+"\n") f.close() + try: + getid = list(var.db.keys())[list(var.db.values()).index(var.pnick[message.chat.id])] + bot.send_message(getid,f""" +╔════════════════════════ +║Вам перевели ➣ {sum} CDM +╚════════════════════════ +""") + except: + pass write() except: - bot.reply_to(message,"Что-то пошло не так,отмена операции") + err(message) else: - steps[message.chat.id] = None + var.steps[message.chat.id] = None bot.reply_to(message,"Вы отменили операцию") - elif steps[message.chat.id] == "change": - try: - read() - #print(message) - bot.send_message(2057834471,"#######################\nИгрок "+str(db[str(message.chat.id)])+" (@"+message.from_user.username+")"+" просит встречу в "+message.text+"\n#######################\n") - bot.reply_to(message,"Запрос успешно отправлен!") - steps[message.chat.id]=None - except: - bot.reply_to(message,"Что-то пошло не так,отмена операции") - bot.infinity_polling() diff --git a/send.py b/send.py new file mode 100644 index 0000000..963124e --- /dev/null +++ b/send.py @@ -0,0 +1,45 @@ +import telebot + +import var +var.init() + +TOKEN = var.API_MAIN +bot = telebot.TeleBot(TOKEN) + +#JSON for database +import json +db = {"Nick":10} +def read(): + #Read db and push + global db + with open('db.json', 'r') as openfile: + db = json.load(openfile) + +read() + +message = """ +Технические работы завершены, но система запущена в тестовом режиме. +При нахождении уязвимостей, пожалуйста, сообщите их владельцу банка, награду дам. + +Из изменений: +- В соглашения добавлен пункт "Уязвимости в системе" +- Подменить сумму или ник перевода уже невозможно +- Все счета переведены на новый формат + +Курс как и раньше - 1 алмаз - 1 CDM +""" + +for i in db: + if True: + try: + id=int(i) + except: + id=None + + if id != None: + try: +# bot.send_message(id,message,parse_mode='Markdown') + bot.send_message(id,message) + print("Pass ", id) + except: + print("Error ",id)