Discordi boti loomine .NET Core'is VPS-serverile rakendamisega

Discordi boti loomine .NET Core'is VPS-serverile rakendamisega

Tere, Habravlased!

TÀna saate tutvuda artikliga, kus rÀÀgitakse, kuidas luua boti, kasutades C#-t .NET Core'is, ja kuidas see kÀivitada kaugarvutil.

Artikkel koosneb eelloost, ettevalmistusfaasist, loogika kirjutamisest ja boti ĂŒleviimisest kaugarvutile.

Loodan, et see artikkel aitab paljusid algajaid.

Eelalugu

KĂ”ik algas ĂŒhel unetul sĂŒgisĂ”htul, mille veetsin Discordi serveris. Kuna ma olin seal suhteliselt uus, hakkasin seda kĂ”ikvĂ”imalikult uurima. Leides tekstikanali „Tööpakkumised”, tekkis mul huvi, avasin selle ja leidsin, et ĂŒks mitte huvitav pakkumine on:

„Programmeerija (boti arendaja)
NÔuded:

  • programmeerimiskeelte tundmine;
  • vĂ”ime eneseĂ”ppimiseks.

Soovitused:

  • oskus mĂ”ista vÔÔrast koodi;
  • DISCORDi funktsionaalsuse tundmine.

Ülesanded:

  • boti arendamine;
  • boti töö toetamine ja jĂ€lgimine.

Teie kasu:

  • VĂ”imalus toetada ja mĂ”jutada meeldivat projekti;
  • Kogemuste omandamine meeskonnas töötamisel;
  • VĂ”imalus demonstreerida ja tĂ€iustada olemasolevaid oskusi."


See pani mind huvituma. Jah, selle töö eest ei makstud, kuid sinult ei nÔutud mingeid kohustusi ning see ei oleks ka portfoolios liialt. SeetÔttu kirjutasin serveriadministraatorile ning ta palus mul kirjutada boti, mis nÀitab mÀngija statistikat World of Tanks'is.

Eeltestimine

Discordi boti loomine .NET Core'is VPS-serverile rakendamisega
Discrod
Enne kui hakkame meie boti kirjutama, tuleb see kÔigepealt Discordis luua. Teil on vaja:

  1. Logida sisse oma Discordi kontole lingi kaudu
  2. Vahekaardil „Rakendused“ vajutage nuppu „Uus rakendus“ ja nimetage bot
  3. Saada boti token, sisestades oma boti ja leidke sealt kaust „Seaded“ vahekaart „Bot“
  4. Salvestage token kuskile

Wargaming

Samuti tuleb luua rakendus Wargamingus, et saada juurdepÀÀs Wargaming API-le. Siin on kÔik samuti lihtne:

  1. Logige sisse Wargamingu kontole antud lingil
  2. Minge jaotisse „Minu rakendused“ ja vajutage nuppu „Lisa uus rakendus“, andes rakendusele nime ja valides selle tĂŒĂŒbi
  3. Salvesta rakenduse ID

Tarkvara

Siin on juba vabadus valida. Keegi kasutab Visual Studio't, keegi Riderit, keegi aga tĂ”siselt voolab ja kirjutab koodi Vim'is (Ă”iged programmeerijad kasutavad ju ainult klaviatuuri, eks?). Kuid Discord API kasutamiseks, ei pea seda ise rakendama, piisab, kui kasutada mitteformaalseid C# raamatukogusid nagu “DSharpPlus”. Selle saad installida kas NuGet'ist vĂ”i koguda ise lĂ€htekoodid repolt.

Neile, kes ei tea vÔi on unustanud, kuidas NuGet'ist rakendusi installida.Juhend Visual Studio jaoks

  1. Liigume vahekaardile Projekt – NuGet pakettide haldamine;
  2. KlĂ”psame ĂŒlevaate ja kirjutame otsinguvĂ€ljale “DSharpPlus”;
  3. Valime ja installime framework'i;
  4. PROFIT!

Ettevalmistavad tööd on lĂ”petatud, nĂŒĂŒd vĂ”ime liikuda boti kirjutamise juurde.

Sisu kirjutamine

Discordi boti loomine .NET Core'is VPS-serverile rakendamisega

Me ei vaata rakenduse kogu loogikat, nĂ€itan vaid, kuidas töötada boti sĂ”numite pĂŒĂŒdmisega ja kuidas töötada Wargaming API'ga.

Discord boti töö toimub funktsiooni static async Task MainTask(string[] args); kaudu;
Selle funktsiooni vÀljakutsumiseks tuleb Main'is kirjutada

MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();

Edasi tuleb teil oma boti initsialiseerida:

discord = new DiscordClient(new DiscordConfiguration
{
    Token = token,
    TokenType = TokenType.Bot,
    UseInternalLogHandler = true,
    LogLevel = LogLevel.Debug
});

