.NET ڪور تي هڪ Discord بوٽ ٺاهي رهيو آهي هڪ VPS سرور تي ترتيب ڏيڻ سان

.NET ڪور تي هڪ Discord بوٽ ٺاهي رهيو آهي هڪ VPS سرور تي ترتيب ڏيڻ سان

سلام خابروتون!

اڄ توهان هڪ آرٽيڪل ڏسندا جيڪو توهان کي ڏيکاريندو ته ڪيئن ٺاهيو هڪ بوٽ ٺاهيو C# تي .NET ڪور ۽ ڪيئن ان کي ريموٽ سرور تي هلائڻ.

آرٽيڪل هڪ پس منظر تي مشتمل هوندو، هڪ تياري وارو مرحلو، لکڻ جي منطق ۽ بٽ کي ريموٽ سرور ڏانهن منتقل ڪرڻ.

مون کي اميد آهي ته هي مضمون ڪيترن ئي نئين سکندڙن جي مدد ڪندو.

prehistory

اهو سڀ هڪ بي نياز سرءُ واري رات تي شروع ٿيو جيڪو مون ڊسڪورڊ سرور تي گذاريو. جڏهن کان مان تازو هن سان شامل ٿيو آهيان، مون هن کي مٿي ۽ هيٺ پڙهڻ شروع ڪيو. ٽيڪسٽ چينل "خاليات" ڳولڻ کان پوء، مون کي دلچسپي ورتي، ان کي کوليو، ۽ انهن آڇن مان مليو جيڪي مون کي دلچسپي نه ڏني، اهي آهن:

پروگرامر (بوٽ ڊولپر)
گهربل

  • پروگرامنگ ٻولين جي ڄاڻ؛
  • خود سکڻ جي صلاحيت.

خواهش:

  • ٻين ماڻهن جي ڪوڊ کي سمجهڻ جي صلاحيت؛
  • DISCORD ڪارڪردگي جي ڄاڻ.

شڪل:

  • بوٽن جي ترقي؛
  • بوٽ جي حمايت ۽ سار سنڀال.

توهان جو فائدو:

  • توهان جي پسند جي منصوبي جي حمايت ۽ اثر انداز ڪرڻ جو موقعو؛
  • ٽيم ۾ ڪم ڪرڻ جو تجربو حاصل ڪرڻ؛
  • موجوده صلاحيتن کي ڏيکارڻ ۽ بهتر ڪرڻ جو موقعو.


هن فوري طور تي مون کي دلچسپي ورتي. ها، انهن هن ڪم لاءِ ادا نه ڪيو، پر انهن توهان کان ڪنهن به ذميواري جو مطالبو نه ڪيو، ۽ اهو پورٽ فوليو ۾ ضرورت کان وڌيڪ نه هوندو. تنهن ڪري، مون سرور جي منتظم کي لکيو، ۽ هن مون کي هڪ باٽ لکڻ لاءِ چيو جيڪو رانديگرن جا انگ اکر ڏيکاريندو ورلڊ آف ٽينڪس ۾.

تياري واري اسٽيج

.NET ڪور تي هڪ Discord بوٽ ٺاهي رهيو آهي هڪ VPS سرور تي ترتيب ڏيڻ سان
ڊسڪروڊ
ان کان اڳ جو اسان پنهنجو بوٽ لکڻ شروع ڪريون، اسان کي ان کي ڊسڪورڊ لاءِ ٺاهڻ جي ضرورت آهي. توهان کي ضرورت آهي:

  1. Discord اڪائونٽ ۾ لاگ ان ڪريو لنڪ
  2. "ايپليڪيشن" ٽئب ۾، "نئين ايپليڪيشن" بٽڻ تي ڪلڪ ڪريو ۽ بوٽ جو نالو ڏيو
  3. پنهنجي بوٽ ۾ لاگ ان ڪندي ۽ "سيٽنگون" لسٽ ۾ "بوٽ" ٽيب ڳولڻ سان هڪ بوٽ ٽوڪن حاصل ڪريو
  4. ٽوڪن کي ڪٿي محفوظ ڪريو

