Боту, который что-то запоминает, например уровни, предупреждения или настройки каждого сервера, нужно где-то это хранить. В ваш тариф для ботов входит одна база данных. Можно также использовать файл вроде SQLite: он не требует настройки, но его сложнее делить между двумя ботами.
Создайте базу данных
- Откройте сервер в панели и нажмите Базы данных в меню слева.
- Нажмите Новая база данных, выберите тип, добавьте метку, например
bot-data, и нажмите Создать базу данных. - Нажмите на базу данных, чтобы увидеть хост, порт, имя базы данных, пользователя и пароль. Всю страницу описывает статья Как использовать базы данных на сервере.
Не храните данные в коде
Положите данные подключения в файл, который читает ваш код, например .env, и не добавляйте этот файл в коммиты git. В Files создайте .env:
DB_HOST=your-host
DB_PORT=3306
DB_NAME=your-database
DB_USER=your-user
DB_PASSWORD=your-password
Node.js (mysql2 и dotenv)
Добавьте mysql2 и dotenv в package.json, затем:
require('dotenv').config();
const mysql = require('mysql2/promise');
const pool = mysql.createPool({
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
});
async function main() {
await pool.query('CREATE TABLE IF NOT EXISTS warnings (id INT AUTO_INCREMENT PRIMARY KEY, user_id VARCHAR(32), reason TEXT)');
const [rows] = await pool.query('SELECT COUNT(*) AS n FROM warnings');
console.log('warnings stored:', rows[0].n);
}
main();
Python (aiomysql)
Добавьте aiomysql и python-dotenv в requirements.txt, затем:
import os
import aiomysql
from dotenv import load_dotenv
load_dotenv()
async def get_pool():
return await aiomysql.create_pool(
host=os.environ["DB_HOST"], port=int(os.environ["DB_PORT"]),
db=os.environ["DB_NAME"], user=os.environ["DB_USER"],
password=os.environ["DB_PASSWORD"], autocommit=True,
)
Полезно знать
- Используйте пул соединений, а не новое соединение для каждой команды.
- Всегда передавайте пользовательский ввод как параметры запроса и никогда не склеивайте текст в SQL.
- Включайте базу данных в бэкапы: Как создавать, скачивать и восстанавливать бэкапы.
- Если бот не может подключиться, сверьте хост и порт со страницей базы данных и проверьте, нет ли в пароле лишнего пробела.





