Fausiaina o le Discord bot i luga o le .NET Core ma le faʻapipiʻiina i le VPS server

Fausiaina o le Discord bot i luga o le .NET Core ma le faʻapipiʻiina i le VPS server

Talofa Khabrovites!

I aso nei o le a e vaʻai i se tusiga o le a faʻaali atu ia te oe le auala e fai ai se bot e faʻaaoga ai le C # i luga ole .NET Core ma le auala e faʻatautaia ai i luga ole server mamao.

O le tusiga o le a aofia ai se talaaga, se laasaga sauniuni, tusitusi manatu ma fesiitai le bot i se server mamao.

Ou te faʻamoemoe o le a fesoasoani lenei tusiga i le tele o tagata amata.

prehistory

Na amata uma i se tasi po o le tautoulu e leai se moe na ou faʻaaluina i luga o le server Discord. Talu ai sa ou auai talu ai nei ia te ia, sa amata ona ou suesue ia te ia i luga ma lalo. I le mauaina o le laina tusitusiga "Vacancies", na ou fiafia, tatalaina, ma maua i totonu o ofo e le fiafia ia te aʻu, o mea nei:

"Fa'apolokalame (botant developer)
Manaoga:

  • malamalama i gagana polokalame;
  • tomai mo le aoaoina e le tagata lava ia.

Moomooga:

  • mafai ona malamalama i tulafono a isi tagata;
  • malamalama i galuega a le DISCORD.

Galuega:

  • atinae bot;
  • lagolago ma le tausiga o le bot.

O lou manuia:

  • Avanoa e lagolago ma fa'aosofia le poloketi e te fiafia i ai;
  • Mauaina o le poto masani i le galue i se 'au;
  • Avanoa e fa'aalia ma fa'aleleia tomai o iai.


O lenei mea na vave ona ou fiafia i ai. Ioe, latou te leʻi totogiina lenei galuega, ae latou te leʻi manaʻomia soʻo se noataga mai ia te oe, ma o le a le sili atu i le faila. O le mea lea, na ou tusi atu ai i le server admin, ma na ia fai mai ia te aʻu e tusi se bot e faʻaalia ai fuainumera a le tagata taalo i le World of Tanks.

Tapenaga sauniuni

Fausiaina o le Discord bot i luga o le .NET Core ma le faʻapipiʻiina i le VPS server
Discrod
Ae tatou te leʻi amata tusia la tatou bot, e tatau ona tatou fatuina mo Discord. E te mana'omia:

  1. Ulufale i le Discord account fesoʻotaʻiga
  2. I le "Applications" tab, kiliki i le "New Application" button ma faaigoa le bot
  3. Maua se faʻailoga bot e ala i le saini i totonu o lau bot ma suʻe le "Bot" tab i le lisi "Settings".
  4. Faasaoina le faailoga i se mea

Tauaʻi

E le gata i lea, e tatau ona e fatuina se talosaga i Wargaming e maua ai le avanoa i le Wargaming API. O iinei foi, e faigofie mea uma:

  1. Ulufale i lau Wargaming account i lenei sootaga
  2. Matou te alu i le "My Applications" ma kiliki i le "Add a new application" button, tuʻuina atu le igoa o le talosaga ma filifili lona ituaiga
  3. Faasaoina le ID Talosaga

polokalama

Ua uma ona iai le saolotoga e filifili ai. E faʻaaogaina e se tasi le Visual Studio, o se tasi Rider, o se tasi e masani ona malosi, ma tusia le code i Vim (pe a uma, o tagata fai polokalame moni e faʻaaogaina naʻo le piano, saʻo?). Ae ui i lea, ina ia le faʻaaogaina le Discord API, e mafai ona e faʻaogaina le faletusi C # le aloaia "DSharpPlus". E mafai ona e faʻapipiʻi mai NuGet, poʻo le fausiaina o punaoa oe lava mai le fale teu oloa.

Mo i latou e le iloa pe ua galo pe faʻafefea ona faʻapipiʻi tusi talosaga mai NuGet.Faatonuga mo Visual Studio

  1. Alu i le tab Project - Pulea NuGet Packages;
  2. Kiliki i luga o le iloiloga ma i totonu o le fanua suʻesuʻe ulufale i le "DSharpPlus";
  3. Filifili ma faapipii auivi;
  4. TUPE MAUA!

Ua maeʻa le laasaga sauniuni, e mafai ona e faʻaauau le tusiaina o le bot.

Fa'atonuga tusitusi

Fausiaina o le Discord bot i luga o le .NET Core ma le faʻapipiʻiina i le VPS server

Matou te le mafaufau i le faʻaogaina atoa o le talosaga, o le a naʻo le faʻaalia o le auala e galue ai ma le faʻalavelaveina o feʻau e le bot, ma le auala e galue ai ma le Wargaming API.

