Ukwenza i-Discord bot kwi-.NET Core kunye nokusasazwa kwiseva yeVPS

Ukwenza i-Discord bot kwi-.NET Core kunye nokusasazwa kwiseva yeVPS

Molo Khabrovites!

Namhlanje uza kubona inqaku eliza kukubonisa indlela yokwenza i-bot usebenzisa i-C # kwi-.NET Core kunye nendlela yokuyiqhuba kwiseva ekude.

Inqaku liza kubandakanya imvelaphi, isiteji sokulungiselela, ukubhala ingqiqo kunye nokudlulisa i-bot kwi-server ekude.

Ndiyathemba ukuba eli nqaku liya kunceda abaninzi abaqalayo.

ukubuzwa

Yonke yaqala ngobusuku obunye obungalaliyo ekwindla endabuchitha kwiseva yeDiscord. Ekubeni ndandisandul’ ukumthelela, ndaqalisa ukumfunda ndisonyusa. Emva kokuba ndifumene isitishi sombhalo "Izithuba", ndaba nomdla, ndasivula, kwaye ndafumana phakathi kwezibonelelo ezingandiniki mdla, zezi:

"UMcwangcisi (umphuhlisi we-bot)
Izinto ezifunekayo:

  • ulwazi lweelwimi zokucwangcisa;
  • ukukwazi ukuzifundela.

Iminqweno:

  • ukukwazi ukuqonda ikhowudi yabanye abantu;
  • ulwazi lomsebenzi weDISCORD.

Imisebenzi:

  • uphuhliso lwebhot;
  • inkxaso kunye nokugcinwa kwebhot.

Inzuzo yakho:

  • Ithuba lokuxhasa kunye nefuthe kwiprojekthi oyithandayo;
  • Ukufumana amava okusebenza kwiqela;
  • Ithuba lokubonisa nokuphucula izakhono ezikhoyo.


Oku kwandenza ndanomdla ngoko nangoko. Ewe, abazange bahlawule kulo msebenzi, kodwa abazange bafune nayiphi na imbopheleleko kuwe, kwaye akuyi kuba yinto engafanelekanga kwiphothifoliyo. Ngoko ke, ndabhalela umphathi womncedisi, kwaye wandicela ukuba ndibhale i-bot eya kubonisa izibalo zomdlali kwi-World of Tanks.

Isigaba sokulungiselela

Ukwenza i-Discord bot kwi-.NET Core kunye nokusasazwa kwiseva yeVPS
Discrod
Ngaphambi kokuba siqale ukubhala ibhot yethu, kufuneka siyidale iDiscord. Udinga:

  1. Ngena kwiakhawunti yeDiscord ikhonkco
  2. Kwithebhu ethi "Izicelo", cofa kwiqhosha elithi "Isicelo esitsha" kwaye unike igama lebhot
  3. Fumana ithokheni yebhot ngokungena kwi-bot yakho kwaye ufumane i-"Bot" ithebhu kuluhlu "lweseto"
  4. Gcina uphawu kwindawo ethile

IWargaming

Kwakhona, kufuneka wenze isicelo kwiWargaming ukufumana ukufikelela kwi-Wargaming API. Apha, kwakhona, yonke into ilula:

  1. Ngena kwiakhawunti yakho yeWargaming ngeli linki
  2. Siya ku "Izicelo zam" kwaye nqakraza kwiqhosha elithi "Yongeza isicelo esitsha", unike igama lesicelo kwaye ukhethe uhlobo lwaso.
  3. Ukugcina i-ID yesicelo

software

Sele kukho inkululeko yokuzikhethela. Umntu usebenzisa iVisual Studio, umntu uRider, umntu unamandla ngokubanzi, kwaye ubhala ikhowudi kwiVim (emva koko, abadwelisi benkqubo bokwenyani basebenzisa ikhibhodi kuphela, akunjalo?). Nangona kunjalo, ukuze ungayisebenzisi iDiscord API, ungasebenzisa ilayibrari yeC # engekho semthethweni "DSharpPlus". Ungayifaka nokuba yiNuGet, okanye ngokwakha imithombo ngokwakho kwindawo yokugcina.

Kwabo abangaziyo okanye abalibeleyo ukuba bazifaka njani izicelo kwi-NuGet.Imiyalelo ye-Visual Studio

  1. Yiya kwiProjekthi yethebhu-Lawula i-NuGet Packages;
  2. Cofa kuphononongo kwaye kwindawo yokukhangela faka "DSharpPlus";
  3. Khetha kwaye ufake isakhelo;
  4. INZUZO!

Inqanaba lokulungiselela liphelile, ungaqhubeka nokubhala ibhot.

Ingqiqo yokubhala

Ukwenza i-Discord bot kwi-.NET Core kunye nokusasazwa kwiseva yeVPS

Asiyi kuqwalasela yonke ingqiqo yesicelo, ndiya kubonisa kuphela indlela yokusebenza kunye nokubanjwa kwemiyalezo yi-bot, kunye nendlela yokusebenza kunye ne-Wargaming API.

