Ṣiṣẹda Discord bot lori .NET Core pẹlu imuṣiṣẹ si olupin VPS kan

Ṣiṣẹda Discord bot lori .NET Core pẹlu imuṣiṣẹ si olupin VPS kan

Kaabo, awọn olugbe Khabrovsk!

Loni iwọ yoo ka nkan kan ti yoo sọ fun ọ bi o ṣe le ṣẹda bot nipa lilo C # lori NET Core, ati bii o ṣe le ṣiṣẹ lori olupin latọna jijin.

Nkan naa yoo ni abẹlẹ, ipele igbaradi, ọgbọn kikọ ati gbigbe bot si olupin latọna jijin.

Mo nireti pe nkan yii yoo ran ọpọlọpọ awọn olubere lọwọ.

prehistory

Gbogbo rẹ bẹrẹ ni alẹ Igba Irẹdanu Ewe ti ko ni oorun, eyiti Mo lo lori olupin Discord. Níwọ̀n bí mo ti dara pọ̀ mọ́ ọn láìpẹ́ yìí, mo bẹ̀rẹ̀ sí kẹ́kọ̀ọ́ rẹ̀ nínú àti lóde. Lẹhin ti o ti ṣe awari ikanni ọrọ “Awọn aye”, Mo nifẹ, ṣi i, ati rii laarin awọn ipese ti ko nifẹ mi, eyi:

“Olùgbéejáde (bot Olùgbéejáde)
Awọn ibeere:

  • imọ ti awọn ede siseto;
  • agbara lati kọ ẹkọ ti ara ẹni.

Awọn ifẹ:

  • agbara lati ni oye awọn miiran eniyan koodu;
  • imọ ti iṣẹ DISCORD.

Awọn iṣẹ-ṣiṣe:

  • idagbasoke bot;
  • atilẹyin ati itọju bot.

Anfani rẹ:

  • Anfani lati ṣe atilẹyin ati ni ipa lori iṣẹ akanṣe ti o fẹ;
  • Nini iriri ṣiṣẹ ni ẹgbẹ kan;
  • Anfani lati ṣafihan ati ilọsiwaju awọn ọgbọn ti o wa tẹlẹ. ”


Eyi lesekese ru iwulo mi. Bẹẹni, wọn ko sanwo fun iṣẹ yii, ṣugbọn wọn ko beere eyikeyi awọn adehun lati ọdọ rẹ, ati pe kii yoo jẹ ailagbara ninu apo-iṣẹ rẹ. Nitorinaa Mo kọwe si alabojuto olupin, o beere lọwọ mi lati kọ bot kan ti yoo ṣafihan awọn iṣiro ẹrọ orin ni Agbaye ti Awọn tanki.

Ipele igbaradi

Ṣiṣẹda Discord bot lori .NET Core pẹlu imuṣiṣẹ si olupin VPS kan
Dabọ
Ṣaaju ki a to bẹrẹ kikọ bot wa, a nilo lati ṣẹda rẹ fun Discord. O nilo:

  1. Buwolu wọle si Discord iroyin asopọ
  2. Ninu taabu “Awọn ohun elo”, tẹ bọtini “Ohun elo Tuntun” ki o lorukọ bot
  3. Gba ami ami bot kan nipa wíwọlé sinu bot rẹ ati wiwa taabu “Bot” ni atokọ “Eto”.
  4. Fi ami naa pamọ si ibikan

Ijiyan

Paapaa, o nilo lati ṣẹda ohun elo kan ni Wargaming lati ni iraye si API Wargaming. Ohun gbogbo tun rọrun nibi:

  1. Buwolu wọle si rẹ Wargaming iroyin nipasẹ ọna asopọ yii
  2. Lọ si “Awọn ohun elo mi” ki o tẹ bọtini “Fi ohun elo tuntun kun”, fifun orukọ ohun elo ati yiyan iru rẹ
  3. Nfipamọ ID ohun elo

software

Ominira yiyan ti wa tẹlẹ. Diẹ ninu awọn lo Visual Studio, diẹ ninu awọn Rider, diẹ ninu awọn lagbara ni gbogbogbo, ati kọ koodu ni Vim (lẹhinna, awọn pirogirama gidi lo keyboard nikan, otun?). Sibẹsibẹ, lati yago fun imuse Discord API, o le lo ile-ikawe C # laigba aṣẹ “DsharpPlus”. O le fi sii boya lati NuGet, tabi nipa gbigba awọn orisun funrararẹ lati ibi ipamọ.

Fun awọn ti ko mọ tabi ti gbagbe bi o ṣe le fi awọn ohun elo sori ẹrọ lati NuGet.Awọn ilana fun Visual Studio

  1. Lọ si taabu Project - Ṣakoso awọn akopọ NuGet;
  2. Tẹ lori atunyẹwo ati tẹ “DSharpPlus” ni aaye wiwa;
  3. Yan ati fi sori ẹrọ ni ilana;
  4. Frè!

Ipele igbaradi ti pari, o le tẹsiwaju si kikọ bot kan.

Ogbon kikọ

Ṣiṣẹda Discord bot lori .NET Core pẹlu imuṣiṣẹ si olupin VPS kan

A kii yoo wo gbogbo ọgbọn ohun elo; Emi yoo kan fihan ọ bi o ṣe le ṣiṣẹ pẹlu kikọlu bot ti awọn ifiranṣẹ ati bii o ṣe le ṣiṣẹ pẹlu API Wargaming.

