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.

268 lines
7.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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']
else:
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()