Kupanga Discord bot pa .NET Core ndikutumiza ku seva ya VPS

Kupanga Discord bot pa .NET Core ndikutumiza ku seva ya VPS

Moni Khabrovites!

Lero mudzawona nkhani yomwe ikuwonetsani momwe mungapangire bot pogwiritsa ntchito C # pa .NET Core ndi momwe mungayendetsere pa seva yakutali.

Nkhaniyi idzakhala ndi maziko, gawo lokonzekera, kulemba zomveka komanso kusamutsa bot ku seva yakutali.

Ndikukhulupirira kuti nkhaniyi ithandiza ambiri oyamba kumene.

prehistory

Zonse zidayamba usiku umodzi wopanda tulo wophukira womwe ndidakhala pa seva ya Discord. Popeza ndinagwirizana naye posachedwapa, ndinayamba kumuphunzira mokweza ndi pansi. Nditapeza njira yolembera "Vacancies", ndidakondwera, ndikutsegula, ndikupeza zomwe sizinandisangalatse, ndi izi:

"Pulogalamu (wopanga bot)
Zofunikira:

  • chidziwitso cha zilankhulo zamapulogalamu;
  • luso lodziphunzira.

ОТ:

  • Kutha kumvetsetsa malamulo a anthu ena;
  • kudziwa magwiridwe antchito a DISCORD.

Ntchito:

  • kukula kwa bot;
  • kuthandizira ndi kukonza bot.

Phindu lanu:

  • Mwayi wothandizira ndi kukopa polojekiti yomwe mumakonda;
  • Kupeza luso logwira ntchito mu timu;
  • Mwayi wowonetsa ndikuwongolera maluso omwe alipo.


Zimenezi zinandisangalatsa nthawi yomweyo. Inde, sanakulipire ntchito imeneyi, koma sanakufunireni udindo uliwonse, ndipo sizikhala zochulukirapo pazambiri. Chifukwa chake, ndidalembera woyang'anira seva, ndipo adandipempha kuti ndilembe bot yomwe iwonetsa ziwerengero za osewera mu World of Tanks.

Gawo lokonzekera

Kupanga Discord bot pa .NET Core ndikutumiza ku seva ya VPS
Discrod
Tisanayambe kulemba bot yathu, tiyenera kuyipangira Discord. Mufunika:

  1. Lowani ku akaunti ya Discord kugwirizana
  2. Pagawo la "Mapulogalamu", dinani batani la "New Application" ndikutchula bot
  3. Pezani chizindikiro cha bot polowa mu bot yanu ndikupeza tabu ya "Bot" pamndandanda wa "Zikhazikiko"
  4. Sungani chizindikiro penapake

Nkhondo

Komanso, muyenera kupanga pulogalamu mu Wargaming kuti mupeze Wargaming API. Apanso, zonse ndi zophweka:

  1. Lowani ku akaunti yanu ya Wargaming pa link iyi
  2. Timapita ku "Mapulogalamu Anga" ndikudina batani la "Onjezani pulogalamu yatsopano", ndikupatseni dzina la pulogalamuyo ndikusankha mtundu wake.
  3. Kusunga ID ya Application

mapulogalamu

Pali kale ufulu wosankha. Wina amagwiritsa ntchito Visual Studio, wina Rider, wina amakhala wamphamvu, ndipo amalemba ma code mu Vim (pambuyo pake, opanga mapulogalamu enieni amagwiritsa ntchito kiyibodi yokha, sichoncho?). Komabe, kuti musagwiritse ntchito Discord API, mutha kugwiritsa ntchito laibulale yosavomerezeka ya C # "DSharpPlus". Mutha kuyiyika kuchokera ku NuGet, kapena pomanga magwero anu kuchokera kumalo osungirako.

Kwa iwo omwe sakudziwa kapena ayiwala kukhazikitsa mapulogalamu kuchokera ku NuGet.Malangizo a Visual Studio

  1. Pitani ku tabu Project - Sinthani Phukusi la NuGet;
  2. Dinani pazowunikirazo ndipo m'munda wosakira lowetsani "DSharpPlus";
  3. Sankhani ndi kukhazikitsa chimango;
  4. ZIMENE MUNGACHITE!

Gawo lokonzekera latha, mutha kupitiliza kulemba bot.

Kulemba logic

Kupanga Discord bot pa .NET Core ndikutumiza ku seva ya VPS

Sitidzalingalira malingaliro onse a pulogalamuyi, ndingosonyeza momwe ndingagwiritsire ntchito ndi kusokoneza mauthenga ndi bot, ndi momwe mungagwiritsire ntchito ndi Wargaming API.

