Ke hana ʻana i kahi bot Discord ma .NET Core me ka hoʻoili ʻana i kahi kikowaena VPS

Ke hana ʻana i kahi bot Discord ma .NET Core me ka hoʻoili ʻana i kahi kikowaena VPS

Aloha Khabrovites!

I kēia lā e ʻike ʻoe i kahi ʻatikala e hōʻike ana iā ʻoe pehea e hana ai i kahi bot me ka hoʻohana ʻana iā C# ma .NET Core a pehea e holo ai ma kahi kikowaena mamao.

Aia ka ʻatikala i kahi kāʻei kua, kahi pae hoʻomākaukau, kākau i ka loiloi a me ka hoʻoili ʻana i ka bot i kahi kikowaena mamao.

Manaʻo wau e kōkua kēia ʻatikala i nā poʻe hoʻomaka.

prehistory

Ua hoʻomaka ʻia i hoʻokahi pō hiamoe ʻole aʻu i hoʻohana ai ma ka server Discord. Mai koʻu hui pū ʻana me ia, ua hoʻomaka wau e aʻo iā ia i luna a i lalo. I ka loaʻa ʻana o ke kahawai kikokikona "Vacancies", lilo wau i hoihoi, wehe ʻia, a loaʻa i waena o nā makana i makemake ʻole iaʻu, penei:

"Ka mea papahana (mea hoʻomohala bot)
Manaʻo:

  • ʻike i nā ʻōlelo papahana;
  • hiki ke aʻo iā ia iho.

Makemake:

  • hiki ke hoʻomaopopo i ke code o nā poʻe ʻē aʻe;
  • ʻike i ka hana DISCORD.

Nā Kūlana:

  • hoʻomohala bot;
  • kākoʻo a mālama i ka bot.

ʻO kāu pōmaikaʻi:

  • ʻO ka manawa kūpono e kākoʻo a hoʻoikaika i ka papahana āu e makemake ai;
  • Loaʻa ka ʻike no ka hana ʻana i kahi hui;
  • ʻO ka manawa kūpono e hōʻike a hoʻomaikaʻi i nā mākau i loaʻa.


Ua hoihoi koke keia ia'u. ʻAe,ʻaʻole lākou i uku no kēia hana, akā,ʻaʻole lākou i koi i nā kuleana mai iāʻoe, aʻaʻole ia e hoʻonui i ka waihona. No laila, ua kākau wau i ke kikowaena kikowaena, a ua noi ʻo ia iaʻu e kākau i kahi bot e hōʻike i nā helu helu o ka mea pāʻani ma World of Tanks.

Ke kauʻana

Ke hana ʻana i kahi bot Discord ma .NET Core me ka hoʻoili ʻana i kahi kikowaena VPS
Discrod
Ma mua o ka hoʻomaka ʻana e kākau i kā mākou bot, pono mākou e hana ia no Discord. Pono ʻoe:

  1. E komo i ka mooolelo Discord loulou
  2. Ma ka "Applications" tab, kaomi i ka pihi "New Application" a kapa i ka bot
  3. E kiʻi i kahi hōʻailona bot ma ke komo ʻana i kāu bot a loaʻa i ka pā "Bot" ma ka papa inoa "Settings".
  4. E mālama i ka hōʻailona ma kahi

ʻO ka hoʻolālā

Eia kekahi, pono ʻoe e hana i kahi noi ma Wargaming e kiʻi ai i ka Wargaming API. Eia kekahi, maʻalahi nā mea a pau:

  1. E komo i kāu moʻokāki Wargaming ma keia loulou
  2. Hele mākou i "My Applications" a kaomi i ka pihi "Add a new application", e hāʻawi i ka inoa o ka noi a koho i kona ʻano.
  3. E mālama ana i ka ID noi

lako polokalamu

Aia ke kūʻokoʻa koho. Hoʻohana kekahi i ka Visual Studio, ʻo Rider kekahi, ʻoi aku ka ikaika o kekahi, a kākau i ke code ma Vim (ma hope o nā mea āpau, hoʻohana nā mea polokalamu maoli i ka keyboard, ʻaʻole?). Eia naʻe, i ʻole e hoʻokō i ka Discord API, hiki iā ʻoe ke hoʻohana i ka waihona C # ʻole "DSharpPlus". Hiki iā ʻoe ke hoʻouka iā ia mai NuGet, a i ʻole ke kūkulu ʻana i nā kumu iā ʻoe iho mai ka waihona.

No ka poʻe ʻike ʻole a poina paha pehea e hoʻokomo ai i nā noi mai NuGet.Nā kuhikuhi no Visual Studio

  1. E hele i ka papa Project - Manage NuGet Packages;
  2. Kaomi ma ka loiloi a ma ka kahua huli e komo i "DSharpPlus";
  3. E koho a hoʻokomo i ka hoʻolālā;
  4. POMAIKAI!

Ua pau ka pae hoʻomākaukau, hiki iā ʻoe ke hoʻomau i ke kākau ʻana i ka bot.

Ke kākau moʻolelo

Ke hana ʻana i kahi bot Discord ma .NET Core me ka hoʻoili ʻana i kahi kikowaena VPS

ʻAʻole mākou e noʻonoʻo i ka loiloi holoʻokoʻa o ka noi, e hōʻike wale wau pehea e hana ai me ka interception o nā memo e ka bot, a pehea e hana ai me ka Wargaming API.

