د VPS سرور ته د ځای په ځای کولو سره په .NET کور کې د ډیسکارډ بوټ رامینځته کول

د VPS سرور ته د ځای په ځای کولو سره په .NET کور کې د ډیسکارډ بوټ رامینځته کول

سلامونه خوستوالو!

نن ورځ به تاسو یوه مقاله وګورئ چې تاسو ته به وښیې چې څنګه په .NET کور کې د C# په کارولو سره بوټ رامینځته کړئ او دا څنګه په ریموټ سرور کې پرمخ وړئ.

مقاله به یو شالید ، د چمتووالي مرحله ، د منطق لیکلو او لرې پرتو سرور ته د بوټ لیږد ولري.

زه امید لرم چې دا مقاله به د ډیری پیل کونکو سره مرسته وکړي.

له تاریخ څخه دمخه

دا ټول د مني په یوه بې خوبه شپه کې پیل شوي چې ما د ډیسکارډ سرور کې تیر کړل. له هغه وخته چې زه پدې وروستیو کې له هغه سره یوځای شوم، ما د هغه پورته او ښکته مطالعه پیل کړه. د متن چینل په موندلو سره "خالي"، زه علاقه لرم، هغه یې پرانستله، او د هغو وړاندیزونو په منځ کې وموم چې زما سره علاقه نه لري، دا دي:

پروګرامر (د بوټ جوړونکی)
اړتیاوې:

  • د پروګرام کولو ژبو پوهه؛
  • د ځان زده کړې وړتیا.

:

  • د نورو خلکو کوډ د پوهیدو وړتیا؛
  • د DISCORD فعالیت پوهه.

دندې:

  • د بوټو پراختیا
  • د بوټ ملاتړ او ساتنه.

ستاسو ګټه:

  • د هغه پروژې ملاتړ او نفوذ کولو فرصت چې تاسو یې خوښوئ؛
  • په ټیم کې د کار کولو تجربه ترلاسه کول؛
  • د موجوده مهارتونو ښودلو او ښه کولو فرصت.


دا سمدلاسه ما سره علاقه درلوده. هو، دوی د دې کار لپاره پیسې نه دي ورکړې، مګر دوی له تاسو څخه د کوم مسؤلیت غوښتنه نه ده کړې، او دا به په پورټ فولیو کې بې ځایه نه وي. له همدې امله ، ما د سرور مدیر ته لیکلي ، او هغه له ما څخه وغوښتل چې یو بوټ ولیکم چې د ټانکونو نړۍ کې د لوبغاړي احصایې وښیې.

د چمتوالي پړاو

د VPS سرور ته د ځای په ځای کولو سره په .NET کور کې د ډیسکارډ بوټ رامینځته کول
ډیسکروډ
مخکې لدې چې موږ خپل بوټ لیکل پیل کړو ، موږ اړتیا لرو دا د ډیسکارډ لپاره رامینځته کړو. تاسو اړتیا لرئ:

  1. د Discord حساب ته ننوتل مخونه
  2. د "اپلیکیشن" ټب کې، د "نوي غوښتنلیک" تڼۍ کلیک وکړئ او د بوټ نوم ورکړئ
  3. خپل بوټ ته ننوتل او د "ترتیباتو" لیست کې د "بوټ" ټب موندلو سره د بوټ نښه ترلاسه کړئ
  4. نښه په کوم ځای کې وساتئ

وارګنګ

همچنان ، تاسو اړتیا لرئ په وارګیمینګ کې یو غوښتنلیک رامینځته کړئ ترڅو د وارګیمینګ API ته لاسرسی ومومئ. دلته هم، هر څه ساده دي:

  1. خپل وارګیمینګ حساب ته ننوتل د دې لینک له لارې
  2. موږ "زما غوښتنلیکونه" ته ځو او د "نوی غوښتنلیک اضافه کړئ" تڼۍ کلیک وکړئ، د غوښتنلیک نوم ورکړئ او د هغې ډول وټاکئ.
  3. د غوښتنلیک ID خوندي کول

ساوتري

د انتخاب آزادي لا دمخه شتون لري. یو څوک بصری سټوډیو کاروي ، څوک رایډر ، څوک عموما ځواکمن وي ، او په ویم کې کوډ لیکي (په هرصورت ، ریښتیني برنامې یوازې کیبورډ کاروي ، سمه ده؟). په هرصورت، د دې لپاره چې د Discord API پلي نشي، تاسو کولی شئ غیر رسمي C# کتابتون "DSharpPlus" وکاروئ. تاسو کولی شئ دا یا د NuGet څخه نصب کړئ، یا د ذخیره کولو څخه پخپله د سرچینو په جوړولو سره.

د هغو کسانو لپاره چې نه پوهیږي یا یې هیر کړي چې څنګه د NuGet څخه غوښتنلیکونه نصب کړي.د بصری سټوډیو لپاره لارښوونې

  1. د پروژې ټب ته لاړ شئ - د NuGet کڅوړې اداره کړئ؛
  2. په بیاکتنه کلیک وکړئ او د لټون ساحه کې "DSharpPlus" دننه کړئ؛
  3. چوکاټ وټاکئ او نصب کړئ؛
  4. خونديتوب!

