Бот на Rust собирается на вашем компьютере и загружается как одна готовая программа для Linux. На сервере ничего не компилируется, поэтому вся память вашего тарифа достаётся боту. Чтобы запустить его:
- Соберите бота для Linux x86-64 на своём компьютере.
- Смените тип: на странице Бот, в разделе Код, нажмите Изменить, что запускается рядом с полем Среда выполнения и выберите Rust Bot.
- Загрузите программу (по умолчанию она называется
bot) в Files или задайте Ссылка для скачивания (необязательно) в разделе Код. - Вставьте токен на странице Бот, в разделе Discord, и нажмите Подключить.
- Нажмите Запустить и следите за Console.
1. Соберите программу для Linux
rustup target add x86_64-unknown-linux-musl
cargo build --release --target x86_64-unknown-linux-musl
Программа появляется в target/x86_64-unknown-linux-musl/release/ и называется по имени вашего крейта. Цель musl создаёт один самодостаточный файл, который не зависит от системных библиотек сервера. Для сборки на Windows или macOS нужен компоновщик Linux: с этим помогают такие инструменты, как cross или cargo-zigbuild. Файл .exe или сборка для macOS на сервере не запустятся.
2. Минимальный бот на serenity
Cargo.toml (зависимости)
[dependencies]
serenity = "0.12"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
src/main.rs
use serenity::async_trait;
use serenity::model::gateway::Ready;
use serenity::prelude::*;
struct Handler;
#[async_trait]
impl EventHandler for Handler {
async fn ready(&self, _ctx: Context, ready: Ready) {
println!("Logged in as {}", ready.user.name);
}
}
#[tokio::main]
async fn main() {
let token = std::env::var("DISCORD_TOKEN").expect("DISCORD_TOKEN is not set");
let mut client = Client::builder(&token, GatewayIntents::GUILDS)
.event_handler(Handler)
.await
.expect("could not create the client");
if let Err(why) = client.start().await {
println!("Client error: {why:?}");
}
}
Токен берётся из DISCORD_TOKEN. Строка Logged in as переключает метку на странице Обзор на Онлайн в Discord. Боты на poise и twilight работают так же: собрать, загрузить, запустить.
3. Смените тип на Rust Bot
На странице Бот, в разделе Код, нажмите Изменить, что запускается рядом с полем Среда выполнения и выберите Rust Bot. На компьютере то же окно открывает метка типа вверху страницы (например, Node.js Bot). См. Как переключить бота на другой язык.
4. Положите программу на сервер
Загрузите её: переименуйте программу в bot (или впишите её имя в Файл запуска), затем в Files нажмите Загрузить и выберите её. Загрузите рядом с ней все файлы, которые она читает. Сервер делает её исполняемой при запуске.
Или пусть сервер скачает её сам: на странице Бот, в разделе Код, в карточке Настройки, задайте Ссылка для скачивания (необязательно) как https-ссылку на вашу готовую программу, например на файл релиза GitHub, и нажмите Сохранить. Если при запуске файла программы нет, сервер скачивает его (до 500 МБ). Чтобы обновить, опубликуйте новую сборку по этой ссылке, удалите программу в Files и нажмите Запустить. Если ссылка задана, кнопка Запустить бота в карточке настройки работает до появления файла: скачивание выполняется как часть запуска.

5. Проверьте настройки и запустите
- Файл запуска (карточка Как он запускается): имя и папка программы, по умолчанию
bot. - Аргументы запуска (необязательно) (карточка Настройки): дополнительные аргументы для вашей программы. Символы оболочки вроде
$,;,&и>не разрешены.
Вставьте токен в разделе Discord, нажмите Подключить, затем нажмите Запустить. Консоль покажет [PlayNHost] Starting your bot, а затем вывод вашей программы.
Строки консоли, которые вы можете увидеть
| Строка | Что делать |
|---|---|
[PlayNHost] Your bot is not set up yet: the program bot was not found. | Загрузите программу или впишите в Файл запуска её точное имя и папку. |
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again. | Соберите программу заново для x86_64-unknown-linux-musl. |
[PlayNHost] Downloading your program, затем [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start. | Ссылка неверная, приватная или не https. Проверьте Ссылка для скачивания (необязательно) в разделе Код, в карточке Настройки. |
DISCORD_TOKEN is not set (из примера) | Вставьте токен в разделе Discord, затем перезапустите бота. |
У ботов на Rust нет источника Git и нет поля Пакеты: ваши крейты находятся внутри программы. Ключи и пароли хранятся в разделе Окружение и читаются через std::env::var: Как задать переменные окружения и секреты.



