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
I-Discrod
Ngaphambi kokuthi siqale ukubhala i-bot yethu, sidinga ukuyidalela i-Discord. Udinga:
- Ngena ngemvume ku-akhawunti ye-Discord
isixhumanisi - Kuthebhu "Izinhlelo zokusebenza", chofoza inkinobho "Uhlelo olusha" bese uqamba i-bot
- Thola ithokheni ye-bot ngokungena ku-bot yakho futhi uthole ithebhu ethi "Bot" ohlwini "lwezilungiselelo"
- Londoloza ithokheni kwenye indawo
Izimpi
Futhi, udinga ukudala uhlelo lokusebenza ku-Wargaming ukuze uthole ukufinyelela ku-Wargaming API. Nalapha, konke kulula:
- Ngena ngemvume ku-akhawunti yakho ye-Wargaming
ngalesi sixhumanisi - Siya kokuthi "Izicelo Zami" bese sichofoza inkinobho ethi "Engeza uhlelo olusha", sinikeze igama lohlelo nokukhetha uhlobo lwalo.
- 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
- Iya kuthebhu Project - Phatha amaphakheji we-NuGet;
- Chofoza kusibuyekezo futhi endaweni yokusesha faka "DSharpPlus";
- Khetha futhi ufake uhlaka;
- INZUZO!
Isigaba sokulungiselela sesiphelile, ungaqhubeka nokubhala i-bot.
I-logic yokubhala
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
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.
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.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!
Source: www.habr.com