You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

262 lines
6.9 KiB

2 years ago
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()