جديد 📢 عرض الإطلاق لفترة محدودة: خصم حتى 70% على شهرك الأول في كل لعبة.عرض الباقات

كيف تستخدم قاعدة بيانات مع بوت Discord

استضافة بوتات DiscordUpdated Oct 22, 20263 min read

البوت الذي يتذكر أشياء، مثل المستويات أو التحذيرات أو الإعدادات لكل سيرفر، يحتاج إلى مكان يحفظها فيه. تتضمن باقة البوت قاعدة بيانات واحدة. ويمكنك أيضًا استخدام ملف مثل SQLite، الذي لا يحتاج إلى إعداد لكن مشاركته بين بوتين أصعب.

أنشئ قاعدة البيانات

  1. افتح سيرفرك في لوحة التحكم واضغط قواعد البيانات في القائمة اليسرى.
  2. اضغط قاعدة بيانات جديدة، واختر النوع، وأضف تسمية مثل bot-data واضغط إنشاء قاعدة بيانات.
  3. اضغط قاعدة البيانات لترى المضيف والمنفذ واسم قاعدة البيانات والمستخدم وكلمة المرور. راجع كيف تستخدم قواعد البيانات مع سيرفرك للصفحة كاملة.

أبقِ التفاصيل خارج كودك

ضع تفاصيل الاتصال في ملف يقرؤه كودك، مثل .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,
    )

من المفيد أن تعرف

  • استخدم connection pool، لا اتصالًا جديدًا لكل أمر.
  • مرّر مدخلات المستخدم دائمًا كمعاملات للاستعلام، ولا تدمجها أبدًا في نص SQL.
  • ضمّن قاعدة البيانات في نسخك الاحتياطية: كيف تنشئ النسخ الاحتياطية وتنزّلها وتستعيدها.
  • إذا تعذّر اتصال البوت، فقارن المضيف والمنفذ بما في صفحة قاعدة البيانات، وتأكد أن كلمة المرور ليس فيها مسافة زائدة.

تستضيفه في مكان آخر بالفعل؟ انقل سيرفرك إلينا

أنشئ سيرفر ألعابك
جاهز للبدء؟

وفّر حتى 30% على سيرفر ألعابك الجديد.
أداء ممتاز وتفعيل فوري واعتمادية عالية، كل ذلك بسعر أفضل.

أحدث مقالات المدونة