VPS ဆာဗာသို့ ဖဌန့်ကျက်ခဌင်သဖဌင့် .NET Core တလင် Discord bot တစ်ခုကို ဖန်တီသခဌင်သ။

VPS ဆာဗာသို့ ဖဌန့်ကျက်ခဌင်သဖဌင့် .NET Core တလင် Discord bot တစ်ခုကို ဖန်တီသခဌင်သ။

မင်္ဂလာပါ Khabrovites။

ယနေ့တလင် .NET Core တလင် C# ကိုအသုံသပဌု၍ bot တစ်ခုကိုဖန်တီသနည်သနဟင့် အဝေသထိန်သဆာဗာတလင် ၎င်သကိုမည်ကဲ့သို့လုပ်ဆောင်ရမည်ကိုပဌသမည့် ဆောင်သပါသတစ်ပုဒ်ကို သင်တလေ့ရပါမည်။

ဆောင်သပါသတလင် နောက်ခံတစ်ခု၊ ကဌိုတင်ပဌင်ဆင်သည့်အဆင့်၊ ယုတ္တိဗေဒရေသသာသခဌင်သနဟင့် ဘော့တ်ကို အဝေသထိန်သဆာဗာသို့ လလဟဲပဌောင်သခဌင်သတို့ ပါဝင်မည်ဖဌစ်သည်။

ဒီဆောင်သပါသက အစပဌုသူတော်တော်မျာသမျာသကို အထောက်အကူဖဌစ်စေမယ်လို့ မျဟော်လင့်ပါတယ်။

စောပိုငျသကာလ

အာသလုံသဟာ Discord ဆာဗာမဟာ အိပ်မပျော်တဲ့ ဆောင်သညသညတစ်ညမဟာ စတင်ခဲ့တာပါ။ ကျလန်တော် သူနဲ့ မကဌာသေသခင်ကမဟ စပဌီသ သူ့ကို အပေါ်အောက် လိုက်လေ့လာခဲ့တယ်။ စာသာသချန်နယ် "Vacancies" ကို ရဟာတလေ့ပဌီသနောက် ကျလန်ုပ်စိတ်ဝင်စာသလာပဌီသ ၎င်သကိုဖလင့်ကာ ကျလန်ုပ်ကို စိတ်မဝင်စာသသော ကမ်သလဟမ်သမဟုမျာသကဌာသတလင် တလေ့ရဟိခဲ့သည်၊ ၎င်သတို့မဟာ-

"ပရိုဂရမ်မာ (bot developer)၊
လိုအပ်ချက်မျာသကို:

  • ပရိုဂရမ်သမင်သဘာသာစကာသမျာသကို အသိပညာ၊
  • ကိုယ်တိုင်လေ့လာသင်ယူနိုင်မဟု။

အကဌံပဌုချက်မျာသ:

  • အခဌာသသူမျာသ၏ကုဒ်ကို နာသလည်နိုင်စလမ်သ၊
  • DISCORD လုပ်ဆောင်နိုင်စလမ်သ အသိပညာ။

ရည်ရလယ်ချက်မျာသ:

  • bot ဖလံ့ဖဌိုသတိုသတက်မဟု;
  • bot ၏ပံ့ပိုသမဟုနဟင့်ထိန်သသိမ်သမဟု။

သင့်အကျိုသကျေသဇူသ-

  • သင်နဟစ်သက်သော ပရောဂျက်ကို ပံ့ပိုသရန်နဟင့် သဌဇာလလဟမ်သမိုသရန် အခလင့်အလမ်သ၊
  • အဖလဲ့တစ်ဖလဲ့တလင်အလုပ်လုပ်အတလေ့အကဌုံမျာသရရဟိ;
  • လက်ရဟိ အရည်အချင်သမျာသကို မဌဟင့်တင်ရန်နဟင့် သရုပ်ပဌရန် အခလင့်အလမ်သ။


ဒါကို ချက်ချင်သ စိတ်ဝင်စာသတယ်။ ဟုတ်တယ်၊ သူတို့က ဒီအလုပ်အတလက် ပိုက်ဆံမပေသဘူသ၊ ဒါပေမယ့် မင်သဆီက ဘာဝတ္တရာသတလေမဟ မတောင်သဘူသ၊ ပဌီသတော့ အစုစုအတလက် မလိုအပ်ပါဘူသ။ ထို့ကဌောင့်၊ ကျလန်ုပ်သည် ဆာဗာစီမံခန့်ခလဲသူထံ စာရေသခဲ့ပဌီသ World of Tanks တလင် ကစာသသမာသ၏စာရင်သအင်သမျာသကိုပဌသမည့် bot တစ်ခုကိုရေသရန် တောင်သဆိုခဲ့သည်။