وارجنگ

انهي سان گڏ، توهان کي هڪ ايپليڪيشن ٺاهڻ جي ضرورت آهي Wargaming ۾ Wargaming API تائين رسائي حاصل ڪرڻ لاء. هتي، پڻ، هر شيء سادو آهي:

  1. پنهنجي Wargaming اڪائونٽ ۾ لاگ ان ڪريو هن لنڪ ذريعي
  2. اسان وڃون ٿا "منهنجا ايپليڪيشنون" ۽ "نئين ايپليڪيشن شامل ڪريو" بٽڻ تي ڪلڪ ڪريو، ايپليڪيشن جو نالو ڏيو ۽ ان جو قسم چونڊيو
  3. ايپليڪيشن ID محفوظ ڪرڻ

سافٽ ويئر

اتي اڳ ۾ ئي چونڊ جي آزادي آهي. ڪو بصري اسٽوڊيو استعمال ڪري ٿو، ڪو رائڊر، ڪو ماڻهو عام طور تي طاقتور آهي، ۽ ويم ۾ ڪوڊ لکي ٿو (آخرڪار، حقيقي پروگرامر صرف ڪيبورڊ استعمال ڪندا آهن، صحيح؟). بهرحال، Discord API کي لاڳو نه ڪرڻ لاءِ، توهان استعمال ڪري سگهو ٿا غير رسمي C# لائبريري “DSharpPlus”. اهو يا ته نصب ٿي سگهي ٿو NuGet مان، يا ذريعن کي تعمير ڪندي پاڻ کي مخزن مان.

انهن لاءِ جيڪي نٿا ڄاڻن يا وساري ويٺا آهن ته ڪيئن نيو گيٽ مان ايپليڪيشن انسٽال ڪجي.بصري اسٽوڊيو لاء هدايتون

  1. ٽيب ڏانھن وڃو پروجيڪٽ - انتظام ڪريو NuGet پيڪيجز؛
  2. نظرثاني تي ڪلڪ ڪريو ۽ ڳولا جي ميدان ۾ داخل ڪريو "DSharpPlus"؛
  3. فريم ورڪ چونڊيو ۽ انسٽال ڪريو؛
  4. PROFIT!

تياري وارو مرحلو ختم ٿي چڪو آهي، توهان اڳتي وڌائي سگهو ٿا بوٽ لکڻ لاءِ.

لکڻ جو منطق

.NET ڪور تي هڪ Discord بوٽ ٺاهي رهيو آهي هڪ VPS سرور تي ترتيب ڏيڻ سان

اسان ايپليڪيشن جي پوري منطق تي غور نه ڪنداسين، مان صرف اهو ڏيکاريندس ته ڪيئن ڪم ڪجي بوٽ ذريعي پيغامن جي مداخلت سان، ۽ ڪيئن ڪم ڪجي Wargaming API سان.

Discord bot سان ڪم ڪرڻ جامد async Task MainTask(string[] args) ذريعي ٿئي ٿو؛
ھن فنڪشن کي سڏڻ لاءِ، مين ۾ توھان کي رجسٽر ڪرڻ جي ضرورت آھي

MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();

اڳيون، توهان کي پنهنجي بوٽ کي شروع ڪرڻ جي ضرورت آهي:

discord = new DiscordClient(new DiscordConfiguration
{
    Token = token,
    TokenType = TokenType.Bot,
    UseInternalLogHandler = true,
    LogLevel = LogLevel.Debug
});

جتي ٽوڪن توهان جي بوٽ جو ٽوڪن آهي.
پوء، 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 تي ترتيب ڏيو - سرور

.NET ڪور تي هڪ Discord بوٽ ٺاهي رهيو آهي هڪ VPS سرور تي ترتيب ڏيڻ سان