Kus token on teie boti token.
Siis, lÀbi lambda, mÀÀrame vajalikud kÀsud, mida bot peab tÀitma:

discord.MessageCreated += async e =>
{
    string message = e.Message.Content;
    if (message.StartsWith("&"))
    {
        await e.Message.RespondAsync(“Tere, ” + e.Author.Username);
    }
};

Kus e.Author.Username – kasutaja hĂŒĂŒdnime saamine.

Nii et kui saadate mis tahes sÔnumi, mis algab &, tervitab bot teid.

Selle funktsiooni lÔpus on vajalik kirjutada await discord.ConnectAsync(); ja await Task.Delay(-1);

See vÔimaldab kÀske tÀita taustal, mitte blokeerides pÔhivoogu.

NĂŒĂŒd on vajalik mĂ”ista Wargaming API-d. Siin on kĂ”ik lihtne – kirjutage CURL-pĂ€ringud, saate vastuse JSON-formaadis, tĂ”state sealt vajalikud andmed ja teete nendega manipuleerimisi.

NĂ€ide WargamingAPI kasutamisest

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("MĂ€ngija ei leitud");
                }
            }
            else
            {
                string error = parsed.error.message;
                if (error == "NOT_ENOUGH_SEARCH_LENGTH")
                {
                    throw new PlayerNotFound("NÔutav on vÀhemalt kolm tÀhte");
                }
                else if (error == "INVALID_SEARCH")
                {
                    throw new PlayerNotFound("Vale otsing");
                }
                else if (error == "SEARCH_NOT_SPECIFIED")
                {
                    throw new PlayerNotFound("TĂŒhi hĂŒĂŒdnimi");
                }
                else
                {
                    throw new Exception("Midagi lÀks valesti.");
                }
            }

            return player;
        }

TĂ€htis! KĂ”iki tokeneid ja rakenduste ID-sid ei soovitata avatud kujul hoida! KĂ”ige vĂ€hem – Discord keelab sellised tokenid, kui need satuvad ĂŒlemaailmsetesse vĂ”rkudesse, kĂ”ige hullem – bot hakkab kurjategijate kĂ€tes tegutsema.

VPS – serveri seadistamine

Discordi boti loomine .NET Core'is VPS-serverile rakendamisega

PĂ€rast boti seadistamist tuleb see paigutada serverisse, mis töötab pidevalt 24/7. See on seotud sellega, et kui teie rakendus töötab, töötab ka bot. Kui rakenduse vĂ€lja lĂŒlitate, uinub ka teie bot.

Selliseid VPS-servereid on maailmas palju, nii Windowsi kui ka Linuxi jaoks, kuid enamikul juhtudel on Linuxis palju odavam paigutamine.

Discordi serveris soovitati mulle vscale.io, ja ma lĂ”in seal kohe virtuaalse serveri Ubuntu sĂŒsteemis ning laadisin boti ĂŒles. Ma ei hakka kirjeldama, kuidas see sait töötab, vaid lĂ€hen kohe boti seadistamise juurde.

Esmalt peate installima vajaliku tarkvara, mis kÀivitab meie .NET Core'il kirjutatud boti. Kuidas seda teha, on siin kirjeldatud..

SeejĂ€rel peate oma boti Git-ile ĂŒles laadima – teenusele, nagu GitHub ja sarnased, ning selle VPS-serverisse kloonima vĂ”i muude meetoditega oma boti alla laadima. Pange tĂ€hele, et teil on vaid konsool, GUI-d ei ole. Üldse.

PÀrast seda, kui olete oma boti alla laadinud, peate selle kÀivitama. Selleks peate:

  • Taastama kĂ”ik sĂ”ltuvused: dotnet restore
  • Rakenduse koostama: dotnet build name_project.sln -c Release
  • Minema koostatud DLL-i;
  • dotnet name_of_file.dll

Palju Ônne! Teie bot on kÀivitunud. Kahjuks kasutab bot konsooli, nii et VPS-serverist vÀljuda ei ole nii lihtne. Samuti, kui server taaskÀivitub, peate boti uuesti kÀivitama. Siin on paar lahendust. Need kÔik on seotud kÀivitamisega serveri kÀivitamisel:

  • Lisage skripti kĂ€ivitamine /etc/init.d
  • Looge teenus, mis kĂ€ivitub serveri kĂ€ivitamisel.

Ei nÀe mÔtet nendeleetailselt peatuda, kÔik on internetis piisavalt detailselt kirjeldatud.

JĂ€reldused

Mul on hea meel, et vĂ”tsin selle ĂŒlesande ette. See oli minu esimene kogemus boti arendamisel, ja mul on hea meel, et sain uusi teadmisi C#-st ja Linuxiga töötamisest.

Link Discordi serverisse. Neile, kes mÀngivad Wargamingi mÀnge.
Link hoidlasse, kus asub Discord bot.
DSharpPlus'i hoidla link.
AitÀh tÀhelepanu eest!

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster