VPS سرور پر تعیناتی کے ساتھ .NET Core پر Discord بوٹ بنانا

VPS سرور پر تعیناتی کے ساتھ .NET Core پر Discord بوٹ بنانا

خوشخبری والو!

آج آپ ایک مضمون دیکھیں گے جو آپ کو دکھائے گا کہ .NET Core پر C# کا استعمال کرتے ہوئے بوٹ کیسے بنایا جائے اور اسے ریموٹ سرور پر کیسے چلایا جائے۔

مضمون ایک پس منظر، تیاری کے مرحلے، منطق لکھنے اور بوٹ کو ریموٹ سرور پر منتقل کرنے پر مشتمل ہوگا۔

مجھے امید ہے کہ یہ مضمون بہت سے ابتدائیوں کی مدد کرے گا۔

پس منظر

یہ سب ایک بے خواب موسم خزاں کی رات سے شروع ہوا جو میں نے ڈسکارڈ سرور پر گزاری۔ چونکہ میں نے حال ہی میں اس کے ساتھ شمولیت اختیار کی ہے، میں نے اس کا اوپر نیچے مطالعہ کرنا شروع کیا۔ ٹیکسٹ چینل "خالی جگہیں" تلاش کرنے کے بعد، میں نے دلچسپی لی، اسے کھولا، اور میں نے ان پیشکشوں میں سے پایا جو میری دلچسپی نہیں رکھتے تھے، یہ ہیں:

پروگرامر (بوٹ ڈویلپر)
کے تقاضے:

  • پروگرامنگ زبانوں کا علم؛
  • خود سیکھنے کی صلاحیت.

Пожелания:

  • دوسرے لوگوں کے کوڈ کو سمجھنے کی صلاحیت؛
  • DISCORD فعالیت کا علم۔

مقاصد:

  • بوٹ کی ترقی؛
  • بوٹ کی حمایت اور دیکھ بھال۔

آپ کا فائدہ:

  • اپنی پسند کے منصوبے کی حمایت اور اثر انداز ہونے کا موقع؛
  • ٹیم میں کام کرنے کا تجربہ حاصل کرنا؛
  • موجودہ مہارتوں کو ظاہر کرنے اور بہتر بنانے کا موقع۔


اس نے مجھے فوری طور پر دلچسپی لی۔ جی ہاں، انھوں نے اس کام کے لیے ادائیگی نہیں کی، لیکن انھوں نے آپ سے کسی ذمہ داری کا مطالبہ نہیں کیا، اور یہ پورٹ فولیو میں ضرورت سے زیادہ نہیں ہوگا۔ اس لیے، میں نے سرور ایڈمن کو لکھا، اور اس نے مجھ سے ایک بوٹ لکھنے کو کہا جو ورلڈ آف ٹینک میں کھلاڑی کے اعدادوشمار دکھائے۔

ابتدائی مرحلے

VPS سرور پر تعیناتی کے ساتھ .NET Core پر Discord بوٹ بنانا
ڈسکروڈ
اس سے پہلے کہ ہم اپنا بوٹ لکھنا شروع کریں، ہمیں اسے Discord کے لیے بنانا ہوگا۔ آپ کو ضرورت ہے:

  1. Discord اکاؤنٹ میں لاگ ان کریں۔ ссылке по
  2. "ایپلی کیشنز" ٹیب میں، "نئی ایپلیکیشن" بٹن پر کلک کریں اور بوٹ کا نام دیں۔
  3. اپنے بوٹ میں لاگ ان کرکے اور "ترتیبات" کی فہرست میں "بوٹ" ٹیب تلاش کرکے بوٹ ٹوکن حاصل کریں۔
  4. ٹوکن کہیں محفوظ کریں۔

وارگنگ