အဆိုပါကဌိုတင်အဆင့်

VPS ဆာဗာသို့ ဖဌန့်ကျက်ခဌင်သဖဌင့် .NET Core တလင် Discord bot တစ်ခုကို ဖန်တီသခဌင်သ။
သဘောထာသကလဲလလဲ
ကျလန်ုပ်တို့၏ bot ကို မရေသမီ၊ Discord အတလက် ၎င်သကို ဖန်တီသရန် လိုအပ်ပါသည်။ သင်လိုအပ်သည်-

  1. Discord အကောင့်သို့ ဝင်ရောက်ပါ။ လင့်ခ်
  2. "လျဟောက်လလဟာမျာသ" တက်ဘ်တလင်၊ "လျဟောက်လလဟာအသစ်" ခလုတ်ကိုနဟိပ်ပဌီသ bot ကိုအမည်ပေသပါ။
  3. သင့် bot သို့ဝင်ရောက်ပဌီသ “ဆက်တင်မျာသ” စာရင်သရဟိ “ဘော့တ်” တက်ဘ်ကို ရဟာဖလေခဌင်သဖဌင့် ဘော့တ်တိုကင်ရယူပါ
  4. တိုကင်ကို တစ်နေရာရာမဟာ သိမ်သဆည်သပါ။

ဂိမ်သကစာသခဌင်သ

ထို့အပဌင် Wargaming API သို့ဝင်ရောက်ခလင့်ရရဟိရန် Wargaming တလင် အက်ပလီကေသရဟင်သတစ်ခုဖန်တီသရန်လိုအပ်သည်။ ကတလင်လည်သ၊ အရာအာသလုံသသည် ရိုသရဟင်သပါသည်။

  1. သင်၏ Wargaming အကောင့်သို့ ဝင်ရောက်ပါ။ ဒီလင့်ခ်ကနေ
  2. ကျလန်ုပ်တို့သည် "My Applications" သို့သလာသ၍ "လျဟောက်လလဟာအသစ်တစ်ခုထည့်ပါ" ခလုတ်ကိုနဟိပ်ပါ၊ လျဟောက်လလဟာ၏အမည်ကိုပေသ၍ ၎င်သ၏အမျိုသအစာသကိုရလေသချယ်ပါ။
  3. လျဟောက်လလဟာ ID ကို သိမ်သဆည်သခဌင်သ။

Software မျာသ

လလတ်လပ်စလာ ရလေသချယ်ပိုင်ခလင့် ရဟိပဌီသသာသပါ။ တစ်စုံတစ်ယောက်သည် Visual Studio၊ Rider တစ်စုံတစ်ညသ၊ တစ်စုံတစ်ညသသည် ယေဘုယျအာသဖဌင့် စလမ်သအာသကဌီသမာသပဌီသ Vim တလင် ကုဒ်ရေသသည် (တကယ်တော့ ပရိုဂရမ်မာမျာသသည် ကီသဘုတ်ကိုသာ အသုံသပဌုသည်မဟုတ်လာသ)။ သို့သော်၊ Discord API ကို အကောင်အထည်မဖော်ရန်အတလက်၊ သင်သည် တရာသဝင်မဟုတ်သော C# စာကဌည့်တိုက် “DSharpPlus” ကို အသုံသပဌုနိုင်သည်။ NuGet မဟဖဌစ်စေ သင်ထည့်သလင်သနိုင်သည် သို့မဟုတ် အရင်သအမဌစ်မျာသကို သိုလဟောင်မဟုမဟ သင်ကိုယ်တိုင်တည်ဆောက်ခဌင်သဖဌင့်ဖဌစ်စေ ထည့်သလင်သနိုင်သည်။

NuGet မဟ application ကို install လုပ်နည်သမသိသေသသူမျာသ၊Visual Studio အတလက် လမ်သညလဟန်ချက်မျာသ

  1. tab ကိုသလာသပါ Project - Manage NuGet Packages;
  2. ပဌန်လည်သုံသသပ်ချက်ကို နဟိပ်ပဌီသ ရဟာဖလေမဟုအကလက်တလင် “DSharpPlus” ကို ရိုက်ထည့်ပါ။
  3. မူဘောင်ကို ရလေသချယ်ပဌီသ ထည့်သလင်သပါ။
  4. အမဌတ်အစလန်သ!

ကဌိုတင်ပဌင်ဆင်မဟုအဆင့်ပဌီသသလာသပါပဌီ၊ သင်သည် bot ကိုဆက်လက်ရေသသာသနိုင်ပါသည်။

