NOWOŚĆ 📢 Ograniczona oferta na start: do 70% zniżki na pierwszy miesiąc, na każdą grę!Zobacz plany

Jak hostować bota Discord w Rust

Hosting botów DiscordUpdated Oct 29, 20265 min read

Bot w Rust jest budowany na twoim własnym komputerze i przesyłany jako jeden gotowy program dla Linuksa; na serwerze nic się nie kompiluje, więc cała pamięć twojego planu trafia do bota. Żeby uruchomić takiego bota:

  1. Zbuduj go dla Linuksa x86-64 na swoim komputerze.
  2. Zmień typ: na stronie Bot, w sekcji Kod, kliknij Zmień to, co działa obok Runtime i wybierz Rust Bot.
  3. Prześlij program (domyślnie nazwany bot) w Files albo ustaw Link do pobrania (opcjonalnie) w sekcji Kod.
  4. Wklej swój token na stronie Bot, w sekcji Discord, i kliknij Połącz.
  5. Naciśnij Uruchom i obserwuj Console.

1. Zbuduj dla Linuksa

rustup target add x86_64-unknown-linux-musl
cargo build --release --target x86_64-unknown-linux-musl

Program ląduje w target/x86_64-unknown-linux-musl/release/, nazwany tak jak twój crate. Target musl tworzy jeden samodzielny plik, który nie zależy od bibliotek systemowych serwera. Budowanie na Windowsie lub macOS wymaga linkera dla Linuksa; zajmują się tym narzędzia takie jak cross albo cargo-zigbuild. Plik .exe ani build dla macOS nie uruchomi się na serwerze.

2. Minimalny bot serenity

Cargo.toml (zależności)

[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:?}");
    }
}

Token pochodzi z DISCORD_TOKEN. Wypisanie Logged in as zmienia znacznik na stronie Przegląd na Online na Discordzie. Boty poise i twilight działają tak samo: zbuduj, prześlij, uruchom.

3. Zmień typ na Rust Bot

Na stronie Bot, w sekcji Kod, kliknij Zmień to, co działa obok Runtime i wybierz Rust Bot. Na komputerze to samo okno otwiera etykieta typu u góry strony (na przykład Node.js Bot). Zobacz Jak przełączyć bota na inny język.

4. Umieść program na serwerze

Prześlij go: zmień nazwę swojego programu na bot (albo ustaw Plik startowy na jego nazwę), a potem w Files kliknij Prześlij i wybierz go. Prześlij obok niego pliki, które odczytuje. Serwer nadaje mu uprawnienia do uruchamiania przy starcie.

Albo niech serwer go pobierze: na stronie Bot, w sekcji Kod, na karcie Ustawienia, ustaw Link do pobrania (opcjonalnie) na link https do gotowego programu, na przykład plik wydania z GitHub, i kliknij Zapisz. Przy starcie, gdy brakuje pliku programu, serwer go pobiera (do 500 MB). Żeby zaktualizować, opublikuj nowy build pod tym linkiem, usuń program w Files i naciśnij Uruchom. Gdy link jest ustawiony, Uruchom bota na karcie konfiguracji działa, zanim plik istnieje: pobieranie odbywa się w ramach startu.

Sekcja Kod bota Go, którą współdzieli bot Rust: karta Jak działa i karta Ustawienia, która wymienia Argumenty startowe i Link do pobrania.

5. Sprawdź ustawienia i uruchom

  • Plik startowy (karta Jak działa): nazwa programu i folder, domyślnie bot.
  • Argumenty startowe (opcjonalnie) (karta Ustawienia): dodatkowe argumenty dla twojego programu. Znaki powłoki, takie jak $, ;, & i >, są niedozwolone.

Wklej token w sekcji Discord, kliknij Połącz, a potem naciśnij Uruchom. Konsola pokazuje [PlayNHost] Starting your bot, a potem wyjście twojego programu.

Linie konsoli, które możesz zobaczyć

LiniaCo zrobić
[PlayNHost] Your bot is not set up yet: the program bot was not found.Prześlij program albo ustaw Plik startowy na jego dokładną nazwę i folder.
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again.Zbuduj ponownie dla x86_64-unknown-linux-musl.
[PlayNHost] Downloading your program, a potem [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.Link jest błędny, prywatny albo nie jest https. Sprawdź Link do pobrania (opcjonalnie) w sekcji Kod, w Ustawienia.
DISCORD_TOKEN is not set (z przykładu)Wklej token w sekcji Discord, a potem zrestartuj.

Boty w Rust nie mają źródła Git ani pola Pakiety: twoje crate'y są w środku programu. Klucze i hasła trafiają do Środowisko i są odczytywane przez std::env::var: Jak ustawić zmienne środowiskowe i sekrety.

Twój bot działa już gdzie indziej? Przenieś go do nas

NASZE OSTATNIE WPISY