НОВОЕ 📢 Ограниченное стартовое предложение: скидка до 70% на первый месяц для любой игры!Посмотреть тарифы

Как установить пакеты для вашего Discord-бота

Хостинг Discord-ботовUpdated Oct 29, 20264 min read

Устанавливать пакеты вручную не нужно. Перечислите их в файле пакетов (package.json или requirements.txt) либо впишите их названия в поле Пакеты на странице Бот, в разделе Код, и перезапустите бота: сервер устанавливает их при следующем запуске. Дальше он устанавливает пакеты снова, только если изменились список, файл пакетов или версия среды выполнения, либо раз в сутки.

Что устанавливает каждый тип при запуске

ТипИз ваших файловПоле «Пакеты»
Node.js Botnpm install, если есть package.jsonДа, устанавливается через npm
Python Botpip install -U -r requirements.txt (файл, указанный в поле Файл requirements)Да, устанавливается через pip
Bun Botbun install, если есть package.jsonДа, добавляется через bun add
Deno BotВаши импорты npm: и jsr:, которые скачиваются, когда бот загружает их в первый разНет
.NET BotПакеты NuGet из вашего .csproj, которые восстанавливаются при сборке проектаНет
Java Bot, Go Bot, Rust BotНичего: библиотеки встроены в ваш jar или программуНет

Не загружайте node_modules, venv или .venv: сервер собирает их для той системы Linux, на которой работает, а она не всегда совпадает с вашим компьютером.

Используйте файл пакетов (рекомендуется)

Node.js и Bun

На своём компьютере выполните npm install discord.js mysql2 (или bun add ...). Эта команда запишет их в package.json. Загрузите новый package.json и перезапустите бота.

Python

Пишите в requirements.txt по одному пакету в строке. Если нужна определённая версия, закрепите её через ==:

discord.py
aiohttp
python-dotenv==1.0.1

У вашего файла другое имя или он лежит в папке? Укажите это в поле Файл requirements в карточке Настройки в разделе Код. Пакеты попадают в папку .local среди ваших файлов: оставьте её там.

Используйте поле «Пакеты»

  1. Откройте сервер вашего бота в панели, затем страницу Бот, раздел Код.
  2. В карточке Как он запускается впишите названия в поле Пакеты через пробел, например yt-dlp aiohttp. Не через запятую и не целую строку pip install.
  3. Нажмите Сохранить, затем перезапустите бота.

Карточка «Как он запускается» с полем «Пакеты», заполненным двумя названиями пакетов, и кнопкой «Сохранить».

В поле помещается до 200 символов. Если нужно больше, используйте файл пакетов. Пакеты устанавливаются заново при первом запуске после того, как вы изменили поле или файл, поэтому этот запуск занимает больше времени. Если ничего не менялось, консоль выводит [PlayNHost] Packages are up to date. They install again when you change them, or after a day. Более старый сервер, который всё ещё устанавливает пакеты при каждом запуске, получает это после нажатия Переустановить внизу раздела Код: ваши файлы останутся.

Если что-то пошло не так

Что вы видитеЧто это значит
Баннер Не удалось установить пакет со строкой [PlayNHost] Some packages in Bot page, Code, Packages could not be installed.Название в поле Пакеты написано с ошибкой или такого пакета нет. Бот всё равно запускается с тем, что установлено. Исправьте название через Открыть «Пакеты».
[PlayNHost] npm could not install everything in package.json. или [PlayNHost] pip could not install everything in requirements.txt. (Bun: [PlayNHost] Bun could not install everything in package.json.)Строка в вашем файле пакетов неверна. npm, pip или Bun называет её строкой выше (E404, No matching distribution found for ...).
Баннер Не хватает пакета, нужного вашему коду с сообщением Cannot find module 'x' или ModuleNotFoundError: No module named 'x'Ваш код импортирует пакет, который никто не установил. Добавьте его в файл пакетов или в поле Пакеты.

В Python имя, которое вы устанавливаете, не всегда совпадает с именем, которое вы импортируете:

Вы импортируетеВы устанавливаете
import discorddiscord.py
from dotenv import load_dotenvpython-dotenv
import yamlPyYAML
from PIL import ImagePillow

Ещё: Почему ваш Discord-бот постоянно останавливается, Node.js, Python, Bun.

Ваш бот уже у другого хостинга? Перенесите его к нам

ПОСЛЕДНИЕ БЛОГИ