Ke hana nei me ka Discord bot ma o ka static async Task MainTask(string[] args);
No ke kāhea ʻana i kēia hana, ma Main pono ʻoe e hoʻopaʻa inoa

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

A laila, pono ʻoe e hoʻomaka i kāu bot:

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

Aia ma hea ka hōʻailona o kāu bot.
A laila, ma o ka lambda, kākau mākou i nā kauoha e pono ai ka bot e hoʻokō:

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

Kahi e.Author.Username e loaʻa ai ka inoa kapakapa o ka mea hoʻohana.

Ma kēia ala, ke hoʻouna ʻoe i kekahi memo e hoʻomaka me &, e aloha ka bot iā ʻoe.

I ka pau ʻana o kēia hana, pono ʻoe e kākau a kali discord.ConnectAsync(); a kali i ka Task.Delay(-1);

E ʻae kēia iā ʻoe e hoʻokō i nā kauoha ma ke kua me ka ʻole e lawe i ka pae nui.

I kēia manawa pono mākou e hana me ka Wargaming API. Maʻalahi nā mea a pau ma aneʻi - kākau i nā noi CURL, loaʻa kahi pane ma ke ʻano o kahi kaula JSON, huki i ka ʻikepili pono mai laila a hana i nā manipulations ma luna o lākou.

He laʻana o ka hana ʻana me 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;
        }

Nānā! ʻAʻole ʻōlelo ʻia e mālama i nā hōʻailona āpau a me nā ID noi ma kahi kikokikona maʻalahi! Ma ka liʻiliʻi loa, pāpā ʻo Discord i nā hōʻailona i ka wā e komo ai lākou i ka pūnaewele puni honua, a ma ka palena nui, hoʻomaka ka bot e hoʻohana ʻia e nā mea hoʻouka.

Hoʻopili i VPS - kikowaena

Ke hana ʻana i kahi bot Discord ma .NET Core me ka hoʻoili ʻana i kahi kikowaena VPS

Ke pau ʻoe me ka bot, pono e hoʻokipa ʻia ma kahi kikowaena e holo mau ana 24/7. Ma muli o ka holo ʻana o kāu noi, ke holo pū nei ka bot. Ke hoʻopau ʻoe i ka noi, e hiamoe pū kāu bot.

Nui nā kikowaena VPS i kēia ao, ma Windows a ma Linux, akā naʻe, ma ka hapa nui, ʻoi aku ka maʻalahi o ka hoʻokipa ma Linux.

Ma ke kikowaena Discord, ua ʻōlelo ʻia au iā vscale.io, a ua hana koke wau i kahi kikowaena virtual ma Ubuntu ma luna a hoʻouka i ka bot. ʻAʻole wau e wehewehe i ka hana ʻana o kēia pūnaewele, akā e hele pololei i nā hoʻonohonoho bot.

ʻO ka mea mua, pono ʻoe e hoʻokomo i ka polokalamu pono e holo i kā mākou bot i kākau ʻia ma .NET Core. Pehea e hana ai, ua wehewehe ʻia ma aneʻi.

A laila, pono ʻoe e hoʻouka i ka bot i kahi lawelawe Git, e like me GitHub a me nā mea like, a clone iā ia i kahi kikowaena VPS, a i ʻole e hoʻoiho i kāu bot ma nā ʻano ʻē aʻe. E ʻoluʻolu e loaʻa iā ʻoe kahi console wale nō, ʻaʻohe GUI. I nā mea āpau.

Ma hope o kāu hoʻoiho ʻana i kāu bot, pono ʻoe e holo. No kēia, pono ʻoe:

  • Hoʻihoʻi i nā mea hilinaʻi a pau: hoʻihoʻi dotnet
  • Hana i ka palapala noi: dotnet build name_project.sln -c Hoʻokuʻu
  • E hele i ka DLL i kūkulu ʻia;
  • dotnet name_of_file.dll

Hoʻomaikaʻi! Ke holo nei kāu bot. Eia naʻe, ʻo ka bot, ʻaʻole naʻe, noho i ka console, a ʻaʻole maʻalahi ke haʻalele i ka kikowaena VPS. Eia kekahi, inā hoʻomaka hou kahi kikowaena, pono ʻoe e hoʻomaka i ka bot ma kahi ala hou. Aia ʻelua mau ala i waho o ke kūlana. Ua pili lākou a pau i ka hoʻomaka ʻana i ka hoʻomaka ʻana o ka server:

  • Hoʻohui i ka palapala holo i /etc/init.d
  • E hana i kahi lawelawe e holo i ka hoʻomaka.

ʻAʻole wau i ʻike i ke ʻano o ka noho ʻana ma luna o lākou i ka kikoʻī, ua wehewehe ʻia nā mea āpau i ka kikoʻī ma ka Pūnaewele.

haʻina

Hauʻoli wau i koʻu lawe ʻana i kēia hana. ʻO kēia kaʻu ʻike hoʻomohala bot mua, a hauʻoli wau i ka loaʻa ʻana o ka ʻike hou ma C #, a me ka hana pū me Linux.

loulou i ke kikowaena Discord. No ka poʻe e pāʻani nei i nā pāʻani Wargaming.
E loulou i ka waihona kahi i loaʻa ai ka bot Discord.
Ka loulou i ka waihona DSharpPlus.
Nā mea hou aku!

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka