Kugadzira Discord bot pa.NET Core nekutumirwa kune VPS server

Kugadzira Discord bot pa.NET Core nekutumirwa kune VPS server

Mhoro Khabrovites!

Nhasi uchaona chinyorwa chichakuratidza kuti ungagadzira sei bot uchishandisa C # pa.NET Core uye kuti ungaifambisa sei pane imwe nzvimbo iri kure.

Chinyorwa chacho chichava nechekumashure, nhanho yekugadzirira, kunyora pfungwa uye kuendesa bot kune iri kure server.

Ndinovimba kuti chinyorwa ichi chichabatsira vakawanda vanotanga.

prehistory

Izvo zvese zvakatanga pane imwe yekusarara yekuvhuvhuta husiku hwandakapedza paDiscord server. Sezvo ndakamukumbanira nguva pfupi yapfuura, ndakavamba kumufunda ndichikwira nokudzika. Ndawana chiteshi chemavara "Vacancies", ndakafarira, ndikavhura, uye ndikawana pakati pezvipo izvo zvisina kundifarira, izvi ndezvi:

"Programmer (bot developer)
Zvinotarisirwa:

  • ruzivo rwemitauro yekuronga;
  • kugona kuzvidzidzira.

ОТ:

  • kukwanisa kunzwisisa kodhi yevamwe vanhu;
  • ruzivo rweDISCORD mashandiro.

Mabasa:

  • bot development;
  • kutsigirwa uye kuchengetedza bot.

Zvaunobatsira:

  • Mukana wekutsigira uye kufurira chirongwa chaunoda;
  • Kuwana ruzivo rwekushanda muchikwata;
  • Mukana wekuratidza nekuvandudza hunyanzvi huripo.


Izvi zvakabva zvandifadza. Hongu, havana kubhadharira basa iri, asi havana kukumbira chero zvisungo kubva kwauri, uye hazvizove zvakawandisa mune portfolio. Naizvozvo, ndakanyorera server server, uye akandikumbira kuti ndinyore bot icharatidza manhamba emutambi muWorld of Tanks.

Gadziriro yekugadzirira

Kugadzira Discord bot pa.NET Core nekutumirwa kune VPS server
Discrod
Tisati tatanga kunyora bot yedu, tinoda kuigadzira yeDiscord. Unoda:

  1. Pinda kuDiscord account batanidzo
  2. Mu "Applications" tab, tinya pa "New Application" bhatani uye utumidze bot
  3. Tora chiratidzo chebhoti nekupinda mubhoti rako uye nekutsvaga "Bot" tebhu mune "Zvirongwa" runyorwa.
  4. Chengetedza chiratidzo pane imwe nzvimbo

Wargaming

Zvakare, iwe unofanirwa kugadzira application muWargaming kuti uwane mukana weWargaming API. Pano, zvakare, zvese zviri nyore:

  1. Pinda kune yako Wargaming account ne link iyi
  2. Isu tinoenda ku "Zvikumbiro Zvangu" uye tinya pane "Wedzera nyowani application" bhatani, ichipa zita rekushandisa uye kusarudza mhando yayo.
  3. Kuchengetedza ID yekushandisa

Software

Panotova nerusununguko rwekusarudza. Mumwe munhu anoshandisa Visual Studio, mumwe munhu Rider, mumwe munhu anowanzo ane simba, uye anonyora kodhi muVim (mushure mezvose, vanogadzira chaivo vanoshandisa keyboard chete, handiti?). Nekudaro, kuti usaite iyo Discord API, unogona kushandisa iyo isina pamutemo C# raibhurari "DSharpPlus". Unogona kuimisa kungave kubva kuNuGet, kana nekuvaka masosi iwe pachako kubva kune repository.

Kune avo vasingazive kana kukanganwa maitiro ekuisa maapplication kubva kuNuGet.Mirayiridzo yeVisual Studio

  1. Enda kune iyo tab Project - Manage NuGet Packages;
  2. Dzvanya pakuongorora uye mumunda wekutsvaga pinda "DSharpPlus";
  3. Sarudza uye isa chimiro;
  4. Purofiti!

Nhanho yekugadzirira yapera, unogona kuenderera mberi nekunyora bot.

Kunyora pfungwa

Kugadzira Discord bot pa.NET Core nekutumirwa kune VPS server

Isu hatizotarise iyo logic yese yechishandiso, ini ndinongoratidza maitiro ekushanda pamwe nekubvunzurudzwa kwemameseji ne bot, uye maitiro ekushanda neWargaming API.

