ProHoster > Blog > Ma'muriyat > .NET Core-da VPS serveriga o'rnatish bilan Discord botini yaratish
.NET Core-da VPS serveriga o'rnatish bilan Discord botini yaratish
Salom Xabrovitlar!
Bugun siz .NET Core da C# yordamida qanday qilib bot yaratish va uni masofaviy serverda qanday ishga tushirishni ko'rsatadigan maqolani ko'rasiz.
Maqola fon, tayyorgarlik bosqichi, mantiqni yozish va botni uzoq serverga o'tkazishdan iborat bo'ladi.
Umid qilamanki, ushbu maqola ko'plab yangi boshlanuvchilarga yordam beradi.
Sana oldin
Hammasi men Discord serverida o'tkazgan uyqusiz kuz kechasida boshlandi. Men unga yaqinda qo'shilganimdan beri uni yuqoriga va pastga o'rgana boshladim. "Vakansiyalar" matnli kanalini topib, men qiziqib qoldim, uni ochdim va meni qiziqtirmagan takliflar orasidan topdim, bular:
"Dasturchi (bot ishlab chiqaruvchi) Talablar:
dasturlash tillarini bilish;
o'z-o'zini o'rganish qobiliyati.
Tilaklar:
boshqa odamlarning kodini tushunish qobiliyati;
DISCORD funksiyasini bilish.
vazifalari:
bot ishlab chiqish;
botni qo'llab-quvvatlash va texnik xizmat ko'rsatish.
Sizning foydangiz:
O'zingizga yoqqan loyihani qo'llab-quvvatlash va ta'sir qilish imkoniyati;
Jamoada ishlash tajribasini orttirish;
Mavjud ko'nikmalarni namoyish qilish va yaxshilash imkoniyati.
Bu meni darhol qiziqtirdi. Ha, ular bu ish uchun pul to'lamadilar, lekin ular sizdan hech qanday majburiyat talab qilmadilar va bu portfelda ortiqcha bo'lmaydi. Shuning uchun, men server administratoriga yozdim va u mendan World of Tanksda o'yinchi statistikasini ko'rsatadigan bot yozishimni so'radi.
Tayyorgarlik bosqichi
Diskrod
Botimizni yozishni boshlashdan oldin uni Discord uchun yaratishimiz kerak. Senga kerak:
Biz "Mening ilovalarim" bo'limiga o'tamiz va "Yangi ilova qo'shish" tugmasini bosing, ilova nomini berib, uning turini tanlang.
Ilova identifikatori saqlanmoqda
Dastur
Tanlov erkinligi allaqachon mavjud. Kimdir Visual Studio-dan, kimdir Rider-dan, kimdir odatda kuchli va Vim-da kod yozadi (axir, haqiqiy dasturchilar faqat klaviaturadan foydalanadilar, to'g'rimi?). Biroq, Discord API-ni qo'llamaslik uchun siz C# norasmiy "DSharpPlus" kutubxonasidan foydalanishingiz mumkin. U NuGet-dan yoki manbalarni o'zingiz ombordan qurish orqali o'rnatilishi mumkin.
NuGet'dan ilovalarni qanday o'rnatishni bilmagan yoki unutganlar uchun.Visual Studio uchun ko'rsatmalar
Loyiha yorlig'iga o'ting - NuGet paketlarini boshqarish;
Ko'rib chiqishni bosing va qidiruv maydoniga "DSharpPlus" ni kiriting;
Ramkani tanlash va o'rnatish;
FOYDA!
Tayyorgarlik bosqichi tugadi, siz bot yozishni davom ettirishingiz mumkin.
Mantiqni yozish
Biz ilovaning butun mantig'ini ko'rib chiqmaymiz, men faqat bot tomonidan xabarlarni ushlash bilan qanday ishlashni va Wargaming API bilan qanday ishlashni ko'rsataman.
Discord boti bilan ishlash statik asinx Task MainTask(string[] args) orqali amalga oshiriladi;
Ushbu funktsiyani chaqirish uchun siz Main-da ro'yxatdan o'tishingiz kerak
Token qayerda sizning botingiz tokenidir.
Keyin, lambda orqali biz bot bajarishi kerak bo'lgan kerakli buyruqlarni yozamiz:
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(βHello, β + e.Author.Username);
}
};
Qayerda e.Author.Username foydalanuvchi taxallusini oladi.
Shunday qilib, & bilan boshlangan har qanday xabarni yuborganingizda, bot sizni salomlashadi.
Ushbu funktsiyaning oxirida await discord.ConnectAsync(); va Task.Delay (-1) ni kuting;
Bu sizga asosiy mavzuni olmasdan buyruqlarni fonda bajarish imkonini beradi.
Endi biz Wargaming API bilan shug'ullanishimiz kerak. Bu erda hamma narsa oddiy - CURL so'rovlarini yozing, JSON qatori shaklida javob oling, u yerdan kerakli ma'lumotlarni chiqarib oling va ular bilan manipulyatsiya qiling.
WargamingAPI bilan ishlashga misol
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;
}
Diqqat! Barcha tokenlar va dastur identifikatorlarini aniq matnda saqlash qat'iyan tavsiya etilmaydi! Eng kamida, Discord bunday tokenlarni butun dunyo bo'ylab tarmoqqa kirishda taqiqlaydi va maksimal bo'lsa, bot tajovuzkorlar tomonidan foydalanila boshlaydi.
VPS - serverga o'rnatish
Bot bilan ishlashni tugatganingizdan so'ng, u doimiy ravishda 24/7 ishlaydigan serverda joylashtirilishi kerak. Buning sababi, ilovangiz ishga tushganda, bot ham ishlaydi. Ilovani o'chirishingiz bilan botingiz ham uxlab qoladi.
Ko'pgina VPS serverlari bu dunyoda ham Windows, ham Linuxda mavjud, ammo ko'p hollarda Linuxda joylashtirish ancha arzon.
Discord serverida menga vscale.io ni maslahat berishdi va men darhol Ubuntuda virtual server yaratdim va botni yukladim. Men bu sayt qanday ishlashini tasvirlamayman, lekin to'g'ridan-to'g'ri bot sozlamalariga o'taman.
Keyinchalik, botni GitHub va shunga o'xshash xizmatlarga yuklashingiz va uni VPS serveriga klonlashingiz yoki botingizni boshqa yo'llar bilan yuklab olishingiz kerak. E'tibor bering, sizda faqat konsol bo'ladi, GUI yo'q. Umuman.
Botingizni yuklab olganingizdan so'ng, uni ishga tushirishingiz kerak. Buning uchun sizga kerak:
Tabriklaymiz! Sizning botingiz ishlayapti. Biroq, bot, afsuski, konsolni egallaydi va VPS serveridan chiqish oson emas. Bundan tashqari, server qayta ishga tushirilganda, siz botni yangi usulda ishga tushirishingiz kerak bo'ladi. Vaziyatdan chiqishning bir necha yo'li bor. Ularning barchasi serverni ishga tushirishda ishga tushirish bilan bog'liq:
Ishlash skriptini /etc/init.d ga qo'shing
Ishga tushganda ishlaydigan xizmat yarating.
Men ular haqida batafsil to'xtalib o'tishning ma'nosini ko'rmayapman, hamma narsa Internetda etarlicha batafsil tavsiflangan.
topilmalar
Men bu topshiriqni olganimdan xursandman. Bu mening botlarni yaratishda birinchi tajribam edi va men C# tilida yangi bilimlarga ega bo'lganimdan va Linux bilan ishlaganimdan xursandman.