Kugwira ntchito ndi Discord bot kumachitika kudzera pa static async Task MainTask(chingwe[] args);
Kuti muyitane ntchitoyi, mu Main muyenera kulembetsa

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

Kenako, muyenera kuyambitsa bot yanu:

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

Pomwe chizindikiro chiri chizindikiro cha boti yanu.
Kenako, kudzera pa lambda, timalemba malamulo ofunikira omwe bot ayenera kuchita:

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

Pomwe e.Author.Username akupeza dzina la wogwiritsa ntchito.

Mwanjira iyi, mukatumiza uthenga uliwonse womwe umayamba ndi &, bot ikupatsani moni.

Pamapeto pa ntchitoyi, muyenera kulemba await discord.ConnectAsync(); ndi kuyembekezera Ntchito.Kuchedwa (-1);

Izi zikuthandizani kuti mupereke malamulo kumbuyo popanda kutenga ulusi waukulu.

Tsopano tiyenera kuthana ndi Wargaming API. Chilichonse ndi chosavuta apa - lembani zopempha za CURL, pezani yankho mumtundu wa chingwe cha JSON, tulutsani zofunikira kuchokera pamenepo ndikuwongolera.

Chitsanzo chogwira ntchito ndi 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;
        }

Chenjerani! Sitikulimbikitsidwa kusunga ma tokeni onse ndi ma ID ogwiritsira ntchito momveka bwino! Pang'ono ndi pang'ono, Discord imaletsa zizindikiro zotere zikalowa pa intaneti padziko lonse lapansi, ndipo pamtunda waukulu, bot imayamba kugwiritsidwa ntchito ndi otsutsa.

Pitani ku VPS - seva

Kupanga Discord bot pa .NET Core ndikutumiza ku seva ya VPS

Mukamaliza ndi bot, imayenera kuchitidwa pa seva yomwe ikuyenda nthawi zonse 24/7. Izi ndichifukwa choti pulogalamu yanu ikayamba, bot imagwiranso ntchito. Mukangoyimitsa pulogalamuyi, bot yanu nayonso imagona.

Ma seva ambiri a VPS alipo padziko lapansi pano, pa Windows ndi pa Linux, komabe, nthawi zambiri, ndizotsika mtengo kwambiri kuchititsa Linux.

Pa seva ya Discord, ndinalangizidwa vscale.io, ndipo nthawi yomweyo ndinapanga seva yeniyeni pa Ubuntu pa izo ndikuyika bot. Sindidzalongosola momwe tsamba ili limagwirira ntchito, koma ndipita molunjika ku makonzedwe a bot.

Choyamba, muyenera kukhazikitsa pulogalamu yofunikira yomwe idzayendetsa bot yathu yolembedwa mu .NET Core. Momwe mungachitire izo zafotokozedwa apa.

Kenako, muyenera kukweza bot ku ntchito ya Git, monga GitHub ndi zina zotero, ndikuyifanizira ku seva ya VPS, kapena tsitsani bot yanu mwanjira zina. Chonde dziwani kuti mudzakhala ndi console yokha, palibe GUI. Ayi.

Mukatsitsa bot yanu, muyenera kuyendetsa. Kwa izi, muyenera:

  • Bwezerani zonse zodalira: dotnet kubwezeretsa
  • Pangani ntchito: dotnet build name_project.sln -c Release
  • Pitani ku DLL yomangidwa;
  • dotnet name_of_file.dll

Zabwino zonse! Boti yanu ikuyenda. Komabe, bot, mwatsoka, imakhala ndi console, ndipo sikophweka kutuluka pa seva ya VPS. Komanso, ngati seva iyambiranso, muyenera kuyambitsa bot mwanjira yatsopano. Pali njira zingapo zochotsera vutoli. Zonsezi zikugwirizana ndi kukhazikitsidwa kwa seva:

  • Onjezani run script ku /etc/init.d
  • Pangani ntchito yomwe idzayambike poyambitsa.

Sindikuwona mfundo yokhazikika pa iwo mwatsatanetsatane, zonse zimafotokozedwa mwatsatanetsatane pa intaneti.

anapezazo

Ndine wokondwa kuti ndinayamba ntchito imeneyi. Ichi chinali chochitika changa choyamba cha chitukuko cha bot, ndipo ndine wokondwa kuti ndapeza chidziwitso chatsopano mu C #, ndikugwira ntchito ndi Linux.

Lumikizani ku seva ya Discord. Kwa iwo omwe amasewera masewera a Wargaming.
Lumikizani kunkhokwe komwe Discord bot ili.
Lumikizani ku chosungira cha DSharpPlus.
Zikomo chifukwa cha chidwi chanu!

Source: www.habr.com

Kuwonjezera ndemanga