Ukusebenza ngeDiscord bot kwenzeka nge-async engatshintshiyo uMsebenzi ongundoqo (umtya[] args);
Ukufowunela lo msebenzi, kwi-Main kufuneka ubhalise

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

Okulandelayo, kufuneka uqalise ibhot yakho:

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

Uphi umqondiso webhot yakho.
Emva koko, nge-lambda, sibhala imiyalelo efunekayo ukuba i-bot iyenze:

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

Apho i-e.Author.Igama lomsebenzisi lifumana isiqhulo somsebenzisi.

Ngale ndlela, xa uthumela nawuphi na umyalezo oqala nge &, i-bot iya kukubulisa.

Ekupheleni kwalo msebenzi, kufuneka ubhale linda discord.ConnectAsync(); kwaye ulindele uMsebenzi.Ukulibazisa(-1);

Oku kuya kukuvumela ukuba wenze imiyalelo ngasemva ngaphandle kokuthatha umsonto oyintloko.

Ngoku kufuneka sijongane neWargaming API. Yonke into ilula apha - bhala izicelo ze-CURL, fumana impendulo kwifom ye-JSON yomtya, khupha idatha efunekayo ukusuka apho kwaye wenze ukukhwabanisa kubo.

Umzekelo wokusebenza kunye neWargamingAPI

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;
        }

Ingqalelo! Akukhuthazwa ngokungqongqo ukugcina onke amathokheni kunye ne-ID yesicelo kwisicatshulwa esicacileyo! Ubuncinci, i-Discord ivala amathokheni anjalo xa bengena kwinethiwekhi yehlabathi jikelele, kwaye kwinqanaba eliphezulu, i-bot iqala ukusetyenziswa ngabahlaseli.

Hambisa kwiVPS - iseva

Ukwenza i-Discord bot kwi-.NET Core kunye nokusasazwa kwiseva yeVPS

Nje ukuba uyenziwe nge-bot, kufuneka ibanjwe kwiseva ehlala iqhuba i-24/7. Oku kungenxa yokuba xa isicelo sakho sisebenza, i-bot nayo iyasebenza. Nje ukuba ucime usetyenziso, ibhot yakho nayo ilala.

Iiseva ezininzi zeVPS zikhona kweli hlabathi, zombini kwiWindows nakwiLinux, nangona kunjalo, kwiimeko ezininzi, kubiza kakhulu ukubamba kwiLinux.

Kwiseva yeDiscord, ndiye ndacetyiswa vscale.io, kwaye kwangoko ndenza iseva ebonakalayo ku-Ubuntu kuyo kwaye ndalayisha i-bot. Andiyi kuchaza indlela esisebenza ngayo le ndawo, kodwa iya ngqo kwiisetingi ze-bot.

Okokuqala, kufuneka ufake isoftware eyimfuneko eya kuqhuba ibhoti yethu ebhalwe kwi-.NET Core. Indlela yokwenza ichazwe apha.

Okulandelayo, kufuneka ulayishe i-bot kwinkonzo ye-Git, njenge-GitHub kunye nokunye okunjalo, kwaye udibanise kwiseva yeVPS, okanye ukhuphele ibhot yakho ngezinye iindlela. Nceda uqaphele ukuba uya kuba nekhonsoli kuphela, akukho GUI. Kukonke.

Emva kokuba ukhuphele ibhot yakho, kufuneka uyiqhube. Kule nto, kufuneka:

  • Buyisela zonke izinto ezixhomekeke kwi-dotnet
  • Yakha isicelo: dotnet build name_project.sln -c Khupha
  • Yiya kwi-DLL eyakhelweyo;
  • dotnet name_of_file.dll

Sivuyisana nawe! Ibhot yakho iyasebenza. Nangona kunjalo, i-bot, ngelishwa, ihlala ikhonsoli, kwaye akukho lula ukuphuma kwiseva yeVPS. Kwakhona, kwimeko yokuqalisa kwakhona iseva, kuya kufuneka uqale i-bot ngendlela entsha. Kukho iindlela ezimbalwa zokuphuma kwimeko. Zonke zinxulumene nokuqaliswa ekuqaleni kweseva:

  • Yongeza ukubaleka iskripthi ku-/etc/init.d
  • Yenza inkonzo eya kuqhuba ekuqaleni.

Andiyiboni inqaku lokuhlala kuzo ngokweenkcukacha, yonke into ichazwe ngokweenkcukacha ezaneleyo kwi-Intanethi.

ezifunyanisiweyo

Ndiyavuya ukuba ndiye ndawenza lo msebenzi. Eli yayiliva lam lokuqala lophuhliso lwe-bot, kwaye ndiyavuya kuba ndifumene ulwazi olutsha kwi-C #, kunye nokusebenza neLinux.

Ikhonkco kwiseva yeDiscord. Kwabo badlala imidlalo yeWargaming.
Ikhonkco kwindawo yokugcina apho iDiscord bot ikhona.
Ikhonkco kwindawo yokugcina iDSharpPlus.
Бпасиalu

umthombo: www.habr.com

Yongeza izimvo