اس کے علاوہ، آپ کو وارگیمنگ API تک رسائی حاصل کرنے کے لیے وارگیمنگ میں ایک ایپلیکیشن بنانے کی ضرورت ہے۔ یہاں بھی، سب کچھ آسان ہے:

  1. اپنے وارگیمنگ اکاؤنٹ میں لاگ ان کریں۔ اس لنک سے
  2. ہم "My Applications" پر جاتے ہیں اور "Add a new application" بٹن پر کلک کرتے ہیں، ایپلیکیشن کا نام دیتے ہیں اور اس کی قسم کا انتخاب کرتے ہیں۔
  3. ایپلیکیشن آئی ڈی کو محفوظ کرنا

سافٹ ویئر کی

انتخاب کی آزادی پہلے ہی موجود ہے۔ کوئی ویژول اسٹوڈیو استعمال کرتا ہے، کوئی رائڈر، کوئی عام طور پر طاقتور ہوتا ہے، اور ویم میں کوڈ لکھتا ہے (آخر کار، حقیقی پروگرامرز صرف کی بورڈ استعمال کرتے ہیں، ٹھیک ہے؟) تاہم، Discord API کو لاگو نہ کرنے کے لیے، آپ غیر سرکاری C# لائبریری "DSharpPlus" استعمال کر سکتے ہیں۔ آپ اسے یا تو NuGet سے انسٹال کر سکتے ہیں، یا ذخیرے سے خود ذرائع بنا کر۔

ان لوگوں کے لیے جو نہیں جانتے یا بھول گئے ہیں کہ NuGet سے ایپلی کیشنز انسٹال کرنے کا طریقہ۔بصری اسٹوڈیو کے لیے ہدایات

  1. ٹیب پر جائیں پروجیکٹ - نیو گیٹ پیکجز کا نظم کریں؛
  2. ریویو پر کلک کریں اور سرچ فیلڈ میں "DSharpPlus" درج کریں۔
  3. فریم ورک کو منتخب اور انسٹال کریں؛
  4. منافع!

تیاری کا مرحلہ ختم ہو چکا ہے، آپ بوٹ لکھنے کے لیے آگے بڑھ سکتے ہیں۔

منطق لکھنا

VPS سرور پر تعیناتی کے ساتھ .NET Core پر Discord بوٹ بنانا

ہم ایپلیکیشن کی پوری منطق پر غور نہیں کریں گے، میں صرف یہ بتاؤں گا کہ بوٹ کے ذریعے پیغامات کو روکنے کے ساتھ کیسے کام کرنا ہے، اور وارگیمنگ API کے ساتھ کیسے کام کرنا ہے۔

Discord بوٹ کے ساتھ کام کرنا static 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
});

جہاں ٹوکن آپ کے بوٹ کا ٹوکن ہے۔
پھر، لیمبڈا کے ذریعے، ہم ضروری کمانڈ لکھتے ہیں جن پر بوٹ کو عمل کرنا چاہیے:

discord.MessageCreated += async e =>
{
    string message = e.Message.Content;
    if (message.StartsWith("&"))
    {
        await e.Message.RespondAsync(“Hello, ” + e.Author.Username);
    }
};

جہاں e.Author.Username کو صارف کا عرفی نام مل رہا ہے۔

اس طرح، جب آپ & سے شروع ہونے والا کوئی پیغام بھیجیں گے تو بوٹ آپ کو سلام کرے گا۔

اس فنکشن کے اختتام پر، آپ کو await discord.ConnectAsync(); اور Task.Delay(-1) کا انتظار کریں؛

یہ آپ کو مرکزی دھاگے کو اٹھائے بغیر پس منظر میں کمانڈز پر عمل کرنے کی اجازت دے گا۔

اب ہمیں وارگیمنگ 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 - سرور پر تعینات کریں۔

VPS سرور پر تعیناتی کے ساتھ .NET Core پر Discord بوٹ بنانا

