A’ cruthachadh bot Discord air .NET Core le cleachdadh gu frithealaiche VPS

A’ cruthachadh bot Discord air .NET Core le cleachdadh gu frithealaiche VPS

Halo Khabrovites!

An-diugh chì thu artaigil a sheallas dhut mar a chruthaicheas tu bot a’ cleachdadh C # air .NET Core agus mar a ruitheas tu e air frithealaiche iomallach.

Bidh an artaigil air a dhèanamh suas de chùl-fhiosrachadh, ìre ullachaidh, sgrìobhadh loidsig agus gluasad am bot gu frithealaiche iomallach.

Tha mi an dòchas gun cuidich an artaigil seo mòran de luchd-tòiseachaidh.

ro-eachdraidheil

Thòisich e uile air aon oidhche foghair gun chadal a chuir mi seachad air an t-seirbheisiche Discord. Bho chaidh mi còmhla ris o chionn ghoirid, thòisich mi ga sgrùdadh suas is sìos. An dèidh dhomh an sianal teacsa "Vacancies" a lorg, ghabh mi ùidh, dh'fhosgail mi e, agus lorg mi am measg nan tairgsean nach robh ùidh agam, is iad sin:

“Programaiche (leasaiche bot)
Riatanasan:

  • eòlas air cànanan prògramaidh;
  • comas air fèin-ionnsachadh.

Miannan:

  • comas còd dhaoine eile a thuigsinn;
  • eòlas air gnìomhachd DISCORD.

Gnìomhan:

  • leasachadh bot;
  • taic agus cumail suas an bot.

Do bhuannachd:

  • Cothrom taic agus buaidh a thoirt don phròiseact as toil leat;
  • A 'faighinn eòlas air a bhith ag obair ann an sgioba;
  • Cothrom na sgilean a th’ ann mu thràth a thaisbeanadh agus a leasachadh.


Thug seo ùidh dhomh sa bhad. Seadh, cha do phàigh iad airson na h-obrach seo, ach cha do dh'iarr iad dleastanasan sam bith ort, agus cha bhi e iomarcach sa phasgan. Mar sin, sgrìobh mi gu rianaire an fhrithealaiche, agus dh’ iarr e orm bot a sgrìobhadh a sheallas staitistig a’ chluicheadair ann an World of Tanks.

Ìre ullachaidh

A’ cruthachadh bot Discord air .NET Core le cleachdadh gu frithealaiche VPS
Discrod
Mus tòisich sinn a’ sgrìobhadh ar bot, feumaidh sinn a chruthachadh airson Discord. Feumaidh tu:

  1. Log a-steach gu cunntas Discord Ceangal
  2. Anns an taba “Iarrtasan”, cliog air a’ phutan “Iarrtas Ùr” agus ainmich am bot
  3. Faigh comharra bot le bhith a’ logadh a-steach don bhot agad agus lorg an taba “Bot” air an liosta “Settings”.
  4. Sàbhail an tòcan an àiteigin

wargaming

Cuideachd, feumaidh tu tagradh a chruthachadh ann an Wargaming gus faighinn gu Wargaming API. An seo, cuideachd, tha a h-uile dad sìmplidh:

  1. Log a-steach don chunntas Wargaming agad aig a ’cheangal seo
  2. Thèid sinn gu “Na h-iarrtasan agam” agus cliog air a’ phutan “Cuir tagradh ùr ris”, a’ toirt ainm an tagraidh agus a’ taghadh a sheòrsa
  3. A’ sàbhaladh ID an Iarrtais

bathar-bog

Tha saorsa roghainn ann mu thràth. Bidh cuideigin a 'cleachdadh Visual Studio, cuideigin Rider, tha cuideigin cumhachdach san fharsaingeachd, agus a' sgrìobhadh còd ann an Vim (às deidh a h-uile càil, chan eil prògraman fìor a 'cleachdadh ach am meur-chlàr, ceart?). Ach, gus nach cuir thu an API Discord an gnìomh, faodaidh tu an leabharlann C # neo-oifigeil “DSharpPlus” a chleachdadh. Faodaidh tu a stàladh an dàrna cuid bho NuGet, no le bhith a’ togail na stòran thu fhèin bhon stòr.

Dhaibhsan aig nach eil fios no a dhìochuimhnich mar a stàlaicheas iad tagraidhean bho NuGet.Stiùireadh airson lèirsinneach studio

  1. Rach gu Pròiseact tab - Stiùirich pacaidean NuGet;
  2. Cliog air an lèirmheas agus san raon sgrùdaidh cuir a-steach “DSharpPlus”;
  3. Tagh agus stàlaich frèam;
  4. BRATHADH!

Tha an ìre ullachaidh seachad, faodaidh tu a dhol air adhart gu bhith a’ sgrìobhadh am bot.

A ' sgrìobhadh logic

A’ cruthachadh bot Discord air .NET Core le cleachdadh gu frithealaiche VPS

Cha bheachdaich sinn air loidsig iomlan an tagraidh, cha sheall mi ach mar a dh’ obraicheas tu le eadar-ghabhail teachdaireachdan leis a ’bot, agus mar a dh’ obraicheas tu leis an Wargaming API.

Bidh a bhith ag obair leis a’ bot Discord a ’tachairt tron ​​​​ghnìomh async statach MainTask (sreang [] args);
Gus an gnìomh seo a ghairm, ann am Prìomh feumaidh tu clàradh

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

An ath rud, feumaidh tu do bot a thòiseachadh:

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

Càite a bheil comharradh do bot.
An uairsin, tron ​​​​lamda, bidh sinn a’ sgrìobhadh na h-òrdughan riatanach a bu chòir don bot a chuir an gnìomh:

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

Far a bheil e.Author.Username a’ faighinn far-ainm an neach-cleachdaidh.

San dòigh seo, nuair a chuireas tu teachdaireachd sam bith a thòisicheas le &, cuiridh am bot fàilte ort.

Aig deireadh na h-obrach seo, feumaidh tu sgrìobhadh feitheamh discord.ConnectAsync(); agus feitheamh ri Task.Delay(-1);

Leigidh seo leat òrdughan a chuir an gnìomh air a’ chùl gun a bhith a’ gabhail a’ phrìomh snàithlean.

A-nis feumaidh sinn dèiligeadh ris an Wargaming API. Tha a h-uile dad sìmplidh an seo - sgrìobh iarrtasan CURL, faigh freagairt ann an cruth sreang JSON, tarraing a-mach an dàta riatanach às an sin agus dèan làimhseachadh orra.

Eisimpleir de bhith ag obair le 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;
        }