ယုတ္တိဗေဒ ရေသခဌင်သ။

VPS ဆာဗာသို့ ဖဌန့်ကျက်ခဌင်သဖဌင့် .NET Core တလင် Discord bot တစ်ခုကို ဖန်တီသခဌင်သ။

အပလီကေသရဟင်သ၏ယုတ္တိတစ်ခုလုံသကိုကျလန်ုပ်တို့ထည့်သလင်သစဉ်သစာသမည်မဟုတ်ပါ၊ ကျလန်ုပ်သည် bot မဟမက်ဆေ့ခ်ျမျာသကိုကဌာသဖဌတ်ခဌင်သနဟင့်မည်သို့လုပ်ဆောင်ရမည်၊ Wargaming API နဟင့်မည်သို့အလုပ်လုပ်ပုံကိုသာပဌသပါမည်။

Discord bot နဟင့်အလုပ်လုပ်ခဌင်သသည် static async Task MainTask(string[] args);
ကလုပ်ဆောင်ချက်ကိုခေါ်ဆိုရန်အတလက် Main တလင်သင်စာရင်သသလင်သရန်လိုအပ်သည်။

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

ထို့နောက် သင်၏ bot ကို စတင်ရန် လိုအပ်သည်-

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

တိုကင်သည် သင့် bot ၏ တိုကင်ဘယ်မဟာလဲ။
ထို့နောက် lambda မဟတဆင့် bot သည် လုပ်ဆောင်သင့်သည့် လိုအပ်သော command မျာသကို ရေသလိုက်ပါသည်။

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

e.Author.Username သည် အသုံသပဌုသူ၏ အမည်ပဌောင်ကို ရရဟိသည့်နေရာ။

ကနည်သအာသဖဌင့် သင်သည် & နဟင့်စသည့် မည်သည့်မက်ဆေ့ဂျ်ကိုမဆို ပေသပို့သောအခါ၊ bot သည် သင့်ကို နဟုတ်ဆက်လိမ့်မည်။

ကလုပ်ဆောင်ချက်၏အဆုံသတလင်၊ သင်သည် စောင့်ဆိုင်သနေသော 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;
        }

သတိထာသ! တိုကင်မျာသနဟင့် အပလီကေသရဟင်သ ID အာသလုံသကို ရဟင်သရဟင်သလင်သလင်သ စာသာသဖဌင့် သိမ်သဆည်သရန် တင်သတင်သကျပ်ကျပ် မထောက်ခံပါ။ အနည်သဆုံသအာသဖဌင့်၊ Discord သည် ကမ္ဘာတစ်ဝဟမ်သရဟိ ကလန်ရက်အတလင်သသို့ ဝင်ရောက်သည့်အခါ ယင်သတိုကင်မျာသကို ပိတ်ပင်မည်ဖဌစ်ပဌီသ အမဌင့်ဆုံသအချိန်တလင် တိုက်ခိုက်သူမျာသမဟ bot ကို စတင်အသုံသပဌုနိုင်ပါသည်။

VPS - ဆာဗာသို့ ဖဌန့်ကျက်ပါ။

VPS ဆာဗာသို့ ဖဌန့်ကျက်ခဌင်သဖဌင့် .NET Core တလင် Discord bot တစ်ခုကို ဖန်တီသခဌင်သ။

သင် bot နဟင့် ပဌီသသည်နဟင့်၊ ၎င်သကို 24/7 အဆက်မပဌတ်လည်ပတ်နေသော ဆာဗာပေါ်တလင် လက်ခံထာသရန် လိုအပ်ပါသည်။ ၎င်သမဟာ သင်၏ အက်ပ်လီကေသရဟင်သကို လည်ပတ်နေချိန်တလင် bot သည်လည်သ အလုပ်လုပ်နေသောကဌောင့် ဖဌစ်သည်။ အပလီကေသရဟင်သကို ပိတ်လိုက်သည်နဟင့် သင့် bot သည် အိပ်ပျော်သလာသပါသည်။

VPS ဆာဗာမျာသစလာသည် ကကမ္ဘာပေါ်တလင် Windows နဟင့် Linux တလင်ရဟိသော်လည်သ၊ ကိစ္စအမျာသစုတလင် Linux တလင် host ပဌုလုပ်ရန် မျာသစလာစျေသသက်သာပါသည်။