ایک بار جب آپ بوٹ کے ساتھ کام کر لیتے ہیں، تو اسے ایک ایسے سرور پر ہوسٹ کرنے کی ضرورت ہوتی ہے جو 24/7 مسلسل چل رہا ہو۔ یہ اس حقیقت کی وجہ سے ہے کہ جب آپ کی درخواست چل رہی ہے، بوٹ بھی چل رہا ہے۔ جیسے ہی آپ ایپلیکیشن کو آف کرتے ہیں، آپ کا بوٹ بھی سو جاتا ہے۔

اس دنیا میں بہت سے VPS سرور موجود ہیں، ونڈوز اور لینکس دونوں پر، تاہم، زیادہ تر معاملات میں، لینکس پر میزبانی کرنا بہت سستا ہے۔

ڈسکارڈ سرور پر، مجھے vscale.io کا مشورہ دیا گیا، اور میں نے فوری طور پر اس پر اوبنٹو پر ایک ورچوئل سرور بنایا اور بوٹ اپ لوڈ کیا۔ میں یہ بیان نہیں کروں گا کہ یہ سائٹ کیسے کام کرتی ہے، لیکن براہ راست بوٹ کی ترتیبات پر جاؤں گی۔

سب سے پہلے، آپ کو ضروری سافٹ ویئر انسٹال کرنے کی ضرورت ہے جو .NET Core میں لکھا ہوا ہمارا بوٹ چلائے گا۔ اسے کیسے کرنا ہے یہاں بیان کیا گیا ہے۔.

اس کے بعد، آپ کو بوٹ کو گٹ سروس پر اپ لوڈ کرنے کی ضرورت ہے، جیسے GitHub اور اس جیسی، اور اسے VPS سرور پر کلون کرنا، یا اپنے بوٹ کو دوسرے طریقوں سے ڈاؤن لوڈ کرنا ہے۔ براہ کرم نوٹ کریں کہ آپ کے پاس صرف ایک کنسول ہوگا، کوئی GUI نہیں ہوگا۔ بالکل.

اپنے بوٹ کو ڈاؤن لوڈ کرنے کے بعد، آپ کو اسے چلانے کی ضرورت ہے۔ اس کے لیے آپ کو ضرورت ہے:

  • تمام انحصار بحال کریں: ڈاٹ نیٹ بحال
  • ایپلیکیشن بنائیں: dotnet build name_project.sln -c ریلیز
  • بلٹ ڈی ایل ایل پر جائیں؛
  • dotnet name_of_file.dll

مبارک ہو! آپ کا بوٹ چل رہا ہے۔ تاہم، بوٹ، بدقسمتی سے، کنسول پر قابض ہے، اور VPS سرور سے باہر نکلنا آسان نہیں ہے۔ اس کے علاوہ، سرور دوبارہ شروع ہونے کی صورت میں، آپ کو بوٹ کو نئے طریقے سے شروع کرنا ہوگا۔ صورتحال سے نکلنے کے چند راستے ہیں۔ ان سب کا تعلق سرور کے آغاز پر لانچ سے ہے:

  • رن اسکرپٹ کو /etc/init.d میں شامل کریں۔
  • ایک سروس بنائیں جو شروع ہونے پر چلے گی۔

مجھے ان پر تفصیل سے غور کرنے کا کوئی فائدہ نظر نہیں آتا، انٹرنیٹ پر ہر چیز کو کافی تفصیل سے بیان کیا گیا ہے۔

نتائج

مجھے خوشی ہے کہ میں نے یہ ذمہ داری قبول کی۔ یہ میرا بوٹ ڈویلپمنٹ کا پہلا تجربہ تھا، اور مجھے خوشی ہے کہ مجھے C# میں نیا علم حاصل ہوا، اور لینکس کے ساتھ کام کرنا۔

ڈسکارڈ سرور سے لنک کریں۔ ان لوگوں کے لیے جو وار گیمنگ کھیلتے ہیں۔
اس ذخیرہ سے لنک کریں جہاں Discord بوٹ واقع ہے۔
DSharpPlus ریپوزٹری سے لنک کریں۔
آپ کا شکریہ!

ماخذ: www.habr.com

نیا تبصرہ شامل کریں