Ho theha Discord bot ho .NET Core ka ho isoa ho seva sa VPS

Ho theha Discord bot ho .NET Core ka ho isoa ho seva sa VPS

Hello Khabrovites!

Kajeno u tla bona sehlooho se tla u bontša mokhoa oa ho etsa bot ho sebelisa C # ho .NET Core le mokhoa oa ho e tsamaisa ho seva se hōle.

Sengoloa se tla ba le semelo, sethala sa ho itokisa, ho ngola logic le ho fetisetsa bot ho seva se hole.

Ke tšepa hore sehlooho sena se tla thusa ba bangata ba qalang.

prehistory

Tsohle li qalile bosiung bo le bong bo sa robaleng ba hoetla boo ke ileng ka bo qeta ho seva sa Discord. Kaha ke sa tsoa kopanela le eena, ke ile ka qala ho ithuta le eena ho ea holimo le tlaase. Ha ke se ke fumane mocha oa mongolo "Vacancies", ke ile ka thahasella, ka e bula, 'me ka fumana har'a litlhahiso tse sa kang tsa nkhahla, tsena ke:

"Moqapi (moetsi oa bot)
Litlhokahalo:

  • tsebo ea lipuo tsa mananeo;
  • bokgoni ba ho ithuta ka bowena.

Litakatso:

  • bokhoni ba ho utloisisa khoutu ea batho ba bang;
  • tsebo ea tšebetso ea DISCORD.

Mesebetsi:

  • ntshetsopele ya bot;
  • tšehetso le tlhokomelo ea bot.

Molemo oa hau:

  • Monyetla oa ho tšehetsa le ho susumetsa morero oo u o ratang;
  • Ho fumana boiphihlelo ba ho sebetsa sehlopheng;
  • Monyetla oa ho bontša le ho ntlafatsa litsebo tse teng.


Sena se ile sa nkhahla hang-hang. E, ha baa ka ba lefa bakeng sa mosebetsi ona, empa ha baa ka ba batla boitlamo leha e le bofe ho uena, 'me e ke ke ea e-ba ntho e sa hlokahaleng ka har'a potefolio. Ka hona, ke ile ka ngolla mookameli oa seva, 'me o ile a nkōpa hore ke ngole bot e tla bontša lipalo-palo tsa sebapali ho World of Tanks.

Mehato ea ho itokisa

Ho theha Discord bot ho .NET Core ka ho isoa ho seva sa VPS
Discrod
Pele re qala ho ngola bot ea rona, re hloka ho e etsetsa Discord. U hloka:

  1. Kena ho akhaonto ea Discord link tsa
  2. Ho "Likopo", tobetsa konopo ea "New Application" 'me u rehe bot
  3. Fumana letšoao la bot ka ho kena ka har'a bot ea hau le ho fumana "Bot" lethathamong la "Litlhophiso"
  4. Boloka letšoao kae-kae

Ho loana

Hape, o hloka ho theha sesebelisoa ho Wargaming ho fumana phihlello ho Wargaming API. Mona, hape, tsohle li bonolo:

  1. Kena ho akhaonto ea hau ea Wargaming ka sehokelo sena
  2. Re ea ho "Likopo Tsa Ka" ebe o tobetsa konopo ea "Eketsa sesebelisoa se secha", e fanang ka lebitso la kopo ebe o khetha mofuta oa eona.
  3. Ho boloka ID ea Kopo

Software

Ho se ho ntse ho e-na le bolokolohi ba ho ikhethela. Motho e mong o sebelisa Visual Studio, motho e mong Rider, motho e mong ka kakaretso o na le matla, 'me o ngola khoutu ka Vim (ka mor'a moo, baetsi ba mananeo ba sebele ba sebelisa keyboard feela, na?). Leha ho le joalo, e le hore u se ke ua kenya ts'ebetsong Discord API, u ka sebelisa laebrari e sa tloaelehang ea C # "DSharpPlus". U ka e kenya ho tsoa ho NuGet, kapa ka ho iketsetsa mehloli ea hau ho tsoa sebakeng sa polokelo.

Bakeng sa ba sa tsebeng kapa ba lebetse ho kenya lits'ebetso ho tsoa ho NuGet.Litaelo tsa Visual Studio

  1. Eya ho tab Project - Laola NuGet Packages;
  2. Tobetsa ho tlhahlobo 'me tšimong ea ho batla kenya "DSharpPlus";
  3. Khetha le ho kenya moralo;
  4. ETSAHALA!

Mohato oa ho itokisa o felile, o ka tsoela pele ho ngola bot.

Mokhoa oa ho ngola

Ho theha Discord bot ho .NET Core ka ho isoa ho seva sa VPS

Re ke ke ra nahana ka mohopolo o felletseng oa ts'ebeliso, ke tla bonts'a feela mokhoa oa ho sebetsa ka ho ts'oaroa ha melaetsa ke bot, le mokhoa oa ho sebetsa le Wargaming API.

