diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5325d19 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +__pycache__/ +*.py[cod] +.venv/ +.env +*.db diff --git a/config.py b/config.py index 73b8157..a0f007e 100644 --- a/config.py +++ b/config.py @@ -1,5 +1,7 @@ -API_TOKEN = 'token from BotFather' # ОСНОВНОЙ -# API_TOKEN = 'token from BotFather' # ТЕСТЫ +import os + +# Токен бота от @BotFather — из переменной окружения BOT_TOKEN +API_TOKEN = os.environ.get('BOT_TOKEN', '') CITY = {'Центральный район': [1, 'Норильск'], 'район Талнах': [2, 'Талнах'], 'ж/о Оганер': [3, 'Оганер'], 'район Кайеркан': [4, 'Кайеркан']} diff --git a/schema.sql b/schema.sql new file mode 100644 index 0000000..8c82379 --- /dev/null +++ b/schema.sql @@ -0,0 +1,15 @@ +-- Схема базы бота и служебные строки, которые он ожидает (подписчиков нет) +CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, id_user VARCHAR (255) NOT NULL, + rating INTEGER (4) NOT NULL DEFAULT (0), status BOOLEAN NOT NULL DEFAULT (False), + send BOOLEAN NOT NULL DEFAULT (True), part INTEGER (1) NOT NULL, city INTEGER (1) NOT NULL); +CREATE TABLE IF NOT EXISTS parts (part INTEGER PRIMARY KEY AUTOINCREMENT, nor VARCHAR (3), tal VARCHAR (3), + oga VARCHAR (3), kae VARCHAR (3)); +CREATE TABLE IF NOT EXISTS weather (id STRING, "1" VARCHAR, "4" VARCHAR, "7" VARCHAR, "10" VARCHAR, + "13" VARCHAR, "16" VARCHAR, "19" VARCHAR, "22" VARCHAR); +CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY AUTOINCREMENT, date DATE NOT NULL, part INTEGER (2) NOT NULL, + weath STRING); + +INSERT INTO parts (part, nor, tal, oga, kae) VALUES (1, '11', '11', '11', '11'), (2, '11', '11', '11', '11'); +INSERT INTO weather (id) VALUES (' '), ('tomorrow'), ('3-day'), ('4-day'), ('5-day'), ('6-day'), ('7-day'), + ('8-day'), ('9-day'), ('10-day'); +INSERT INTO data (id, date, part) VALUES (1, '2022-02-24', 1); diff --git a/sql.py b/sql.py index e340931..79de4af 100644 --- a/sql.py +++ b/sql.py @@ -1,11 +1,22 @@ +import os import sqlite3 +SCHEMA = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'schema.sql') + class SQLighter: def __init__(self, database): """Подключаемся к БД и сохраняем курсор соединения""" self.connection = sqlite3.connect(database) self.cursor = self.connection.cursor() + self._create_if_empty() + + def _create_if_empty(self): + """Новая база: создаём таблицы и служебные строки из schema.sql""" + exists = self.cursor.execute("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'users'").fetchone() + if not exists: + with open(SCHEMA, encoding='utf-8') as f: + self.connection.executescript(f.read()) def user_exists(self, id_user): """Проверяем, есть ли уже пользователь в базе""" diff --git a/sub.db b/sub.db deleted file mode 100644 index 28cfb92..0000000 Binary files a/sub.db and /dev/null differ