Seviyeler, uyarılar ya da sunucu başına ayarlar gibi şeyleri hatırlayan bir botun bunları tutacağı bir yere ihtiyacı vardır. Bot paketiniz bir veritabanı içerir. Kurulum gerektirmeyen ama iki bot arasında paylaşılması daha zor olan SQLite gibi bir dosya da kullanabilirsiniz.
Veritabanını oluşturun
- Sunucunuzu panel'de açın ve sol menüde Veritabanları'na tıklayın.
- Yeni veritabanı'na tıklayın, türü seçin,
bot-datagibi bir etiket ekleyin ve Veritabanı oluştur'a tıklayın. - Host'u, portu, veritabanı adını, kullanıcıyı ve şifreyi görmek için veritabanına tıklayın. Sayfanın tamamı için Sunucunuzla veritabanları nasıl kullanılır yazısına bakın.
Bilgileri kodunuzun dışında tutun
Bağlantı bilgilerini kodunuzun okuduğu bir dosyaya koyun, örneğin .env, ve bu dosyayı git'e commit etmeyin. Files bölümünde .env dosyasını oluşturun:
DB_HOST=your-host
DB_PORT=3306
DB_NAME=your-database
DB_USER=your-user
DB_PASSWORD=your-password
Node.js (mysql2 ve dotenv)
mysql2 ve dotenv paketlerini package.json dosyasına ekleyin, sonra:
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 ve python-dotenv paketlerini requirements.txt dosyasına ekleyin, sonra:
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,
)
Bilmeniz gerekenler
- Her komut için yeni bir bağlantı değil, bir bağlantı havuzu (connection pool) kullanın.
- Kullanıcı girdisini her zaman sorgu parametresi olarak geçirin, asla metni SQL'e birleştirerek değil.
- Veritabanını yedeklerinize dahil edin: Yedekleri nasıl oluşturur, indirir ve geri yüklersiniz.
- Bot bağlanamıyorsa host ve portu veritabanı sayfasıyla karşılaştırın ve şifrede fazladan boşluk olmadığını kontrol edin.





