old_01
This commit is contained in:
174
doners/shop-telegram-bot/installer.py
Normal file
174
doners/shop-telegram-bot/installer.py
Normal file
@@ -0,0 +1,174 @@
|
||||
from os import system, name, remove, mkdir, rmdir, listdir, environ
|
||||
from os.path import exists
|
||||
from sys import argv
|
||||
|
||||
import sqlite3
|
||||
|
||||
|
||||
def clearConsole():
|
||||
system("cls" if name in ("nt", "dos") else "clear")
|
||||
|
||||
def create_config(token, main_admin_id, config_path="config.ini"):
|
||||
DEFAULT_CONFIG_TEXT = f"""[main_settings]
|
||||
token = {token}
|
||||
mainadminid = {main_admin_id}
|
||||
debug = 0
|
||||
|
||||
[shop_settings]
|
||||
name = Название магазина
|
||||
greeting = Добро пожаловать!
|
||||
refundpolicy = Текст для вкладки "Политика возврата"
|
||||
contacts = Текст для вкладки "Контакты"
|
||||
enableimage = 1
|
||||
enablesticker = 0
|
||||
enablephonenumber = 0
|
||||
enabledelivery = 0
|
||||
delivery_price = 0.0
|
||||
enablecaptcha = 1
|
||||
|
||||
[stats_settings]
|
||||
barcolor = 3299ff
|
||||
borderwidth = 1
|
||||
titlefontsize = 20
|
||||
axisfontsize = 12
|
||||
tickfontsize = 8
|
||||
"""
|
||||
with open(config_path, "w") as config:
|
||||
config.write(DEFAULT_CONFIG_TEXT)
|
||||
|
||||
|
||||
CREATE_CATS_TEXT = """
|
||||
CREATE TABLE "cats" (
|
||||
"id" INTEGER,
|
||||
"name" TEXT NOT NULL,
|
||||
PRIMARY KEY("id")
|
||||
)
|
||||
"""
|
||||
CREATE_ITEMS_TEXT = """
|
||||
CREATE TABLE "items" (
|
||||
"id" INTEGER,
|
||||
"name" TEXT NOT NULL,
|
||||
"price" FLOAT NOT NULL,
|
||||
"cat_id" INTEGER NOT NULL,
|
||||
"desc" TEXT,
|
||||
"active" INTEGER,
|
||||
"amount" INTEGER,
|
||||
"image_id" INTEGER,
|
||||
"hide_image" INTEGER,
|
||||
PRIMARY KEY("id")
|
||||
)
|
||||
"""
|
||||
CREATE_ORDERS_TEXT = """
|
||||
CREATE TABLE "orders" (
|
||||
"order_id" INTEGER,
|
||||
"user_id" INTEGER,
|
||||
"item_list" TEXT,
|
||||
"email_adress" TEXT,
|
||||
"phone_number" TEXT,
|
||||
"home_adress" TEXT,
|
||||
"additional_message" TEXT,
|
||||
"date" TEXT,
|
||||
"status" INTEGER
|
||||
)
|
||||
"""
|
||||
CREATE_USERS_TEXT = """
|
||||
CREATE TABLE "users" (
|
||||
"user_id" INTEGER NOT NULL,
|
||||
"is_admin" INTEGER,
|
||||
"is_manager" INTEGER,
|
||||
"notification" INTEGER,
|
||||
"date_created" TEXT,
|
||||
"cart" TEXT,
|
||||
"cart_delivery" INTEGER
|
||||
)
|
||||
"""
|
||||
CREATE_COMMANDS_TEXT = """
|
||||
CREATE TABLE "commands" (
|
||||
"id" INTEGER NOT NULL,
|
||||
"command" TEXT,
|
||||
"response" TEXT,
|
||||
PRIMARY KEY("id")
|
||||
)
|
||||
"""
|
||||
|
||||
def create_db():
|
||||
conn = sqlite3.connect("data.db")
|
||||
c = conn.cursor()
|
||||
c.execute(CREATE_CATS_TEXT)
|
||||
c.execute(CREATE_ITEMS_TEXT)
|
||||
c.execute(CREATE_ORDERS_TEXT)
|
||||
c.execute(CREATE_USERS_TEXT)
|
||||
c.execute(CREATE_COMMANDS_TEXT)
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
def do_files_exist():
|
||||
return any(list(map(exists, ["config.ini", "images", "data.db"])))
|
||||
|
||||
if __name__ == "__main__":
|
||||
if "--nointeract" in argv:
|
||||
if do_files_exist():
|
||||
exit(0)
|
||||
|
||||
token = environ.get("TELEGRAM_TOKEN")
|
||||
main_admin_id = environ.get("MAIN_ADMIN_ID")
|
||||
if token is None or main_admin_id is None:
|
||||
print("Не указаны переменные окружения TELEGRAM_TOKEN или MAIN_ADMIN_ID")
|
||||
exit(1)
|
||||
create_config(token, main_admin_id)
|
||||
|
||||
create_db()
|
||||
[mkdir(name) for name in ["backups", "images"]]
|
||||
|
||||
exit(0)
|
||||
|
||||
|
||||
clearConsole()
|
||||
if do_files_exist():
|
||||
while True:
|
||||
confirmation = input("Вы уверены, что хотите повторно запустить процесс установки? Все данные будут утеряны! (y/N) ")
|
||||
if confirmation.lower() in ["y", "yes", "n", "no", ""]:
|
||||
break
|
||||
else:
|
||||
confirmation = "y"
|
||||
|
||||
|
||||
if confirmation.lower() in ["y", "yes"]:
|
||||
print("Вы можете узнать как получить токен бота, перейдя по ссылке: https://youtu.be/fyISLEvzIec")
|
||||
token = input("Введите токен бота: ")
|
||||
print("Вы можете получить ваш ID, написав \"/start\" боту @userinfobot")
|
||||
main_admin_id = input("Введите ID главного администратора: ")
|
||||
if main_admin_id.isalnum():
|
||||
if exists("data.db"):
|
||||
remove("data.db")
|
||||
print("База данных была удалена.")
|
||||
create_db()
|
||||
print("База данных была создана.")
|
||||
if exists("config.ini"):
|
||||
remove("config.ini")
|
||||
print("Файл настроек был удален.")
|
||||
create_config(token, main_admin_id)
|
||||
print("Файл настроек был создан.")
|
||||
if exists("images"):
|
||||
for file in listdir("images"):
|
||||
remove("images/" + file)
|
||||
rmdir("images")
|
||||
print("Папка \"images\" была удалена.")
|
||||
mkdir("images")
|
||||
print("Папка \"images\" была создана.")
|
||||
if exists("backups"):
|
||||
for folder in listdir("backups"):
|
||||
for file in listdir("backups/" + folder):
|
||||
remove(f"backups/{folder}/{file}")
|
||||
rmdir(f"backups/{folder}")
|
||||
rmdir("backups")
|
||||
print("Папка \"backups\" была удалена.")
|
||||
mkdir("backups")
|
||||
print("Папка \"backups\" была создана.")
|
||||
else:
|
||||
print("Неверный ID главного администратора.")
|
||||
else:
|
||||
print("Установка была отменена.")
|
||||
|
||||
|
||||
input("Нажмите ENTER, чтобы продолжить...")
|
||||
Reference in New Issue
Block a user