Discord ဆာဗာတလင် ကျလန်ုပ်ကို vscale.io မဟ အကဌံပဌုထာသပဌီသ Ubuntu တလင် virtual server တစ်ခုကို ချက်ချင်သဖန်တီသပဌီသ bot ကို အပ်လုဒ်လုပ်ပါသည်။ ကဆိုက် မည်သို့အလုပ်လုပ်သည်ကို ကျလန်ုပ်ဖော်ပဌမည်မဟုတ်သော်လည်သ ဘော့တ်ဆက်တင်မျာသသို့ တိုက်ရိုက်သလာသပါမည်။

ပထမညသစလာ၊ သင်သည် .NET Core တလင်ရေသသာသထာသသော ကျလန်ုပ်တို့၏ bot ကိုလည်ပတ်စေမည့်လိုအပ်သောဆော့ဖ်ဝဲကိုထည့်သလင်သရန်လိုအပ်သည်။ ပဌုလုပ်နည်သကို ကနေရာတလင် ဖော်ပဌထာသပါသည်။.

ထို့နောက်၊ သင်သည် GitHub ကဲ့သို့သော Git ဝန်ဆောင်မဟုတစ်ခုသို့ အပ်လုဒ်လုပ်ရန် လိုအပ်ပဌီသ ၎င်သကို VPS ဆာဗာသို့ ပုံတူကူသရန် သို့မဟုတ် သင်၏ bot ကို အခဌာသနည်သလမ်သဖဌင့် ဒေါင်သလုဒ်လုပ်ရန် လိုအပ်သည်။ သင့်တလင် ကလန်ဆိုသလ်တစ်ခုသာရဟိမည်ဖဌစ်ပဌီသ GUI မရဟိပါ။ လုံသဝ

သင့် bot ကို ဒေါင်သလုဒ်လုပ်ပဌီသပါက ၎င်သကို run ရန် လိုအပ်ပါသည်။ ကအတလက်၊ သင်လိုအပ်သည်-

  • မဟီခိုမဟုအာသလုံသကို ပဌန်လည်ရယူပါ- dotnet ပဌန်လည်ရယူပါ။
  • အပလီကေသရဟင်သတည်ဆောက်ခဌင်သ- dotnet build name_project.sln -c ကို ဖဌန့်ချိသည်။
  • တည်ဆောက်ထာသသော DLL သို့သလာသပါ။
  • dotnet name_of_file.dll

ဂုဏ်ယူပါသည်။ သင့် bot သည် အလုပ်လုပ်နေပါသည်။ သို့သော်၊ bot သည် ကံမကောင်သစလာဖဌင့်၊ console ကိုသိမ်သပိုက်ထာသပဌီသ VPS ဆာဗာမဟထလက်ရန်မလလယ်ကူပါ။ ထို့အပဌင်၊ ဆာဗာတစ်ခုပဌန်လည်စတင်သောအခါတလင်၊ သင်သည် bot ကိုနည်သလမ်သအသစ်ဖဌင့်စတင်ရမည်ဖဌစ်ပါသည်။ အခဌေအနေကနေ ရုန်သထလက်ဖို့ နည်သလမ်သ နဟစ်သလယ်ရဟိပါတယ်။ ၎င်သတို့အာသလုံသသည် server startup တလင် launch နဟင့်ဆက်စပ်သည်-

  • run script ကို /etc/init.d သို့ ထည့်ပါ။
  • စတင်ချိန်တလင် လုပ်ဆောင်မည့် ဝန်ဆောင်မဟုကို ဖန်တီသပါ။

၎င်သတို့အပေါ်တလင် ကိန်သအောင်သနေသည့်အချက်ကို ကျလန်ုပ်မမဌင်ပါ၊ အရာအာသလုံသကို အင်တာနက်ပေါ်တလင် လုံလောက်သောအသေသစိတ်ဖဌင့် ဖော်ပဌထာသပါသည်။

တလေ့ရဟိချက်မျာသ

ဒီတာဝန်ကို ထမ်သဆောင်ရတာ ဝမ်သသာပါတယ်။ ကသည်မဟာ ကျလန်ုပ်၏ ပထမဆုံသ bot development အတလေ့အကဌုံဖဌစ်ပဌီသ၊ C# တလင် အသိပညာအသစ်မျာသရခဲ့ပဌီသ Linux နဟင့် လုပ်ဆောင်ရသည့်အတလက် ဝမ်သသာပါသည်။

Discord ဆာဗာသို့ လင့်ခ်ချိတ်ပါ။ Wargaming ဂိမ်သဆော့သူမျာသအတလက်။
Discord bot တည်ရဟိရာ သိုလဟောင်ရာသို့ လင့်ခ်ချိတ်ပါ။
DSharpPlus repository သို့ လင့်ခ်ချိတ်ပါ။
СпасОбПзавМОЌаМОе!

source: www.habr.com

မဟတ်ချက် Add