Kushanda neDiscord bot kunoitika kuburikidza neiyo static async Task MainTask(tambo[] args);
Kuti ufonere basa iri, mune Main unofanirwa kunyoresa

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

Zvadaro, unofanira kutanga bot yako:

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

Ndekupi chiratidzo chebhoti rako.
Zvadaro, kuburikidza ne lambda, tinonyora mirairo inodiwa iyo bot inofanira kuita:

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

Apo e.Author.Zita rekushandisa riri kuwana remadunhurirwa remushandisi.

Nenzira iyi, paunotumira chero meseji inotanga ne &, iyo bot ichakukwazisa.

Pakupera kwebasa iri, unofanira kunyora wakamirira discord.ConnectAsync(); uye kumirira Basa.Kunonoka(-1);

Izvi zvinokutendera kuti uite mirairo kumashure usingatore tambo huru.

Iye zvino tinoda kubata neWargaming API. Zvese zviri nyore pano - nyora zvikumbiro zveCURL, wana mhinduro muchimiro chetambo yeJSON, buritsa data rinodiwa kubva ipapo uye uite manipulations pavari.

Muenzaniso wekushanda neWargamingAPI

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;
        }

Attention! Izvo zvakanyanya hazvikurudzirwe kuchengetedza zvese tokeni uye maID ID mune yakajeka mavara! Pazvishoma, Discord inorambidza zviratidzo zvakadaro pavanopinda munyika yose, uye pamwero mukuru, bot inotanga kushandiswa nevanorwisa.

Isa kuVPS - server

Kugadzira Discord bot pa.NET Core nekutumirwa kune VPS server

Paunenge wapedza ne bot, inoda kugarwa pane sevha inogara ichimhanya 24/7. Izvi zvinokonzerwa nekuti kana application yako iri kushanda, bot iri kushandawo. Paunongodzima application, bot yako inorarawo.

Masevha mazhinji eVPS aripo munyika ino, ese paWindows uye paLinux, zvisinei, kazhinji, zvakachipa zvakanyanya kubata paLinux.

PaDiscord server, ndakarairwa vscale.io, uye ini ndakabva ndagadzira sevha chaiyo paUbuntu pairi ndokuisa bot. Ini handisi kuzotsanangura kuti saiti ino inoshanda sei, asi ichaenda yakananga kune bot marongero.

Chokutanga pane zvose, unoda kuisa software inodiwa iyo inomhanya bot yedu yakanyorwa mu.NET Core. Maitiro ekuzviita anotsanangurwa pano.

Tevere, iwe unofanirwa kurodha bot kuGit sevhisi, seGitHub uye nezvimwe, uye kuigadzira kune VPS server, kana kurodha bot yako nedzimwe nzira. Ndokumbira utarise kuti iwe uchange uine koni chete, hapana GUI. Zvachose.

Mushure mekunge warodha bot yako, unofanirwa kuimhanyisa. Nokuda kweizvi, unoda:

  • Dzosera zvese zvinotsamira: dotnet dzorera
  • Vaka application: dotnet kuvaka zita_project.sln -c Release
  • Enda kune yakavakwa DLL;
  • dotnet name_of_file.dll

Makorokoto! Bot yako iri kushanda. Nekudaro, iyo bot, zvinosuruvarisa, inogara iyo console, uye hazvisi nyore kubuda iyo VPS server. Zvakare, kana sevha inotangazve, iwe uchafanirwa kutanga bot nenzira itsva. Pane nzira mbiri dzekubuda mumamiriro acho ezvinhu. Ese ane hukama nekuvhurwa kwesevha yekutanga:

  • Wedzera runza script ku /etc/init.d
  • Gadzira sevhisi inozotanga pakutanga.

Ini handisi kuona pfungwa yekugara pavari zvakadzama, zvese zvinotsanangurwa zvizere zvakakwana paInternet.

zvakawanikwa

Ndinofara kuti ndakatora basa iri. Ichi chaive chiitiko changu chekutanga chekuvandudza bot, uye ndinofara kuti ndakawana ruzivo rutsva muC #, uye kushanda neLinux.

Batanidza kuDiscord server. Kune avo vanotamba Wargaming games.
Batanidza kune repository uko Discord bot iripo.
Batanidza kune DSharpPlus repository.
Бпасибо за вниманиС!

Source: www.habr.com

Voeg