Thoir an aire! Chan eilear a’ moladh a h-uile comharra agus ID tagraidh a stòradh ann an teacsa soilleir! Aig a 'char as lugha, tha Discord a' toirmeasg comharran mar sin nuair a thèid iad a-steach don lìonra air feadh an t-saoghail, agus aig a 'char as àirde, bidh am bot a' tòiseachadh air a chleachdadh le luchd-ionnsaigh.

Cuir gu VPS - frithealaiche

A’ cruthachadh bot Discord air .NET Core le cleachdadh gu frithealaiche VPS

Aon uair ‘s gu bheil thu deiseil leis a’ bot, feumaidh e a bhith air aoigheachd air frithealaiche a tha an-còmhnaidh a ’ruith 24/7. Tha seo air sgàth nuair a tha an tagradh agad a’ ruith, gu bheil am bot a’ ruith cuideachd. Cho luath ‘s a chuireas tu dheth an tagradh, tuitidh am bot agad na chadal cuideachd.

Tha mòran de luchd-frithealaidh VPS ann san t-saoghal seo, an dà chuid air Windows agus air Linux, ge-tà, sa mhòr-chuid de chùisean, tha e tòrr nas saoire aoigheachd a thoirt air Linux.

Air an t-seirbheisiche Discord, chaidh comhairle a thoirt dhomh vscale.io, agus chruthaich mi sa bhad frithealaiche brìgheil air Ubuntu air agus luchdaich mi suas am bot. Cha toir mi cunntas air mar a tha an làrach seo ag obair, ach thèid mi dìreach gu na roghainnean bot.

An toiseach, feumaidh tu am bathar-bog riatanach a stàladh a ruitheas ar bot sgrìobhte ann an .NET Core. Tha mar a nì thu e air a mhìneachadh an seo.

An ath rud, feumaidh tu am bot a luchdachadh suas gu seirbheis Git, mar GitHub agus an leithid, agus clone gu frithealaiche VPS, no luchdaich sìos am bot agad ann an dòighean eile. Thoir an aire nach bi agad ach consol, gun GUI. Idir idir.

Às deidh dhut am bot agad a luchdachadh sìos, feumaidh tu a ruith. Airson seo, feumaidh tu:

  • Thoir air ais a h-uile eisimeileachd: ath-nuadhachadh dotnet
  • Tog tagradh: dotnet build name_project.sln -c Release
  • Rach gu DLL togte;
  • ainm dotnet_of_file.dll

Mealaibh ur naidheachd! Tha am bot agad a’ ruith. Ach, gu mì-fhortanach, tha am bot a 'fuireach air a' chonsail, agus chan eil e cho furasta am frithealaiche VPS fhàgail. Cuideachd, air eagal gun tòisich frithealaiche ath-thòiseachadh, feumaidh tu am bot a thòiseachadh ann an dòigh ùr. Tha dòigh no dhà a-mach às an t-suidheachadh. Tha iad uile co-cheangailte ris an fhoillseachadh aig toiseach tòiseachaidh an fhrithealaiche:

  • Cuir sgriobt ruith ri /etc/init.d
  • Cruthaich seirbheis a ruitheas aig àm tòiseachaidh.

Chan eil mi a 'faicinn a' phuing a bhith a 'fuireach orra gu mionaideach, tha a h-uile dad air a mhìneachadh gu mionaideach air an eadar-lìon.

toraidhean

Tha mi toilichte gun do ghabh mi ris an obair seo. B’ e seo a’ chiad eòlas leasachaidh bot agam, agus tha mi toilichte gun d’ fhuair mi eòlas ùr ann an C #, agus ag obair le Linux.

Ceangal gu frithealaiche Discord. Airson an fheadhainn a tha a 'cluich Wargaming geamannan.
Ceangal ris an stòr far a bheil am bot Discord suidhichte.
Ceangal gu stòr DSharpPlus.
Спасибо за внимание!

Source: www.habr.com

Cuir beachd ann