Bot Discord a chruthú ar .NET Core agus é a imscaradh chuig freastalaí VPS

Bot Discord a chruthú ar .NET Core agus é a imscaradh chuig freastalaí VPS

Dia duit Khabrovites!

Inniu feicfidh tú alt a thaispeánfaidh duit conas bot a chruthú ag baint úsáide as C # ar .NET Core agus conas é a rith ar fhreastalaí cianda.

Beidh an t-alt comhdhéanta de chúlra, céim ullmhúcháin, scríobh loighic agus aistriú an bot chuig freastalaí iargúlta.

Tá súil agam go gcabhróidh an t-alt seo le go leor tosaitheoirí.

réamhstair

Thosaigh sé ar fad ar oíche fhómhair gan chodladh a chaith mé ar an bhfreastalaí Discord. Ó chuaigh mé isteach leis le déanaí, thosaigh mé ag déanamh staidéir air suas agus síos. Tar éis dom an cainéal téacs "Folúntais" a aimsiú, chuir mé suim ann, d'oscail mé é, agus fuair mé i measc na dtairiscintí nach raibh spéis agam iontu, is iad seo:

" Ríomhchláraitheoir (forbróir bot)
Riachtanais:

  • eolas ar theangacha ríomhchlárúcháin;
  • cumas le haghaidh féinfhoghlama.

Пожелания:

  • cumas chun cód daoine eile a thuiscint;
  • eolas ar fheidhmiúlacht DISCORD.

Tascanna:

  • forbairt bot;
  • tacaíocht agus cothabháil an bot.

Do shochar:

  • Deis chun tacú leis an tionscadal is mian leat agus tionchar a imirt air;
  • Taithí a fháil ar oibriú i bhfoireann;
  • Deis scileanna reatha a léiriú agus a fheabhsú.


Chuir sé seo suim agam láithreach. Sea, níor íoc siad as an obair seo, ach níor iarr siad aon oibleagáidí ort, agus ní bheidh sé iomarcach sa phunann. Mar sin, scríobh mé chuig riarthóir an fhreastalaí, agus d'iarr sé orm bot a scríobh a thaispeánfaidh staitisticí an imreora i World of Tanks.

An chéim ullmhúcháin

Bot Discord a chruthú ar .NET Core agus é a imscaradh chuig freastalaí VPS
Discrod
Sula dtosaímid ag scríobh ár bot, ní mór dúinn é a chruthú le haghaidh Discord. Ag teastáil uait:

  1. Logáil isteach sa chuntas Discord по ссылке
  2. Sa chluaisín "Iarratais", cliceáil ar an gcnaipe "Iarratas Nua" agus ainmnigh an bot
  3. Faigh comhartha bot trí logáil isteach i do bot agus aimsigh an táb “Bot” sa liosta “Socruithe”.
  4. Sábháil an comhartha áit éigin

Wargaming

Chomh maith leis sin, ní mór duit feidhmchlár a chruthú in Wargaming chun rochtain a fháil ar Wargaming API. Anseo, freisin, tá gach rud simplí:

  1. Logáil isteach i do chuntas Wargaming ag an nasc seo
  2. Téim go dtí "Mo Iarratais" agus cliceáil ar an gcnaipe "Cuir feidhmchlár nua leis", ag tabhairt ainm an fheidhmchláir agus ag roghnú a chineál
  3. Aitheantas an Fheidhmchláir a shábháil

bogearraí

Tá saoirse rogha ann cheana féin. Úsáideann duine éigin Visual Studio, duine éigin Rider, tá duine éigin cumhachtach go ginearálta, agus scríobhann cód i Vim (tar éis an tsaoil, ní úsáideann ríomhchláraitheoirí fíor ach an méarchlár, ceart?). Mar sin féin, ionas nach gcuirfear an API Discord i bhfeidhm, is féidir leat an leabharlann neamhoifigiúil C# “DSharpPlus” a úsáid. Is féidir leat é a shuiteáil ó NuGet, nó trí na foinsí a thógáil tú féin ón stór.

Dóibh siúd nach bhfuil a fhios acu nó a bhfuil dearmad déanta acu ar conas feidhmchláir ó NuGet a shuiteáil.Treoracha le haghaidh Stiúideo amhairc

  1. Téigh go dtí an Tionscadal tab - Bainistigh Pacáistí NuGet;
  2. Cliceáil ar an léirmheas agus sa réimse cuardaigh cuir isteach “DSharpPlus”;
  3. Roghnaigh agus suiteáil creat;
  4. PROFIT!

Tá an chéim ullmhúcháin thart, is féidir leat dul ar aghaidh chuig an bot a scríobh.

Loighic a scríobh

Bot Discord a chruthú ar .NET Core agus é a imscaradh chuig freastalaí VPS

Ní mheasfaimid loighic iomlán an iarratais, ní thaispeánfaidh mé ach conas a bheith ag obair le hidircheapadh teachtaireachtaí ag an bot, agus conas a bheith ag obair leis an Wargaming API.