هڪ دفعو توهان بوٽ سان ڪيو آهي، اهو هڪ سرور تي ميزباني ڪرڻ جي ضرورت آهي جيڪو مسلسل 24/7 هلائي رهيو آهي. اهو هن حقيقت جي ڪري آهي ته جڏهن توهان جي ايپليڪيشن هلائي رهي آهي، بوٽ پڻ هلائي رهيو آهي. جيترو جلدي توهان ايپليڪيشن کي بند ڪيو، توهان جو بوٽ پڻ سمهي ٿو.

هن دنيا ۾ ڪيترائي VPS سرور موجود آهن، ٻئي ونڊوز ۽ لينڪس تي، جڏهن ته، اڪثر ڪيسن ۾، لينڪس تي ميزباني ڪرڻ تمام سستو آهي.

Discord سرور تي، مون کي صلاح ڏني وئي vscale.io، ۽ مون فوري طور تي ان تي Ubuntu تي هڪ ورچوئل سرور ٺاهيو ۽ بوٽ اپ لوڊ ڪيو. مان بيان نه ڪندس ته هي سائيٽ ڪيئن ڪم ڪري ٿي، پر سڌو سنئون بوٽ سيٽنگون ڏانهن ويندا.

سڀ کان پهريان، توهان کي ضروري سافٽ ويئر انسٽال ڪرڻ جي ضرورت آهي جيڪا اسان جي بوٽ کي هلائي ويندي جيڪا .NET ڪور ۾ لکيل آهي. اهو ڪيئن ڪجي هتي بيان ڪيو ويو آهي.

اڳيون، توهان کي بوٽ اپ لوڊ ڪرڻ جي ضرورت آهي گيٽ سروس تي، جهڙوڪ GitHub ۽ جهڙوڪ، ۽ ان کي ڪلون ڪريو VPS سرور تي، يا ٻين طريقن سان پنهنجو بوٽ ڊائون لوڊ ڪريو. مهرباني ڪري نوٽ ڪريو ته توهان وٽ صرف هڪ ڪنسول هوندو، نه GUI. بلڪل.

توهان جي بوٽ کي ڊائون لوڊ ڪرڻ کان پوء، توهان کي ان کي هلائڻ جي ضرورت آهي. هن لاء، توهان کي ضرورت آهي:

  • سڀني انحصار کي بحال ڪريو: dotnet بحال
  • ايپليڪيشن ٺاهيو: dotnet build name_project.sln -c رليز
  • تعمير ٿيل DLL ڏانھن وڃو؛
  • dotnet name_of_file.dll

مبارڪون! توهان جو بوٽ هلي رهيو آهي. بهرحال، بوٽ، بدقسمتي سان، ڪنسول تي قبضو ڪري ٿو، ۽ VPS سرور کان ٻاهر نڪرڻ آسان ناهي. انهي سان گڏ، سرور جي ٻيهر شروع ٿيڻ جي صورت ۾، توهان کي بوٽ کي نئين طريقي سان شروع ڪرڻو پوندو. صورتحال مان نڪرڻ جا ٻه طريقا آهن. انهن سڀني جو تعلق سرور جي شروعات تي لانچ سان آهي:

  • رن اسڪرپٽ کي شامل ڪريو /etc/init.d
  • ھڪڙي خدمت ٺاھيو جيڪا شروع ٿيندي.

مون کي ان تي تفصيل سان رهڻ جو نقطو نظر نٿو اچي، انٽرنيٽ تي هر شيءِ ڪافي تفصيل سان بيان ڪئي وئي آهي.

پهچڻ

مون کي خوشي آهي ته مون هن ڪم تي ورتو. هي منهنجو پهريون بوٽ ڊولپمينٽ تجربو هو، ۽ مون کي خوشي آهي ته مون کي C # ۾ نئين ڄاڻ حاصل ڪئي، ۽ لينڪس سان ڪم ڪرڻ.

Discord سرور سان ڳنڍيو. انهن لاءِ جيڪي راند رانديون کيڏندا آهن.
مخزن سان ڳنڍيو جتي Discord bot واقع آهي.
DSharpPlus مخزن سان ڳنڍيو.
Спасибо за внимание!

جو ذريعو: www.habr.com

تبصرو شامل ڪريو