Files
BOTKlining/doners/shop-telegram-bot/installer.py
2025-06-08 20:55:08 +09:00

175 lines
5.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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, чтобы продолжить...")