diff --git a/main.py b/main.py new file mode 100644 index 0000000..90aced2 --- /dev/null +++ b/main.py @@ -0,0 +1,261 @@ +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 = "" + +@bot.message_handler(commands=['start']) +def welcome(message): + markup = ReplyKeyboardMarkup(resize_keyboard=True) + + markup.add('Баланс') + markup.add('Ввести/Вывести') + markup.add('Перевод') + markup.add('Помощь') + + + bot.reply_to(message, """ +Start message +""",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" + +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=['balance']) +def balance(message): + 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) + + print(id) + db.pop(id,None) + print(db) + write() + + bot.reply_to(message,""" +Вы успешно вышли из своего аккаунта. +ВНИМАНИЕ: ВАШ НИК БОЛЬШЕ НЕ ПРИВЯЗАН НИ К ОДНОМУ ТЕЛЕГРАМ АККАУНТУ. +ЕГО МОГУТ УКРАСТЬ,РЕКОМЕНДУЕМ ПРИВЯЗАТЬ ОБРАТНО.""") + except: + bot.reply_to(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.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'] + + print(111111111111111111111111) + + try: + print(steps[message.chat.id]) + except: + steps[message.chat.id] = None + + if steps[message.chat.id] == "reg": + id=message.chat.id + nick=message.text + + 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) + + db[id]=nick + if nick in db: + pass + else: + db[nick]=0 + + write() + + 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 + try: + 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" + else: + bot.reply_to(message,"Что-то пошло не так,отмена операции") + steps[message.chat.id]=None + else: + bot.reply_to(message,"Что-то пошло не так,отмена операции") + steps[message.chat.id]=None + 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": + 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 + + #Date + today = date.today() + + payer=db[str(message.chat.id)] + payer_bill=str(message.chat.id) + sum=str(pnum) + dttm=today.strftime("%d.%m.%Y_"+time.strftime("%H:%M", time.localtime())) + + signstr=payer+pnick+dttm + sign=str(hashlib.sha256(str.encode(signstr)).hexdigest()) + + bot.reply_to(message,"Успешно") + bot.reply_to(message,f""" +-----ЧЕК---- +Плательщик: {payer} +Номер счёта: {payer_bill} +Сумма: {sum} +~~~~~~~~~~ +Получатель: {pnick} +Время&Дата: {dttm} +------------ +ЧАСТНЫЙ БАНК ИГРОКА _SAN5_SkeLet0n_ +ПОДПИСЬ: {sign} +___________ +""") + f=open('signs.sha256','a') + f.write(sign+" "+dttm+"\n") + f.close() + + write() + except: + bot.reply_to(message,"Что-то пошло не так,отмена операции") + else: + 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() +