كيف نثبّت المكتبات
نعطي بوتك بيئة بايثون خاصة به (.venv)، ونثبّت فيها من أول ملف نجده بهذا الترتيب:
requirements.txt: بالأمرuv pip install -r requirements.txt.uv.lock: بالأمرuv sync --locked --no-dev. حدّث ملف القفل بـuv lockعند كل تغيير فيpyproject.toml، لأن ملف القفل غير المتطابق يوقف التثبيت.poetry.lockأوpdm.lock: نثبّت المشروع منpyproject.tomlبالأمرuv pip install .دون ملف القفل، ويظهر في الكونسولpoetry.lock is not used, installing from pyproject.toml.Pipfile: بالأمرpipenv install.pyproject.tomlوحده: بالأمرuv pip install ..
لتثبيت الإصدارات نفسها التي جربتها مع Poetry أو PDM، أضف requirements.txt بإصدارات محددة، فهو يأتي أولًا. وحدّد إصدار كل مكتبة بـ ==، مثل discord.py==2.7.1، وننبّهك في «شغّل بوتك» إذا وجدنا مكتبة دون إصدار.
ولا نعيد التثبيت إلا عند تغيّر أمر التثبيت أو إصدار بايثون أو ملف المكتبات أو الملف المرتبط به، وهو pyproject.toml مع ملف القفل، و Pipfile.lock مع Pipfile. وإلا يظهر في الكونسول dependencies are up to date (uv).
إصدار بايثون
نقرأ الإصدار من أول ملف نجده: .python-version، ثم runtime.txt مثل python-3.11.9، ثم python_version في Pipfile، ثم .tool-versions. ودون أي منها يشتغل بوتك على بايثون 3.12.
إذا طلب كودك إصدارًا آخر، نثبّته بـ uv في أول نشر يطلبه، ويظهر في الكونسول creating .venv with Python 3.11 through uv. وإذا تغيّر الإصدار، نبني البيئة من جديد: Python changed to 3.11, rebuilding .venv.
كيف نشغّل بوتك
أول تطابق هو المعتمد:
- أمر التشغيل في إعدادات بوتك.
- الحقل
startفيserverk.json. - سطر
worker:أوbot:فيProcfile. main.pyثمbot.pyثمapp.pyثمsrc/main.pyثمsrc/bot.py.python -mمع المجلد الوحيد في أعلى الكود الذي فيه__main__.py، مثلpython -m mybot. ولا نحسب المجلداتtestsوtestوdocsوexamplesوscripts.
نشغّل الملف بالأمر .venv/bin/python -u main.py. أما الأمر الذي تكتبه في الإعدادات أو في serverk.json أو في Procfile، فيشتغل و .venv/bin أول المسار، فيكون python فيه بايثون بوتك نفسه.
ما في بيئة التشغيل
فيها ffmpeg و libopus و libsodium لبوتات الصوت، وأدوات البناء للمكتبات التي تُبنى عند التثبيت. ويصل كل ما يطبعه بوتك إلى الكونسول فورًا، لأن PYTHONUNBUFFERED=1 مضبوط.
هل ساعدك هذا الشرح؟
ساهم في تحسين هذا الشرح
الشروحات مفتوحة المصدر، فإذا كان لديك تصحيح أو إضافة، افتح Pull Request على github.com/serverkgg/bot-python