Ukudala i-Discord bot ku-.NET Core ngokuthunyelwa kuseva ye-VPS

Ukudala i-Discord bot ku-.NET Core ngokuthunyelwa kuseva ye-VPS

Sawubona Khabrovites!

Namuhla uzobona isihloko esizokubonisa ukuthi ungayenza kanjani i-bot usebenzisa i-C# ku-.NET Core nokuthi ungayiqhuba kanjani kuseva ekude.

I-athikili izoqukatha ingemuva, isigaba sokulungiselela, ukubhala okunengqondo kanye nokudlulisela i-bot kuseva ekude.

Ngithemba ukuthi lesi sihloko sizosiza abaqalayo abaningi.

prehistory

Konke kwaqala ngobusuku obubodwa basekwindla obungalali engabuchitha kuseva ye-Discord. Njengoba ngisanda kumjoyina, ngaqala ukumfundela ngehla ngenyuka. Ngemva kokuthola isiteshi sombhalo esithi "Izikhala", ngaba nesithakazelo, ngayivula, futhi ngathola phakathi kokunikezwayo okungazange kungithakazelise, lezi yizi:

"Umhleli (unjiniyela we-bot)
Izidingo:

  • ulwazi lwezilimi zokuhlela;
  • ikhono lokuzifundela.

Izifiso:

  • ikhono lokuqonda ikhodi yabanye abantu;
  • ulwazi lomsebenzi we-DISCORD.

Imisebenzi:

  • ukuthuthukiswa kwe-bot;
  • ukwesekwa nokugcinwa kwe-bot.

Inzuzo yakho:

  • Ithuba lokusekela kanye nomthelela kuphrojekthi oyithandayo;
  • Ukuthola ulwazi lokusebenza eqenjini;
  • Ithuba lokubonisa kanye nokwenza ngcono amakhono akhona.


Lokhu kwangithakazelisa ngokushesha. Yebo, abazange bakhokhele lo msebenzi, kodwa abazange bafune noma yiziphi izibopho kuwe, futhi ngeke kube okungaphezu kwamandla ephothifoliyo. Ngakho-ke, ngabhalela umphathi weseva, futhi wangicela ukuba ngibhale i-bot ezobonisa izibalo zomdlali ku-World of Tanks.

Isigaba sokulungiselela

Ukudala i-Discord bot ku-.NET Core ngokuthunyelwa kuseva ye-VPS
I-Discrod
Ngaphambi kokuthi siqale ukubhala i-bot yethu, sidinga ukuyidalela i-Discord. Udinga:

  1. Ngena ngemvume ku-akhawunti ye-Discord isixhumanisi
  2. Kuthebhu "Izinhlelo zokusebenza", chofoza inkinobho "Uhlelo olusha" bese uqamba i-bot
  3. Thola ithokheni ye-bot ngokungena ku-bot yakho futhi uthole ithebhu ethi "Bot" ohlwini "lwezilungiselelo"
  4. Londoloza ithokheni kwenye indawo

Izimpi

Futhi, udinga ukudala uhlelo lokusebenza ku-Wargaming ukuze uthole ukufinyelela ku-Wargaming API. Nalapha, konke kulula:

  1. Ngena ngemvume ku-akhawunti yakho ye-Wargaming ngalesi sixhumanisi
  2. Siya kokuthi "Izicelo Zami" bese sichofoza inkinobho ethi "Engeza uhlelo olusha", sinikeze igama lohlelo nokukhetha uhlobo lwalo.
  3. Igcina i-ID yohlelo lokusebenza

Software

Sekukhona inkululeko yokuzikhethela. Othile usebenzisa i-Visual Studio, othile Rider, othile ngokuvamile unamandla, futhi ubhala ikhodi ku-Vim (phela, abahleli bangempela basebenzisa ikhibhodi kuphela, akunjalo?). Nokho, ukuze ungasebenzisi i-Discord API, ungasebenzisa ilabhulali ye-C# engekho emthethweni ethi β€œDSharpPlus”. Ungayifaka kusuka ku-NuGet, noma ngokwakha imithombo ngokwakho kusuka endaweni yokugcina.

Kulabo abangazi noma abakhohlwe ukuthi zifakwa kanjani izinhlelo zokusebenza ezivela kwa-NuGet.Imiyalo ye-Visual Studio

  1. Iya kuthebhu Project - Phatha amaphakheji we-NuGet;
  2. Chofoza kusibuyekezo futhi endaweni yokusesha faka "DSharpPlus";
  3. Khetha futhi ufake uhlaka;
  4. INZUZO!

Isigaba sokulungiselela sesiphelile, ungaqhubeka nokubhala i-bot.

I-logic yokubhala

Ukudala i-Discord bot ku-.NET Core ngokuthunyelwa kuseva ye-VPS

Ngeke sicabangele yonke i-logic yohlelo lokusebenza, ngizobonisa kuphela indlela yokusebenza ngokunqanyulwa kwemilayezo yi-bot, kanye nendlela yokusebenza ne-Wargaming API.