د چمتووالي مرحله پای ته رسیدلې ، تاسو کولی شئ د بوټ لیکلو ته لاړشئ.

د منطق لیکل

د VPS سرور ته د ځای په ځای کولو سره په .NET کور کې د ډیسکارډ بوټ رامینځته کول

موږ به د غوښتنلیک ټول منطق په پام کې ونیسو ، زه به یوازې وښیم چې څنګه د بوټ لخوا د پیغامونو مداخلې سره کار کول ، او څنګه د وارګیمینګ 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
});

چیرې چې نښه ستاسو د بوټ نښه ده.
بیا ، د لامبډا له لارې ، موږ اړین حکمونه لیکو چې بوټ باید اجرا کړي:

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) په انتظار

دا به تاسو ته اجازه درکړي پرته له دې چې اصلي تار پورته کړي په شالید کې کمانډونه اجرا کړئ.

اوس موږ اړتیا لرو د 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;
        }

پاملرنه! دا په کلکه سپارښتنه نه کیږي چې ټول ټوکنونه او د غوښتنلیک IDs په روښانه متن کې ذخیره کړئ! لږترلږه، ډیسکارډ دا ډول ټیکونه منع کوي کله چې دوی د نړۍ شبکې ته ننوځي، او په اعظمي توګه، بوټ د برید کونکو لخوا کارول پیل کوي.

VPS - سرور ته ځای په ځای کړئ

د VPS سرور ته د ځای په ځای کولو سره په .NET کور کې د ډیسکارډ بوټ رامینځته کول

یوځل چې تاسو د بوټ سره سرته ورسیږئ ، نو دا باید په سرور کې کوربه شي چې په دوامداره توګه 24/7 پرمخ ځي. دا د دې حقیقت له امله دی چې کله ستاسو غوښتنلیک روان وي، بوټ هم روان وي. هرڅومره ژر چې تاسو غوښتنلیک بند کړئ ، ستاسو بوټ هم ویده کیږي.

ډیری VPS سرورونه پدې نړۍ کې شتون لري ، دواړه په وینډوز او لینکس کې ، په هرصورت ، په ډیری قضیو کې ، په لینکس کې کوربه کول خورا ارزانه دي.

په ډیسکارډ سرور کې ، ما ته مشوره ورکړل شوه vscale.io ، او ما سمدلاسه په اوبنټو کې یو مجازی سرور رامینځته کړ او بوټ یې اپلوډ کړ. زه به تشریح نه کړم چې دا سایټ څنګه کار کوي، مګر مستقیم به د بوټو ترتیباتو ته لاړ شم.

لومړی، تاسو اړتیا لرئ اړین سافټویر نصب کړئ چې زموږ بوټ به په .NET کور کې لیکل شوی وي. دا څنګه کول دلته تشریح شوي.

بیا ، تاسو اړتیا لرئ بوټ د Git خدمت ته اپلوډ کړئ ، لکه GitHub او ورته ورته ، او دا د VPS سرور ته کلون کړئ ، یا خپل بوټ په نورو لارو ډاونلوډ کړئ. مهرباني وکړئ په یاد ولرئ چې تاسو به یوازې کنسول ولرئ، نه GUI. هیڅکله.

وروسته له دې چې تاسو خپل بوټ ډاونلوډ کړئ ، تاسو اړتیا لرئ دا چل کړئ. د دې لپاره، تاسو اړتیا لرئ:

  • ټول انحصار بحال کړئ: dotnet بیا رغونه
  • د غوښتنلیک جوړول: dotnet build name_project.sln -c ریلیز
  • جوړ شوي DLL ته لاړ شئ؛
  • dotnet name_of_file.dll

مبارک شه! ستاسو بوټ روان دی. په هرصورت، بوټ، له بده مرغه، کنسول نیسي، او د VPS سرور څخه وتل اسانه ندي. همچنان ، د سرور بیا پیل کولو په صورت کې ، تاسو باید بوټ په نوي ډول پیل کړئ. د وضعیت څخه د وتلو څو لارې شتون لري. دا ټول د سرور په پیل کې د لانچ سره تړاو لري:

  • /etc/init.d ته د چلولو سکریپټ اضافه کړئ
  • یو خدمت جوړ کړئ چې په پیل کې به پرمخ ځي.

زه د دوی په اړه په تفصیل سره د اوسیدو نقطه نه ګورم ، هرڅه په انټرنیټ کې په کافي توضیحاتو کې بیان شوي.

موندنو

زه خوښ یم چې ما دا دنده په غاړه واخیسته. دا زما لومړی د بوټ پرمختیا تجربه وه، او زه خوښ یم چې ما په C # کې نوې پوهه ترلاسه کړه، او د لینکس سره کار کول.

د Discord سرور سره لینک. د هغو کسانو لپاره چې د Wargaming لوبې لوبوي.
د ذخیره کولو سره اړیکه ونیسئ چیرې چې د ډیسکارډ بوټ موقعیت لري.
د DSharpPlus ذخیره سره اړیکه ونیسئ.
ستاسو د پاملرنې مننه!

سرچینه: www.habr.com

Add a comment