پرو هوسٽر > بلاگ > انتظاميه > .NET ڪور تي هڪ Discord بوٽ ٺاهي رهيو آهي هڪ VPS سرور تي ترتيب ڏيڻ سان
.NET ڪور تي هڪ Discord بوٽ ٺاهي رهيو آهي هڪ VPS سرور تي ترتيب ڏيڻ سان
سلام خابروتون!
اڄ توهان هڪ آرٽيڪل ڏسندا جيڪو توهان کي ڏيکاريندو ته ڪيئن ٺاهيو هڪ بوٽ ٺاهيو C# تي .NET ڪور ۽ ڪيئن ان کي ريموٽ سرور تي هلائڻ.
آرٽيڪل هڪ پس منظر تي مشتمل هوندو، هڪ تياري وارو مرحلو، لکڻ جي منطق ۽ بٽ کي ريموٽ سرور ڏانهن منتقل ڪرڻ.
مون کي اميد آهي ته هي مضمون ڪيترن ئي نئين سکندڙن جي مدد ڪندو.
prehistory
اهو سڀ هڪ بي نياز سرءُ واري رات تي شروع ٿيو جيڪو مون ڊسڪورڊ سرور تي گذاريو. جڏهن کان مان تازو هن سان شامل ٿيو آهيان، مون هن کي مٿي ۽ هيٺ پڙهڻ شروع ڪيو. ٽيڪسٽ چينل "خاليات" ڳولڻ کان پوء، مون کي دلچسپي ورتي، ان کي کوليو، ۽ انهن آڇن مان مليو جيڪي مون کي دلچسپي نه ڏني، اهي آهن:
پروگرامر (بوٽ ڊولپر) گهربل
پروگرامنگ ٻولين جي ڄاڻ؛
خود سکڻ جي صلاحيت.
خواهش:
ٻين ماڻهن جي ڪوڊ کي سمجهڻ جي صلاحيت؛
DISCORD ڪارڪردگي جي ڄاڻ.
شڪل:
بوٽن جي ترقي؛
بوٽ جي حمايت ۽ سار سنڀال.
توهان جو فائدو:
توهان جي پسند جي منصوبي جي حمايت ۽ اثر انداز ڪرڻ جو موقعو؛
ٽيم ۾ ڪم ڪرڻ جو تجربو حاصل ڪرڻ؛
موجوده صلاحيتن کي ڏيکارڻ ۽ بهتر ڪرڻ جو موقعو.
هن فوري طور تي مون کي دلچسپي ورتي. ها، انهن هن ڪم لاءِ ادا نه ڪيو، پر انهن توهان کان ڪنهن به ذميواري جو مطالبو نه ڪيو، ۽ اهو پورٽ فوليو ۾ ضرورت کان وڌيڪ نه هوندو. تنهن ڪري، مون سرور جي منتظم کي لکيو، ۽ هن مون کي هڪ باٽ لکڻ لاءِ چيو جيڪو رانديگرن جا انگ اکر ڏيکاريندو ورلڊ آف ٽينڪس ۾.
تياري واري اسٽيج
ڊسڪروڊ
ان کان اڳ جو اسان پنهنجو بوٽ لکڻ شروع ڪريون، اسان کي ان کي ڊسڪورڊ لاءِ ٺاهڻ جي ضرورت آهي. توهان کي ضرورت آهي:
"ايپليڪيشن" ٽئب ۾، "نئين ايپليڪيشن" بٽڻ تي ڪلڪ ڪريو ۽ بوٽ جو نالو ڏيو
پنهنجي بوٽ ۾ لاگ ان ڪندي ۽ "سيٽنگون" لسٽ ۾ "بوٽ" ٽيب ڳولڻ سان هڪ بوٽ ٽوڪن حاصل ڪريو
ٽوڪن کي ڪٿي محفوظ ڪريو
وارجنگ
انهي سان گڏ، توهان کي هڪ ايپليڪيشن ٺاهڻ جي ضرورت آهي Wargaming ۾ Wargaming API تائين رسائي حاصل ڪرڻ لاء. هتي، پڻ، هر شيء سادو آهي:
پنهنجي Wargaming اڪائونٽ ۾ لاگ ان ڪريو هن لنڪ ذريعي
اسان وڃون ٿا "منهنجا ايپليڪيشنون" ۽ "نئين ايپليڪيشن شامل ڪريو" بٽڻ تي ڪلڪ ڪريو، ايپليڪيشن جو نالو ڏيو ۽ ان جو قسم چونڊيو
ايپليڪيشن ID محفوظ ڪرڻ
سافٽ ويئر
اتي اڳ ۾ ئي چونڊ جي آزادي آهي. ڪو بصري اسٽوڊيو استعمال ڪري ٿو، ڪو رائڊر، ڪو ماڻهو عام طور تي طاقتور آهي، ۽ ويم ۾ ڪوڊ لکي ٿو (آخرڪار، حقيقي پروگرامر صرف ڪيبورڊ استعمال ڪندا آهن، صحيح؟). بهرحال، Discord API کي لاڳو نه ڪرڻ لاءِ، توهان استعمال ڪري سگهو ٿا غير رسمي C# لائبريري “DSharpPlus”. اهو يا ته نصب ٿي سگهي ٿو NuGet مان، يا ذريعن کي تعمير ڪندي پاڻ کي مخزن مان.
جتي ٽوڪن توهان جي بوٽ جو ٽوڪن آهي.
پوء، lambda ذريعي، اسان ضروري حڪم لکون ٿا ته بوٽ کي عمل ڪرڻ گهرجي:
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(“Hello, ” + e.Author.Username);
}
};
جتي e.Author.Username استعمال ڪندڙ جو nickname حاصل ڪري رهيو آهي.
هن طريقي سان، جڏهن توهان ڪنهن به پيغام موڪليو ٿا جيڪو شروع ٿئي ٿو & سان، بوٽ توهان کي سلام ڪندو.
هن فنڪشن جي آخر ۾، توهان کي لکڻ گهرجي await discord.ConnectAsync(); ۽ انتظار ڪريو Task.Delay(-1)؛
هي توهان کي اجازت ڏيندو ته توهان کي پس منظر ۾ حڪم جاري ڪرڻ کان سواءِ مکيه موضوع کڻڻ جي.
هاڻي اسان کي ڊيل ڪرڻ جي ضرورت آهي Wargaming API. هتي سڀ ڪجھ سادو آهي - CURL درخواستون لکو، JSON اسٽرنگ جي صورت ۾ جواب حاصل ڪريو، اتان کان ضروري ڊيٽا ڪڍو ۽ انھن تي عمل ڪريو.
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;
}
ڌيان! اها سختي سان سفارش نه ڪئي وئي آهي ته سڀئي ٽوڪن ۽ ايپليڪيشن آئي ڊيز کي صاف متن ۾ محفوظ ڪريو! گھٽ ۾ گھٽ، Discord اهڙن ٽوڪن تي پابندي لڳائي ٿو جڏهن اهي سڄي دنيا جي نيٽ ورڪ ۾ داخل ٿين ٿا، ۽ وڌ ۾ وڌ، بوٽ حملي ڪندڙن پاران استعمال ٿيڻ شروع ٿئي ٿو.
VPS تي ترتيب ڏيو - سرور
هڪ دفعو توهان بوٽ سان ڪيو آهي، اهو هڪ سرور تي ميزباني ڪرڻ جي ضرورت آهي جيڪو مسلسل 24/7 هلائي رهيو آهي. اهو هن حقيقت جي ڪري آهي ته جڏهن توهان جي ايپليڪيشن هلائي رهي آهي، بوٽ پڻ هلائي رهيو آهي. جيترو جلدي توهان ايپليڪيشن کي بند ڪيو، توهان جو بوٽ پڻ سمهي ٿو.
هن دنيا ۾ ڪيترائي VPS سرور موجود آهن، ٻئي ونڊوز ۽ لينڪس تي، جڏهن ته، اڪثر ڪيسن ۾، لينڪس تي ميزباني ڪرڻ تمام سستو آهي.
Discord سرور تي، مون کي صلاح ڏني وئي vscale.io، ۽ مون فوري طور تي ان تي Ubuntu تي هڪ ورچوئل سرور ٺاهيو ۽ بوٽ اپ لوڊ ڪيو. مان بيان نه ڪندس ته هي سائيٽ ڪيئن ڪم ڪري ٿي، پر سڌو سنئون بوٽ سيٽنگون ڏانهن ويندا.
سڀ کان پهريان، توهان کي ضروري سافٽ ويئر انسٽال ڪرڻ جي ضرورت آهي جيڪا اسان جي بوٽ کي هلائي ويندي جيڪا .NET ڪور ۾ لکيل آهي. اهو ڪيئن ڪجي هتي بيان ڪيو ويو آهي.
اڳيون، توهان کي بوٽ اپ لوڊ ڪرڻ جي ضرورت آهي گيٽ سروس تي، جهڙوڪ GitHub ۽ جهڙوڪ، ۽ ان کي ڪلون ڪريو VPS سرور تي، يا ٻين طريقن سان پنهنجو بوٽ ڊائون لوڊ ڪريو. مهرباني ڪري نوٽ ڪريو ته توهان وٽ صرف هڪ ڪنسول هوندو، نه GUI. بلڪل.
توهان جي بوٽ کي ڊائون لوڊ ڪرڻ کان پوء، توهان کي ان کي هلائڻ جي ضرورت آهي. هن لاء، توهان کي ضرورت آهي:
مبارڪون! توهان جو بوٽ هلي رهيو آهي. بهرحال، بوٽ، بدقسمتي سان، ڪنسول تي قبضو ڪري ٿو، ۽ VPS سرور کان ٻاهر نڪرڻ آسان ناهي. انهي سان گڏ، سرور جي ٻيهر شروع ٿيڻ جي صورت ۾، توهان کي بوٽ کي نئين طريقي سان شروع ڪرڻو پوندو. صورتحال مان نڪرڻ جا ٻه طريقا آهن. انهن سڀني جو تعلق سرور جي شروعات تي لانچ سان آهي:
رن اسڪرپٽ کي شامل ڪريو /etc/init.d
ھڪڙي خدمت ٺاھيو جيڪا شروع ٿيندي.
مون کي ان تي تفصيل سان رهڻ جو نقطو نظر نٿو اچي، انٽرنيٽ تي هر شيءِ ڪافي تفصيل سان بيان ڪئي وئي آهي.
پهچڻ
مون کي خوشي آهي ته مون هن ڪم تي ورتو. هي منهنجو پهريون بوٽ ڊولپمينٽ تجربو هو، ۽ مون کي خوشي آهي ته مون کي C # ۾ نئين ڄاڻ حاصل ڪئي، ۽ لينڪس سان ڪم ڪرڻ.