1
0
Fork 0
mirror of https://github.com/EDeev/npr_meteobot.git synced 2026-10-07 20:49:33 +03:00

Токен из окружения, база создаётся сама

- токен бота — из BOT_TOKEN, а не из config.py;
- sub.db (с идентификатором подписчика) убран из git: SQLighter создаёт таблицы и
  служебные строки из schema.sql, если базы нет.
This commit is contained in:
Деев Егор Викторович 2026-10-02 23:36:49 +00:00
parent be4411e269
commit f223570bab
5 changed files with 35 additions and 2 deletions

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
__pycache__/
*.py[cod]
.venv/
.env
*.db

View file

@ -1,5 +1,7 @@
API_TOKEN = 'token from BotFather' # ОСНОВНОЙ import os
# API_TOKEN = 'token from BotFather' # ТЕСТЫ
# Токен бота от @BotFather — из переменной окружения BOT_TOKEN
API_TOKEN = os.environ.get('BOT_TOKEN', '')
CITY = {'Центральный район': [1, 'Норильск'], 'район Талнах': [2, 'Талнах'], CITY = {'Центральный район': [1, 'Норильск'], 'район Талнах': [2, 'Талнах'],
'ж/о Оганер': [3, 'Оганер'], 'район Кайеркан': [4, 'Кайеркан']} 'ж/о Оганер': [3, 'Оганер'], 'район Кайеркан': [4, 'Кайеркан']}

15
schema.sql Normal file
View file

@ -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);

11
sql.py
View file

@ -1,11 +1,22 @@
import os
import sqlite3 import sqlite3
SCHEMA = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'schema.sql')
class SQLighter: class SQLighter:
def __init__(self, database): def __init__(self, database):
"""Подключаемся к БД и сохраняем курсор соединения""" """Подключаемся к БД и сохраняем курсор соединения"""
self.connection = sqlite3.connect(database) self.connection = sqlite3.connect(database)
self.cursor = self.connection.cursor() 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): def user_exists(self, id_user):
"""Проверяем, есть ли уже пользователь в базе""" """Проверяем, есть ли уже пользователь в базе"""

BIN
sub.db

Binary file not shown.