Ho sebetsa le Discord bot ho etsahala ka static async Task MainTask(string[] args);
Ho letsetsa ts'ebetso ena, ho Main o hloka ho ingolisa

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

E latelang, o hloka ho qala bot ea hau:

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

Letshwao la bot la hao le hokae.
Ebe, ka lambda, re ngola litaelo tse hlokahalang tseo bot e lokelang ho li phetha:

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

Moo e.Author.Lebitso la mosebedisi le fumanang lebitso la mosebedisi.

Ka tsela ena, ha o romella molaetsa ofe kapa ofe o qalang ka &, bot e tla u lumelisa.

Qetellong ea ts'ebetso ena, o tlameha ho ngola o emetse discord.ConnectAsync(); le ho emela Mosebetsi.Ditieho(-1);

Sena se tla u lumella ho phethahatsa litaelo ka morao ntle le ho nka khoele e kholo.

Hona joale re hloka ho sebetsana le Wargaming API. Ntho e 'ngoe le e' ngoe e bonolo mona - ngola likōpo tsa CURL, fumana karabo ka mokhoa oa khoele ea JSON, ntša lintlha tse hlokahalang ho tloha moo 'me u li etse bolotsana.

Mohlala oa ho sebetsa 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;
        }

Ela hloko! Ha ho khothalletsoe ho boloka li-tokens tsohle le li-ID tsa kopo ka mongolo o hlakileng! Bonyane, Discord e thibela li-tokens tse joalo ha li kena marang-rang a lefats'e, 'me ka tekanyo e phahameng, bot e qala ho sebelisoa ke bahlaseli.

E fetisetsa ho VPS - seva

Ho theha Discord bot ho .NET Core ka ho isoa ho seva sa VPS

Ha u se u qetile ka bot, e hloka ho ts'oaroa ho seva e lulang e sebetsa 24/7. Sena se bakoa ke taba ea hore ha kopo ea hau e ntse e sebetsa, bot le eona e ea sebetsa. Hang ha o tima ts'ebeliso, bot ea hau le eona e ea khaleha.

Li-server tse ngata tsa VPS li teng lefatšeng lena, ho Windows le ho Linux, leha ho le joalo, maemong a mangata, ho theko e tlase haholo ho amohela Linux.

Ho seva sa Discord, ke ile ka eletsoa vscale.io, 'me hang-hang ke ile ka theha seva ea sebele ho Ubuntu ho eona' me ka kenya bot. Nke ke ka hlalosa hore na sebaka sena se sebetsa joang, empa se tla ea ka kotloloho ho litlhophiso tsa bot.

Pele ho tsohle, o hloka ho kenya software e hlokahalang e tla tsamaisa bot ea rona e ngotsoeng ho .NET Core. Mokhoa oa ho e etsa o hlalositsoe mona.

Ka mor'a moo, o hloka ho kenya bot ho tšebeletso ea Git, joaloka GitHub le tse ling tse joalo, 'me u e kopanye le seva sa VPS, kapa u khoasolle bot ea hau ka litsela tse ling. Ka kopo hlokomela hore u tla ba le console feela, ha ho na GUI. Ho hang.

Ka mor'a hore u khoasolle bot ea hau, u lokela ho e tsamaisa. Ho etsa sena, o hloka:

  • Khutlisa lintho tsohle tse its'etlehang: khutlisetsa dotnet
  • Haha kopo: dotnet build name_project.sln -c Release
  • Eya ho a haha ​​DLL;
  • dotnet name_of_file.dll

Kea u babatsa! Bot ea hau ea sebetsa. Leha ho le joalo, bot, ka bomalimabe, e lula console, 'me ha ho bonolo ho tsoa ho seva sa VPS. Hape, haeba seva se qala bocha, o tla tlameha ho qala bot ka tsela e ncha. Ho na le mekhoa e 'meli ea ho tsoa maemong. Kaofela ha tsona li amana le ho qala ha seva e qala:

  • Kenya run script ho /etc/init.d
  • Theha tšebeletso e tla sebetsa qalong.

Ha ke bone ntlha ea ho lula holim'a bona ka ho qaqileng, ntho e 'ngoe le e' ngoe e hlalosoa ka ho lekaneng ho Internet.

fumanoeng ke

Ke thabela hore ebe ke ile ka amohela kabelo ena. Ena e bile boiphihlelo ba ka ba pele ba nts'etsopele ea bot, 'me ke thabetse hore ebe ke fumane tsebo e ncha ho C #, le ho sebetsa le Linux.

Sehokelo ho seva sa Discord. Bakeng sa ba bapalang lipapali tsa Wargaming.
Sehokela sebakeng sa polokelo moo Discord bot e leng teng.
Kopana le polokelo ea DSharpPlus.
Kea le leboha ka tlhokomelo ea hau!

Source: www.habr.com

Eketsa ka tlhaloso