Nṣiṣẹ pẹlu Discord bot waye nipasẹ iṣẹ-ṣiṣe async aimi MainTask (okun [] args);
Lati pe iṣẹ yii, ni Akọkọ o nilo lati kọ

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

Nigbamii, o nilo lati bẹrẹ bot rẹ:

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

Nibo ni àmi jẹ àmi bot rẹ.
Lẹhinna, ni lilo lambda, a kọ awọn aṣẹ pataki ti bot yẹ ki o ṣiṣẹ:

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

Nibo e.Author.Orukọ olumulo – gbigba orukọ apeso olumulo.

Ni ọna yii, nigbati o ba firanṣẹ eyikeyi ifiranṣẹ ti o bẹrẹ pẹlu &, bot yoo kí ọ.

Ni ipari iṣẹ yii, o nilo lati kọ await discord.ConnectAsync (); ki o si duro de Task.Delay (-1);

Eyi yoo gba awọn aṣẹ laaye lati ṣiṣẹ ni abẹlẹ laisi gbigbe okun akọkọ.

Bayi o nilo lati loye Wargaming API. Ohun gbogbo rọrun nibi - kọ awọn ibeere CURL, gba esi ni irisi okun JSON kan, yọ data pataki lati ibẹ ki o ṣe afọwọyi.

Apeere ti ṣiṣẹ pẹlu 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;
        }

Ifarabalẹ! O ti wa ni muna ko niyanju lati fi gbogbo àmi ati ohun elo ID ni ko o ọrọ! Ni o kere ju, Discord fi ofin de iru awọn ami bẹ nigbati wọn ba wọle si oju opo wẹẹbu Wide Agbaye; ni o pọju, bot bẹrẹ lati lo nipasẹ awọn ikọlu.

Ran lọ si olupin VPS

Ṣiṣẹda Discord bot lori .NET Core pẹlu imuṣiṣẹ si olupin VPS kan

Ni kete ti o ba ti ṣe pẹlu bot, o nilo lati gbalejo lori olupin ti o nṣiṣẹ nigbagbogbo 24/7. Eyi jẹ nitori otitọ pe nigbati ohun elo rẹ nṣiṣẹ, bot tun nṣiṣẹ. Ni kete ti o ba pa ohun elo naa, bot rẹ lọ sun.

Ọpọlọpọ awọn olupin VPS wa ni agbaye yii, mejeeji lori Windows ati Lainos, ṣugbọn ni ọpọlọpọ igba, o jẹ din owo pupọ lati gbalejo lori Lainos.

Lori olupin Discord wọn ṣeduro vscale.io si mi, ati pe Mo ṣẹda olupin foju kan lẹsẹkẹsẹ lori Ubuntu ati gbejade bot. Emi kii yoo ṣe apejuwe bi aaye yii ṣe n ṣiṣẹ, ṣugbọn yoo lọ siwaju lẹsẹkẹsẹ si eto bot naa.

Ni akọkọ, o nilo lati fi sọfitiwia pataki ti yoo ṣiṣẹ bot wa, ti a kọ sinu .NET Core. Bi o ṣe le ṣe eyi ni a ṣalaye nibi.

Nigbamii ti, o nilo lati gbe bot si Git - iṣẹ kan bi GitHub ati iru bẹ - ki o ṣe ẹda oniye si olupin VPS, tabi, ni awọn ọna miiran, ṣe igbasilẹ bot rẹ. Jọwọ ṣe akiyesi pe iwọ yoo ni console nikan, ko si GUI. Rara.

Lẹhin ti o ti ṣe igbasilẹ bot rẹ, o nilo lati ṣe ifilọlẹ. Lati ṣe eyi, o nilo:

  • Pada gbogbo awọn igbẹkẹle pada: imupadabọ dotnet
  • Kọ ohun elo naa: dotnet kọ name_project.sln -c Tu silẹ
  • Lọ si DLL ti a ṣe;
  • dotnet orukọ_of_file.dll

Oriire! Bot rẹ nṣiṣẹ. Sibẹsibẹ, bot, laanu, wa ninu console, ati fifi olupin VPS silẹ kii ṣe rọrun. Paapaa, ti olupin ba tun bẹrẹ, iwọ yoo ni lati tun bẹrẹ bot lẹẹkansi. Awọn ọna meji lo wa lati ipo naa. Gbogbo wọn ni ibatan si ifilọlẹ ni ibẹrẹ olupin:

  • Ṣafikun ifilọlẹ iwe afọwọkọ si /etc/init.d
  • Ṣẹda iṣẹ kan ti yoo bẹrẹ ni ibẹrẹ.

Emi ko rii aaye eyikeyi ni gbigbe lori wọn ni awọn alaye; ohun gbogbo ni apejuwe ni awọn alaye to lori Intanẹẹti.

awari

Inu mi dun pe mo gba iṣẹ yii. Eyi ni iriri akọkọ mi ti n dagbasoke bot, ati pe inu mi dun pe Mo ni imọ tuntun ni C # ati ṣiṣẹ pẹlu Linux.

Ọna asopọ si olupin Discord. Fun awon ti o mu Wargaming ere.
Ọna asopọ si ibi ipamọ nibiti Discord bot wa.
Ọna asopọ si ibi ipamọ DsharpPlus.
Ṣayẹwo bayi!

orisun: www.habr.com

Fi ọrọìwòye kun