Ukusebenza nge-Discord bot kwenzeka nge-async Task MainTask(string[] args);
Ukuze ushayele lo msebenzi, ku-Main udinga ukubhalisa

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

Okulandelayo, udinga ukuqalisa i-bot yakho:

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

Likuphi uphawu lwe-bot yakho.
Bese, nge-lambda, sibhala imiyalo edingekayo okufanele i-bot iyenze:

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

Lapho i-e.Author.Igama lomsebenzisi lithola khona isiteketiso somsebenzisi.

Ngale ndlela, uma uthumela noma yimuphi umlayezo oqala ngokuthi &, i-bot izokubingelela.

Ekupheleni kwalo msebenzi, kufanele ubhale okuthi wait discord.ConnectAsync(); futhi ulinde Umsebenzi.Ukubambezeleka(-1);

Lokhu kuzokuvumela ukuthi wenze imiyalo ngemuva ngaphandle kokuthatha intambo eyinhloko.

Manje sidinga ukubhekana ne-Wargaming API. Yonke into ilula lapha - bhala izicelo ze-CURL, thola impendulo ngohlobo lweyunithi yezinhlamvu ye-JSON, khipha idatha edingekayo lapho futhi wenze ukukhohlisa kuzo.

Isibonelo sokusebenza ne-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;
        }

Qaphela! Akunconywa neze ukugcina wonke amathokheni nama-ID ohlelo lokusebenza embhalweni ocacile! Okungenani, i-Discord ivimbela amathokheni anjalo lapho bengena kunethiwekhi yomhlaba wonke, futhi ngokwesilinganiso esiphezulu, i-bot iqala ukusetshenziswa ngabahlaseli.

Hambisa ku-VPS - iseva

Ukudala i-Discord bot ku-.NET Core ngokuthunyelwa kuseva ye-VPS

Uma usuqedile nge-bot, idinga ukusingathwa kuseva ehlala isebenza 24/7. Lokhu kungenxa yokuthi uma uhlelo lwakho lokusebenza lusebenza, i-bot nayo iyasebenza. Lapho nje uvala uhlelo, i-bot yakho nayo ilala.

Amaseva amaningi e-VPS akhona kulo mhlaba, ku-Windows naku-Linux, nokho, ezimweni eziningi, kushibhe kakhulu ukusingatha ku-Linux.

Kuseva ye-Discord, ngelulekwa nge-vscale.io, futhi ngakha ngokushesha iseva ebonakalayo ku-Ubuntu kuyo futhi ngalayisha i-bot. Ngeke ngichaze ukuthi lesi sayithi sisebenza kanjani, kodwa ngizoqonda ngqo kuzilungiselelo ze-bot.

Okokuqala, udinga ukufaka isofthiwe edingekayo ezosebenzisa i-bot yethu ebhalwe ku-.NET Core. Indlela yokwenza kuchazwe lapha.

Okulandelayo, udinga ukulayisha i-bot kusevisi ye-Git, njenge-GitHub nokunye, futhi uyihlanganise kuseva ye-VPS, noma ulande i-bot yakho ngezinye izindlela. Sicela uqaphele ukuthi uzoba nekhonsoli kuphela, ayikho i-GUI. Kube bonke.

Ngemva kokulanda i-bot yakho, udinga ukuyiqhuba. Ukuze wenze lokhu, udinga:

  • Buyisela konke okuncikile: buyisela i-dotnet
  • Yakha uhlelo lokusebenza: dotnet build name_project.sln -c Khipha
  • Iya ku-DLL eyakhelweyo;
  • dotnet name_of_file.dll

Siyakuhalalisela! I-bot yakho iyasebenza. Kodwa-ke, i-bot, ngeshwa, ithatha ikhonsoli, futhi akulula ukuphuma kuseva ye-VPS. Futhi, uma iseva iqalwa kabusha, kuzodingeka ukuthi uqale i-bot ngendlela entsha. Kunezindlela ezimbalwa zokuphuma kulesi simo. Zonke zihlobene nokwethulwa ekuqaleni kweseva:

  • Engeza run script kokuthi /etc/init.d
  • Dala isevisi ezoqalisa ekuqaleni.

Angiboni iphuzu lokuhlala kuzo ngokuningiliziwe, yonke into ichazwa ngemininingwane eyanele kwi-Intanethi.

okutholakele

Ngiyajabula ukuthi ngiwuthathe lo msebenzi. Lesi bekuyisipiliyoni sami sokuqala sokuthuthukiswa kwe-bot, futhi ngiyajabula ukuthi ngithole ulwazi olusha ku-C #, nokusebenza ne-Linux.

Xhuma kuseva ye-Discord. Kulabo abadlala imidlalo ye-Wargaming.
Xhuma endaweni yokugcina lapho i-Discord bot ikhona.
Xhuma endaweni yokugcina ye-DSharpPlus.
Бпасибо за вниманиС!

Source: www.habr.com

Engeza amazwana