Tarlaíonn oibriú leis an bot Discord trí na hailt MainTask (teaghrán[]) Tasc async statach;
Chun an fheidhm seo a ghlaoch, in Main ní mór duit clárú

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

Ansin, ní mór duit do bot a thosú:

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

Cá bhfuil an comhartha mar chomhartha do bot.
Ansin, tríd an lambda, scríobhaimid na horduithe riachtanacha ba chóir don bot a fhorghníomhú:

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

Áit a bhfuil e.Author.Username ag fáil leasainm an úsáideora.

Ar an mbealach seo, nuair a sheolann tú aon teachtaireacht a thosaíonn le &, beannóidh an bot duit.

Ag deireadh na feidhme seo, ní mór duit scríobh ag fanacht discord.ConnectAsync(); agus ag fanacht ar Task.Moill(-1);

Tabharfaidh sé seo deis duit orduithe a fhorghníomhú sa chúlra gan dul i mbun an phríomhshnáithe.

Anois ní mór dúinn déileáil leis an Wargaming API. Tá gach rud simplí anseo - scríobh iarratais CURL, faigh freagra i bhfoirm teaghrán JSON, tarraing na sonraí riachtanacha as sin agus déan ionramhálacha orthu.

Sampla de bheith 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;
        }

Aird! Ní mholtar go dian gach comhartha agus aitheantas feidhmchláir a stóráil i dtéacs soiléir! Ar a laghad, cuireann Discord cosc ​​ar chomharthaí den sórt sin nuair a théann siad isteach sa líonra domhanda, agus ar a mhéad, tosaíonn ionsaitheoirí an bot a úsáid.

Imscaradh chuig VPS - freastalaí

Bot Discord a chruthú ar .NET Core agus é a imscaradh chuig freastalaí VPS

Nuair a bheidh tú críochnaithe leis an bot, ní mór é a óstáil ar fhreastalaí a bhíonn ag rith 24/7 i gcónaí. Tá sé seo mar gheall ar an bhfíric go bhfuil an bot ag rith freisin nuair a bhíonn d'iarratas ar siúl. A luaithe agus a mhúchann tú an feidhmchlár, titeann do bot ina chodladh freisin.

Tá go leor freastalaithe VPS ann sa saol seo, ar Windows agus ar Linux araon, áfach, i bhformhór na gcásanna, tá sé i bhfad níos saoire a óstáil ar Linux.

Ar an bhfreastalaí Discord, cuireadh comhairle orm vscale.io, agus chruthaigh mé freastalaí fíorúil ar Ubuntu láithreach air agus d'uaslódáil mé an bot. Ní dhéanfaidh mé cur síos ar conas a oibríonn an suíomh seo, ach rachaidh mé díreach chuig na socruithe bot.

Ar an gcéad dul síos, ní mór duit na bogearraí riachtanacha a shuiteáil a reáchtálfaidh ár bot scríofa i .NET Core. Tá cur síos anseo ar conas é a dhéanamh.

Ansin, ní mór duit an bot a uaslódáil chuig seirbhís Git, cosúil le GitHub agus a leithéidí, agus é a chlónáil chuig freastalaí VPS, nó do bot a íoslódáil ar bhealaí eile. Tabhair faoi deara le do thoil nach mbeidh agat ach consól, gan aon GUI. Ar chor ar bith.

Tar éis duit do bot a íoslódáil, ní mór duit é a rith. Chun seo, ní mór duit:

  • Athchóirigh gach spleáchas: athchóiriú dotnet
  • Iarratas a thógáil: dotnet build name_project.sln -c Scaoileadh
  • Téigh go dtí an dll tógtha;
  • ainm dotnet_of_file.dll

Comhghairdeachas! Tá do bot ag rith. Mar sin féin, áitíonn an bot, ar an drochuair, an consól, agus níl sé éasca an freastalaí VPS a fhágáil. Chomh maith leis sin, i gcás freastalaí a atosú, beidh ort an bot a thosú ar bhealach nua. Tá cúpla bealach amach as an gcás. Tá baint acu go léir leis an seoladh ag am tosaithe an fhreastalaí:

  • Cuir script rith le /etc/init.d
  • Cruthaigh seirbhís a reáchtálfar ag am tosaithe.

Ní fheicim go mion an pointe cónaithe orthu, déantar cur síos go leor mionsonraithe ar gach rud ar an Idirlíon.

Torthaí

Tá áthas orm gur ghlac mé leis an tasc seo. Ba é seo mo chéad taithí forbartha bot, agus tá áthas orm go bhfuair mé eolas nua i C #, agus ag obair le Linux.

Nasc le freastalaí Discord. Dóibh siúd a imríonn cluichí Wargaming.
Nasc leis an stór ina bhfuil an bot Discord suite.
Nasc le stór DSharpPlus.
Go raibh maith agat as bhur n-aire!

Foinse: will.com

Add a comment