O le galue ma le Discord bot e tupu i le static async Task MainTask(string[] args);
Ina ia valaau lenei galuega, i le Main e tatau ona e lesitala

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

Le isi, e tatau ona e amataina lau bot:

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

O fea le fa'ailoga o le fa'ailoga a lau bot.
Ona, e ala i le lambda, matou te tusia tulafono talafeagai e tatau ona faia e le bot:

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

O fea e maua ai e.Author.Username le igoa tauvalaau o le tagata fa'aoga.

I lenei auala, pe a e lafoina soʻo se feʻau e amata i le &, o le a faʻafeiloaʻi oe e le bot.

I le faaiuga o lenei galuega, e tatau ona e tusi faatali discord.ConnectAsync(); ma fa'atali Galuega.Tuai(-1);

O lenei mea o le a faʻatagaina oe e faʻatino poloaiga i tua e aunoa ma le faʻaogaina o le filo autu.

Ole taimi nei e tatau ona tatou feagai ma le Wargaming API. E faigofie mea uma iinei - tusi talosaga CURL, maua se tali i le tulaga o se manoa JSON, toso ese mai faʻamatalaga talafeagai mai iina ma fai togafiti i luga.

O se faʻataʻitaʻiga o le galue ma 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;
        }

Fa'alogo! E matua le fautuaina e teu uma faʻailoga ma ID faʻaoga i tusitusiga manino! I se tulaga maualalo, Discord faʻasaina ia faʻailoga pe a latou ulufale atu i le lalolagi atoa, ma i le maualuga, o le bote amata ona faʻaaogaina e tagata osofaʻi.

Fa'asoa ile VPS - server

Fausiaina o le Discord bot i luga o le .NET Core ma le faʻapipiʻiina i le VPS server

O le taimi lava e te faia ai le bot, e manaʻomia le talimalo i luga o se 'auʻaunaga o loʻo faʻaauau pea 24/7. E mafua ona o le mea moni pe a faʻagasolo lau talosaga, o loʻo tamoe foi le bot. O le taimi lava e te tapeina ai le talosaga, e moe foi lau bot.

E tele sapalai VPS o loʻo i ai i lenei lalolagi, i luga o Windows ma luga o Linux, peitaʻi, i le tele o tulaga, e sili atu le taugofie le talimalo i Linux.

I luga o le Discord server, na fautuaina aʻu vscale.io, ma na vave ona ou fatuina se server virtual i luga o le Ubuntu ma faʻapipiʻi le bot. O le a ou le faʻamatalaina pe faʻafefea ona galue lenei 'upega tafaʻilagi, ae o le a alu saʻo i le faʻatulagaina o bot.

Muamua lava, e te manaʻomia le faʻapipiʻiina o le polokalama talafeagai e faʻatautaia ai le matou bot na tusia i le .NET Core. O le auala e fai ai o loʻo faʻamatalaina iinei.

O le isi, e manaʻomia le tuʻuina atu o le bot i le Git service, pei o GitHub ma isi mea, ma faʻapipiʻi i se VPS server, pe download lau bot i isi auala. Faamolemole ia matau o le a na'o lau fa'amafanafanaga, leai se GUI. O na uma lava.

A maeʻa ona e siiina lau bot, e tatau ona e taʻavale. Mo lenei mea, e te manaʻomia:

  • Toe fa'afo'i uma fa'alagolago: dotnet restore
  • Fausia le talosaga: dotnet fausia name_project.sln -c Fa'asa'oloto
  • Alu ile fausiaina DLL;
  • dotnet name_of_file.dll

Fa'afetai! O lo'o tamo'e lau bot. Ae ui i lea, o le bot, o le mea e leaga ai, o loʻo nofoia le faʻamafanafanaga, ma e le faigofie ona alu ese mai le VPS server. E le gata i lea, i le tulaga o se server restart, e tatau ona e amataina le bot i se auala fou. E lua auala e alu ese ai mai le tulaga. O ia mea uma e fesoʻotaʻi ma le faʻalauiloaina i le amataga o le server:

  • Fa'aopoopo le fa'asologa fa'asologa i /etc/init.d
  • Fausia se 'auʻaunaga o le a tamoʻe ile amataga.

Ou te le o vaʻavaʻai i le mea e mafaufau ai i latou i auiliiliga, o mea uma o loʻo faʻamatalaina i auiliiliga i luga ole Initaneti.

sailiiliga

Ua ou fiafia ua ou tauaveina lenei tofiga. O la'u uluai poto i le atina'eina o bot, ma ua ou fiafia ua ou maua se malamalama fou ile C #, ma galue ma Linux.

So'oga ile 'au'aunaga o Discord. Mo i latou e taaalo i taaloga Wargaming.
Feso'ota'i i le fale teu oloa o lo'o i ai le Discord bot.
So'oga i le fale teu oloa DSharpPlus.
Faafetai mo lau gauai!

puna: www.habr.com

Faaopoopo i ai se faamatalaga