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
Discrod
Ngaphambi kokuba siqale ukubhala ibhot yethu, kufuneka siyidale iDiscord. Udinga:
- Ngena kwiakhawunti yeDiscord
ikhonkco - Kwithebhu ethi "Izicelo", cofa kwiqhosha elithi "Isicelo esitsha" kwaye unike igama lebhot
- Fumana ithokheni yebhot ngokungena kwi-bot yakho kwaye ufumane i-"Bot" ithebhu kuluhlu "lweseto"
- Gcina uphawu kwindawo ethile
IWargaming
Kwakhona, kufuneka wenze isicelo kwiWargaming ukufumana ukufikelela kwi-Wargaming API. Apha, kwakhona, yonke into ilula:
- Ngena kwiakhawunti yakho yeWargaming
ngeli linki - Siya ku "Izicelo zam" kwaye nqakraza kwiqhosha elithi "Yongeza isicelo esitsha", unike igama lesicelo kwaye ukhethe uhlobo lwaso.
- 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
- Yiya kwiProjekthi yethebhu-Lawula i-NuGet Packages;
- Cofa kuphononongo kwaye kwindawo yokukhangela faka "DSharpPlus";
- Khetha kwaye ufake isakhelo;
- INZUZO!
Inqanaba lokulungiselela liphelile, ungaqhubeka nokubhala ibhot.
Ingqiqo yokubhala
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
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.
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.
Π‘ΠΏΠ°ΡΠΈalu
umthombo: www.habr.com