Nyieun bot Discord on .NET Core kalawan deployment ka server VPS
Hello Khabrovites!
Dinten anjeun bakal nempo hiji artikel nu bakal némbongkeun Anjeun cara nyieun bot maké C# on .NET Core jeung kumaha ngajalankeun eta dina server jauh.
Tulisan bakal diwangun ku latar, tahap persiapan, nyerat logika sareng nransferkeun bot ka server jauh.
Kuring miharep artikel ieu bakal nulungan loba beginners.
prasajarah
Éta sadayana dimimitian dina hiji wengi usum gugur anu teu sare anu kuring nyéépkeun dina server Discord. Kusabab kuring anyar gabung anjeunna, abdi mimiti diajar anjeunna luhur jeung ka handap. Saatos mendakan saluran téks "Lowongan", kuring janten kabetot, dibuka, sareng mendakan nawaran anu henteu dipikaresep ku kuring, nyaéta:
"Programmer (pamekar bot) Syarat:
pangaweruh basa programming;
kamampuhan pikeun diajar mandiri.
Пожелания:
kamampuhan pikeun ngarti kodeu batur;
pangaweruh ngeunaan fungsionalitas DISCORD.
Tugas:
ngembangkeun bot;
rojongan tur pangropéa tina bot.
kauntungan anjeun:
Kasempetan pikeun ngadukung sareng mangaruhan proyék anu anjeun pikahoyong;
Mangtaun pangalaman gawé dina tim;
Kasempetan pikeun nunjukkeun sareng ningkatkeun kaahlian anu aya.
Ieu langsung museurkeun kuring. Sumuhun, aranjeunna henteu mayar karya ieu, tapi maranéhna teu nungtut sagala kawajiban ti anjeun, sarta eta moal jadi superfluous di portopolio nu. Ku alatan éta, kuring nulis ka admin server, sarta anjeunna nanya kuring nulis bot anu bakal nembongkeun statistik pamuter di Dunya tina bak.
Fase preparatory
Discrod
Sateuacan urang ngamimitian nyerat bot urang, urang kedah nyiptakeunana pikeun Discord. Anjeun peryogi:
Kami angkat ka "Aplikasi Abdi" teras klik tombol "Tambahkeun aplikasi énggal", masihan nami aplikasi sareng pilih jinisna
Nyimpen ID Aplikasi
software
Geus aya kabébasan milih. Aya anu ngagunakeun Visual Studio, batur Rider, batur umumna kuat, sareng nyerat kode dina Vim (sanggeus sadayana, programer nyata ngan ukur nganggo keyboard, henteu?). Nanging, supados henteu ngalaksanakeun API Discord, anjeun tiasa nganggo perpustakaan C # anu henteu resmi "DSharpPlus". Anjeun tiasa masang éta tina NuGet, atanapi ku ngawangun sumberna nyalira tina gudang.
Pikeun anu henteu terang atanapi hilap kumaha cara masang aplikasi tina NuGet.Parentah pikeun Visual Studio
Pindah ka tab Project - Atur Paket NuGet;
Pencét kana ulasan sareng dina widang teang lebetkeun "DSharpPlus";
Pilih sareng pasang kerangka;
Kauntungan!
Tahap persiapan parantos réngsé, anjeun tiasa neruskeun nyerat bot.
Logika tulisan
Urang moal nganggap sakabéh logika aplikasi, Kuring ngan bakal nembongkeun kumaha carana digawekeun ku interception pesen ku bot, sarta kumaha carana digawekeun ku Wargaming API.
Gawe sareng bot Discord lumangsung ngaliwatan statik async Tugas MainTask (string [] args);
Pikeun nelepon fungsi ieu, dina Main anjeun kudu ngadaptar
Dimana token mangrupikeun token bot anjeun.
Teras, ngalangkungan lambda, urang nyerat paréntah anu diperyogikeun yén bot kedah dieksekusi:
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(“Hello, ” + e.Author.Username);
}
};
Dimana e.Author.Username meunang nickname pamaké.
Ku cara ieu, nalika anjeun ngirim pesen anu dimimitian ku &, bot bakal ngabagéakeun anjeun.
Dina ahir fungsi ieu, anjeun kudu nulis await discord.ConnectAsync (); sareng ngantosan Tugas.Tunda (-1);
Ieu bakal ngidinan Anjeun pikeun ngaéksekusi paréntah di tukang tanpa nyokot up thread utama.
Ayeuna urang kudu nungkulan API Wargaming. Sadayana saderhana di dieu - nyerat pamundut CURL, kéngingkeun réspon dina bentuk senar JSON, tarik kaluar data anu diperyogikeun ti dinya sareng ngalaksanakeun manipulasi.
Conto gawé bareng 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;
}
Perhatosan! Henteu disarankeun pikeun nyimpen sadaya token sareng ID aplikasi dina téks anu jelas! Sahenteuna, Discord ngalarang token sapertos nalika aranjeunna asup kana jaringan sadunya, sareng maksimal, bot mimiti dianggo ku panyerang.
Nyebarkeun ka VPS - server
Sakali anjeun tos rengse kalayan bot, éta perlu jadi hosted dina server anu terus ngajalankeun 24/7. Ieu alatan kanyataan yén nalika aplikasi anjeun ngajalankeun, bot ogé jalan. Pas anjeun mareuman aplikasi, bot anjeun saré ogé.
Seueur server VPS aya di dunya ieu, boh dina Windows sareng dina Linux, tapi dina kalolobaan kasus, éta langkung mirah janten host dina Linux.
Dina server Discord, kuring disarankan vscale.io, sarta kuring geuwat dijieun server maya on Ubuntu dina eta sarta unggah bot. Kuring moal ngajelaskeun kumaha situs ieu jalan, tapi bakal langsung ka setélan bot.
Salajengna, anjeun kedah unggah bot kana jasa Git, sapertos GitHub sareng anu sanésna, sareng clone kana server VPS, atanapi unduh bot anjeun ku cara anu sanés. Punten dicatet yén anjeun ngan ukur gaduh konsol, henteu aya GUI. Sakabehna.
Saatos Anjeun undeur bot anjeun, anjeun kudu ngajalankeun eta. Pikeun ieu, anjeun peryogi:
Mulangkeun sadayana kagumantungan: dotnet restore
Ngawangun aplikasi: dotnet ngawangun name_project.sln -c Release
Pindah ka diwangun DLL;
dotnet name_of_file.dll
Wilujeng! Bot anjeun jalan. Tapi, bot, hanjakalna, nempatan konsol, sareng éta henteu gampang pikeun kaluar tina server VPS. Ogé, dina kasus balikan deui server, anjeun kedah ngamimitian bot ku cara anu énggal. Aya sababaraha cara kaluar tina kaayaan. Sadayana aya hubunganana sareng peluncuran dina ngamimitian server:
Tambahkeun skrip ngajalankeun kana /etc/init.d
Jieun layanan anu bakal dijalankeun dina ngamimitian.
Kuring teu ningali titik dina dwelling on aranjeunna di jéntré, sagalana dijelaskeun dina cukup jéntré dina Internet.
papanggihan
Abdi bungah abdi nyandak tugas ieu. Ieu mangrupikeun pangalaman pangembangan bot munggaran kuring, sareng kuring bungah yén kuring ngagaduhan pangaweruh anyar dina C #, sareng damel sareng Linux.