Mamorona bot Discord amin'ny .NET Core miaraka amin'ny fametrahana amin'ny mpizara VPS

Mamorona bot Discord amin'ny .NET Core miaraka amin'ny fametrahana amin'ny mpizara VPS

Salama Khabrovites!

Androany ianao dia hahita lahatsoratra iray izay hampiseho aminao ny fomba hamoronana bot amin'ny fampiasana C# amin'ny .NET Core sy ny fomba fampandehanana azy amin'ny mpizara lavitra.

Ny lahatsoratra dia ahitana fototra, dingana fanomanana, fanoratana lojika ary famindrana ny bot amin'ny mpizara lavitra.

Manantena aho fa hanampy beginners maro ity lahatsoratra ity.

prehistory

Nanomboka tamin'ny alin'ny fararano tsy nisy torimaso izay nandaniako tamin'ny mpizara Discord izany rehetra izany. Hatramin'ny nidirana taminy vao haingana, dia nanomboka nianatra azy aho. Rehefa nahita ny fantsona lahatsoratra "Vacancies" aho dia nanjary liana, nanokatra izany ary nahita ny tolotra izay tsy nahaliana ahy, dia ireto:

"Programmer (mpamolavola bot)
fepetra takiana:

  • fahalalana ny fiteny fandaharana;
  • fahaizana mianatra samirery.

Maniry:

  • fahaizana mahatakatra ny kaodin'ny hafa;
  • fahalalana momba ny fiasa DISCORD.

tanjona:

  • fampandrosoana bot;
  • fanohanana sy fikojakojana ny bot.

Ny tombontsoanao:

  • Fahafahana manohana sy mitaona ny tetikasa tianao;
  • Mahazo traikefa miasa amin'ny ekipa;
  • Fahafahana maneho sy manatsara ny fahaiza-manao efa misy.


Nahaliana ahy avy hatrany izany. Eny, tsy nandoa an'io asa io izy ireo, saingy tsy nitaky adidy taminao izy ireo, ary tsy ho tafahoatra izany ao amin'ny portfolio. Noho izany, nanoratra tany amin'ny admin server aho, ary nasainy nanoratra bot izay hampiseho ny antontan'isa momba ny mpilalao ao amin'ny World of Tanks.

Fiomanana miomana

Mamorona bot Discord amin'ny .NET Core miaraka amin'ny fametrahana amin'ny mpizara VPS
Discrod
Alohan'ny hanombohantsika manoratra ny bot dia mila mamorona azy ho an'ny Discord isika. Ilainao:

  1. Midira amin'ny kaonty Discord rohy
  2. Ao amin'ny tabilao "Applications", tsindrio ny bokotra "Applications Vaovao" ary lazao ny bot
  3. MakΓ  mari-pamantarana bot amin'ny alΓ lan'ny fidirana ao amin'ny botanao ary tadiavo ny tabilao "Bot" ao amin'ny lisitry ny "Settings".
  4. Tehirizo any ho any ny famantarana

wargaming

Ary koa, mila mamorona fampiharana amin'ny Wargaming ianao mba hahazoana fidirana amin'ny API Wargaming. Eto koa dia tsotra ny zava-drehetra:

  1. Midira ao amin'ny kaontinao Wargaming amin'ity rohy ity
  2. Mandehana any amin'ny "My Applications" izahay ary tsindrio ny bokotra "Add a new application", manome ny anaran'ny rindranasa ary misafidy ny karazana azy.
  3. Mitahiry ny ID Application

Software

Efa misy ny fahalalahana misafidy. Misy mampiasa Visual Studio, olona Rider, olona matanjaka amin'ny ankapobeny, ary manoratra kaody ao amin'ny Vim (raha ny marina, ny tena mpandrindra fandaharana dia tsy mampiasa afa-tsy ny klavier, sa tsy izany?). Na izany aza, mba tsy hampiharana ny Discord API dia azonao ampiasaina ny tranomboky C# tsy ofisialy "DSharpPlus". Azonao atao ny mametraka izany na avy amin'ny NuGet, na amin'ny fananganana loharano avy amin'ny tahiry.

Ho an'ireo izay tsy mahalala na nanadino ny fomba fametrahana rindranasa avy amin'ny NuGet.TorolΓ lana ho an'ny Visual Studio

  1. Mandehana any amin'ny tabilao Project - Manage NuGet Packages;
  2. Tsindrio ny famerenana ary ao amin'ny sehatry ny fikarohana midira ny "DSharpPlus";
  3. Misafidiana ary mametraka rafitra;
  4. MAHASOA!

Tapitra ny dingana fanomanana, afaka miroso amin'ny fanoratana ny bot ianao.

Lojika fanoratana

Mamorona bot Discord amin'ny .NET Core miaraka amin'ny fametrahana amin'ny mpizara VPS

Tsy hojerentsika ny lojika manontolo amin'ny fampiharana, hasehoko fotsiny ny fomba fiasa amin'ny fisakanana ny hafatra avy amin'ny bot, ary ny fomba fiasa miaraka amin'ny Wargaming API.

