ProHoster > blog > amministrazione > Creazione di un bot Discord su .NET Core con distribuzione su un server VPS
Creazione di un bot Discord su .NET Core con distribuzione su un server VPS
Ciao Khabroviti!
Oggi vedrai un articolo che ti mostrerà come creare un bot usando C# su .NET Core e come eseguirlo su un server remoto.
L'articolo consisterà in un background, una fase preparatoria, la scrittura della logica e il trasferimento del bot su un server remoto.
Spero che questo articolo possa aiutare molti principianti.
Sfondo
Tutto è iniziato in una notte d'autunno insonne che ho trascorso sul server Discord. Da quando l'ho raggiunto di recente, ho iniziato a studiarlo su e giù. Dopo aver trovato il canale testuale "Posti vacanti", mi sono interessato, l'ho aperto e ho trovato tra le offerte che non mi interessavano, queste sono:
"Programmatore (sviluppatore di bot) requisiti:
conoscenza dei linguaggi di programmazione;
capacità di autoapprendimento.
Пожелания:
capacità di comprendere il codice di altre persone;
conoscenza della funzionalità DISCORD.
obiettivi:
sviluppo di bot;
supporto e manutenzione del bot.
Il tuo vantaggio:
Opportunità di supportare e influenzare il progetto che ti piace;
Acquisire esperienza di lavoro in team;
Opportunità di dimostrare e migliorare le competenze esistenti.
Questo mi ha subito interessato. Sì, non hanno pagato per questo lavoro, ma non ti hanno richiesto alcun obbligo e non sarà superfluo nel portafoglio. Pertanto, ho scritto all'amministratore del server e mi ha chiesto di scrivere un bot che mostrerà le statistiche del giocatore in World of Tanks.
La fase preparatoria
Discrode
Prima di iniziare a scrivere il nostro bot, dobbiamo crearlo per Discord. Hai bisogno:
Andiamo su "Le mie applicazioni" e facciamo clic sul pulsante "Aggiungi una nuova applicazione", dando il nome dell'applicazione e selezionandone il tipo
Salvataggio dell'ID dell'applicazione
Software
C'è già libertà di scelta. Qualcuno usa Visual Studio, qualcuno Rider, qualcuno è generalmente potente e scrive codice in Vim (dopotutto, i veri programmatori usano solo la tastiera, giusto?). Tuttavia, per non implementare l'API Discord, puoi utilizzare la libreria C# non ufficiale "DSharpPlus". Puoi installarlo da NuGet o compilando tu stesso i sorgenti dal repository.
Per coloro che non sanno o hanno dimenticato come installare applicazioni da NuGet.Istruzioni per Visual Studio
Vai alla scheda Progetto - Gestisci pacchetti NuGet;
Clicca sulla recensione e nel campo di ricerca inserisci “DSharpPlus”;
Seleziona e installa il framework;
UTILE!
La fase preparatoria è terminata, puoi procedere alla scrittura del bot.
Logica di scrittura
Non considereremo l'intera logica dell'applicazione, mostrerò solo come lavorare con l'intercettazione dei messaggi da parte del bot e come lavorare con l'API Wargaming.
Il lavoro con il bot Discord avviene tramite il task asincrono statico MainTask(string[] args);
Per chiamare questa funzione, in Main è necessario registrarsi
Dove token è il token del tuo bot.
Quindi, attraverso il lambda, scriviamo i comandi necessari che il bot dovrebbe eseguire:
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(“Hello, ” + e.Author.Username);
}
};
Dove e.Author.Username ottiene il soprannome dell'utente.
In questo modo, quando invii un messaggio che inizia con &, il bot ti saluterà.
Alla fine di questa funzione, devi scrivere await discord.ConnectAsync(); e attendere Task.Delay(-1);
Ciò ti consentirà di eseguire comandi in background senza occupare il thread principale.
Ora dobbiamo occuparci dell'API di Wargaming. Qui è tutto semplice: scrivi richieste CURL, ottieni una risposta sotto forma di una stringa JSON, estrai i dati necessari da lì ed esegui manipolazioni su di essi.
Un esempio di utilizzo di WargamingAPI
public Player FindPlayer(string searchNickname)
{
//https://api.worldoftanks.ru/wot/account/list/?application_id=y0ur_a@@_id_h3r3search=nickname
urlRequest = resourceMan.GetString("url_find_player") + appID + "&search=" + searchNickname;
Player player = null;
string resultResponse = GetResponse(urlRequest);
dynamic parsed = JsonConvert.DeserializeObject(resultResponse);
string status = parsed.status;
if (status == "ok")
{
int count = parsed.meta.count;
if (count > 0)
{
player = new Player
{
Nickname = parsed.data[0].nickname,
Id = parsed.data[0].account_id
};
}
else
{
throw new PlayerNotFound("Игрок не найден");
}
}
else
{
string error = parsed.error.message;
if (error == "NOT_ENOUGH_SEARCH_LENGTH")
{
throw new PlayerNotFound("Минимум три символа требуется");
}
else if (error == "INVALID_SEARCH")
{
throw new PlayerNotFound("Неверный поиск");
}
else if (error == "SEARCH_NOT_SPECIFIED")
{
throw new PlayerNotFound("Пустой никнейм");
}
else
{
throw new Exception("Something went wrong.");
}
}
return player;
}
Attenzione! È severamente sconsigliato archiviare tutti i token e gli ID applicazione in testo non crittografato! Come minimo, Discord vieta tali token quando entrano nella rete mondiale e, al massimo, il bot inizia a essere utilizzato dagli aggressori.
Distribuisci su VPS - server
Una volta terminato con il bot, deve essere ospitato su un server costantemente in esecuzione 24 ore su 7, XNUMX giorni su XNUMX. Ciò è dovuto al fatto che quando l'applicazione è in esecuzione, anche il bot è in esecuzione. Non appena spegni l'applicazione, anche il tuo bot si addormenta.
Esistono molti server VPS in questo mondo, sia su Windows che su Linux, tuttavia, nella maggior parte dei casi, è molto più economico ospitare su Linux.
Sul server Discord, mi è stato consigliato vscale.io e ho immediatamente creato un server virtuale su Ubuntu su di esso e ho caricato il bot. Non descriverò come funziona questo sito, ma andrò direttamente alle impostazioni del bot.
Prima di tutto, devi installare il software necessario che eseguirà il nostro bot scritto in .NET Core. Come farlo è descritto qui.
Successivamente, devi caricare il bot su un servizio Git, come GitHub e simili, e clonarlo su un server VPS o scaricare il tuo bot in altri modi. Tieni presente che avrai solo una console, nessuna GUI. Affatto.
Dopo aver scaricato il tuo bot, devi eseguirlo. Per questo, hai bisogno di:
Congratulazioni! Il tuo bot è in esecuzione. Tuttavia, il bot, purtroppo, occupa la console e non è facile uscire dal server VPS. Inoltre, in caso di riavvio del server, dovrai avviare il bot in un modo nuovo. Ci sono un paio di modi per uscire dalla situazione. Tutti sono correlati all'avvio all'avvio del server:
Aggiungi lo script di esecuzione a /etc/init.d
Creare un servizio che verrà eseguito all'avvio.
Non vedo il motivo di soffermarsi su di essi in dettaglio, tutto è descritto in modo sufficientemente dettagliato su Internet.
risultati
Sono contento di aver accettato questo compito. Questa è stata la mia prima esperienza di sviluppo di bot e sono contento di aver acquisito nuove conoscenze in C # e di aver lavorato con Linux.