Ny fiasana amin'ny bot Discord dia mitranga amin'ny alΓ lan'ny Task MainTask async static (string[] args);
Raha hiantso an'io fiasa io ianao dia mila misoratra anarana ao amin'ny Main

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

Manaraka, mila manomboka ny bot ianao:

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

Aiza no misy ny token'ny bot-nao.
Avy eo, amin'ny alΓ lan'ny lambda, dia manoratra ireo baiko ilaina izay tokony hotanterahin'ny bot:

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

Aiza no ahazoan'ny e.Author.Username ny anaram-bositra.

Amin'izany fomba izany, rehefa mandefa hafatra manomboka amin'ny & ianao, dia hiarahaba anao ny bot.

Amin'ny faran'ity asa ity dia tsy maintsy manoratra miandry ny discord.ConnectAsync(); ary miandry ny Asa. Fahatarana (-1);

Izany dia ahafahanao manatanteraka baiko ao ambadika nefa tsy maka ny loha-hevitra.

Ankehitriny dia mila miatrika ny Wargaming API isika. Tsotra ny zava-drehetra eto - manorata fangatahana CURL, mahazo valiny amin'ny endriky ny tady JSON, esory ny angon-drakitra ilaina ary manaova manipulations amin'izy ireo.

Ohatra iray amin'ny fiaraha-miasa amin'ny 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;
        }

Attention! Tsy soso-kevitra ny hitahiry ny famantarana rehetra sy ny ID fampiharana amin'ny lahatsoratra mazava! Farafaharatsiny, mandrara ny famantarana toy izany ny Discord rehefa miditra amin'ny tambajotra manerantany, ary amin'ny fara-tampony dia manomboka ampiasain'ny mpanafika ny bot.

Apetraho amin'ny VPS - mpizara

Mamorona bot Discord amin'ny .NET Core miaraka amin'ny fametrahana amin'ny mpizara VPS

Raha vantany vao vita ny bot dia mila fampiantranoana amin'ny mpizara izay mandeha tsy tapaka 24/7. Izany dia noho ny zava-misy fa rehefa mandeha ny fampiharanao dia mandeha ihany koa ny bot. Raha vao vonoinao ny fampiharana dia renoky ny torimaso koa ny bot-nao.

Mpizara VPS maro no misy eto amin'ity tontolo ity, na amin'ny Windows na amin'ny Linux, na izany aza, amin'ny ankamaroan'ny tranga dia mora kokoa ny mampiantrano amin'ny Linux.

Ao amin'ny mpizara Discord, nanoro hevitra aho vscale.io, ary avy hatrany dia namorona mpizara virtoaly ao amin'ny Ubuntu aho ary nampiakatra ny bot. Tsy hamariparitra ny fomba fiasan'ity tranokala ity aho, fa handeha mivantana amin'ny fikandrana bot.

Voalohany indrindra, mila mametraka ny rindrambaiko ilaina ianao izay hampandeha ny botsika voasoratra ao amin'ny .NET Core. Ny fomba hanaovana izany dia voalaza eto.

Avy eo, mila mampakatra ny bot amin'ny serivisy Git ianao, toa an'i GitHub sy ny toy izany, ary clone izany amin'ny mpizara VPS, na misintona ny bot anao amin'ny fomba hafa. Mariho fa console ihany no hanananao, tsy misy GUI. Na izany aza.

Rehefa avy nisintona ny bot ianao dia mila mihazakazaka izany. Mba hanaovana izany dia mila:

  • Avereno ny fiankinana rehetra: dotnet restore
  • Fampiharana fananganana: dotnet build name_project.sln -c Release
  • Mandehana any amin'ny DLL naorina;
  • dotnet name_of_file.dll

Arahabaina! Mihazakazaka ny bot-nao. Na izany aza, ny bot, indrisy, dia mitana ny console, ary tsy mora ny miala amin'ny mpizara VPS. Ary koa, raha toa ka misy restart ny mpizara dia tsy maintsy manomboka ny bot amin'ny fomba vaovao ianao. Misy fomba roa hialana amin'ilay toe-javatra. Ireo rehetra ireo dia mifandraika amin'ny fanombohana amin'ny fanombohan'ny server:

  • Ampio script run amin'ny /etc/init.d
  • Mamorona serivisy izay handeha amin'ny fanombohana.

Tsy hitako ny teboka amin'ny firesahana amin'izy ireo amin'ny antsipiriany, ny zava-drehetra dia voafaritra amin'ny antsipiriany ampy amin'ny Internet.

hitany

Faly aho fa nandray io asa io. Ity no traikefako voalohany amin'ny fampandrosoana bot, ary faly aho fa nahazo fahalalana vaovao momba ny C #, ary niasa tamin'ny Linux.

Rohy mankany amin'ny mpizara Discord. Ho an'ireo izay milalao lalao Wargaming.
Rohy mankany amin'ny tahiry misy ny bot Discord.
Rohy mankany amin'ny tahiry DSharpPlus.
Fidio ny Fiteninao

Source: www.habr.com

Add a comment