Afirandina botek Discord li ser .NET Core bi bicîhkirina serverek VPS

Afirandina botek Discord li ser .NET Core bi bicîhkirina serverek VPS

Silav Khabrovites!

Îro hûn ê gotarek bibînin ku dê nîşanî we bide ka meriv çawa bi karanîna C#-ê li ser .NET Core botek biafirîne û meriv wê çawa li ser serverek dûr bimeşîne.

Gotar dê ji paşxaneyek, qonaxek amadekar, nivîsandina mantiqê û veguheztina botê li serverek dûr pêk were.

Ez hêvî dikim ku ev gotar dê ji gelek destpêkan re bibe alîkar.

pêşdîrok

Hemî di şevek payîzê ya bê xew de ku min li ser servera Discord derbas kir dest pê kir. Ji ber ku ez vê dawiyê tevlî wî bûm, min dest bi xwendina wî kir. Piştî ku min kanala nivîsê "Vaş" dît, min eleqedar kir, ew vekir û di nav pêşniyarên ku min eleqedar nekir, ev in:

"Programmer (pêşdebirê bot)
Hewce:

  • zanîna zimanên bernamesaziyê;
  • kapasîteya xwe-hînbûnê.

Xwezî:

  • şiyana famkirina koda kesên din;
  • zanîna fonksiyona DISCORD.

Armancên

  • pêşveçûna bot;
  • piştgirî û parastina botê.

Feydeya we:

  • Derfeta piştgirî û bandorkirina projeya ku hûn jê hez dikin;
  • Bidestxistina ezmûna xebata di tîmekê de;
  • Derfeta nîşandana jêhatîbûnên heyî û baştirkirina wan.


Ev yekser min eleqedar kir. Erê, wan ji bo vî karî pere nedan, lê wan ji we ti berpirsiyarî nexwastin, û ew ê di portofolê de ne zêde be. Ji ber vê yekê, min ji rêveberê serverê re nivîsand, û wî ji min xwest ku ez botekek binivîsim ku dê statîstîkên lîstikvanê di World of Tanks de nîşan bide.

Qada amadekariyê

Afirandina botek Discord li ser .NET Core bi bicîhkirina serverek VPS
Discrod
Berî ku em dest bi nivîsandina bota xwe bikin, divê em wê ji bo Discord biafirînin. Hûn hewce ne:

  1. Têkeve hesabê Discord link
  2. Di tabloya "Serlêdan" de, bişkoka "Serlêdana Nû" bikirtînin û navê botê bikirtînin
  3. Bi têketina bota xwe û dîtina tabloya "Bot" a di navnîşa "Settings" de nîşanek botek bistînin.
  4. Token li cîhekî xilas bike

wargaming

Di heman demê de, hûn hewce ne ku di Wargaming de serîlêdanek biafirînin da ku bigihîjin Wargaming API. Li vir jî, her tişt hêsan e:

  1. Têkeve hesabê xwe yê Wargaming bi vê lînkê
  2. Em diçin "Serlêdanên Min" û bişkoka "Serlêdanek nû lê zêde bike" bikirtînin, navê serîlêdanê bidin û celebê wê hilbijêrin.
  3. Save Nasnameya Serlêdanê

Software

Jixwe azadiya hilbijartinê heye. Kesek Visual Studio bikar tîne, kesek Rider, kesek bi gelemperî hêzdar e, û kodê di Vim-ê de dinivîse (tewra, bernamenûsên rastîn tenê klavyeyê bikar tînin, rast?). Lêbelê, ji bo ku hûn Discord API-ê bicîh nekin, hûn dikarin pirtûkxaneya C# ya nefermî "DSharpPlus" bikar bînin. Hûn dikarin wê ji NuGet saz bikin, an jî bi avakirina çavkaniyan xwe ji depoyê.

Ji bo kesên ku nizanin an jî ji bîr kirine ku çawa serlêdanên ji NuGet saz bikin.Talîmatên ji bo Visual Studio

  1. Biçe tabê Proje - Rêvekirina Pakêtên NuGet;
  2. Li ser nirxandinê bikirtînin û di qada lêgerînê de "DSharpPlus" binivîse;
  3. Çarçoveyek hilbijêrin û saz bikin;
  4. PROFIT!

Qonaxa amadekariyê qediya, hûn dikarin dest bi nivîsandina botê bikin.

Mantiqa nivîsandinê

Afirandina botek Discord li ser .NET Core bi bicîhkirina serverek VPS

Em ê tevahiya mantiqa serîlêdanê nehesibînin, ez ê tenê nîşan bidim ka meriv çawa bi navgîniya peyaman ji hêla botê ve dixebite, û meriv çawa bi Wargaming API-yê re dixebite.

Karkirina bi bota Discord re bi navgîniya statîk async Task MainTask(string[] args) pêk tê;
Ji bo gazîkirina vê fonksiyonê, di Main de hûn hewce ne ku xwe qeyd bikin

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

Piştre, hûn hewce ne ku bota xwe bidin destpêkirin:

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

Li ku nîşanek nîşana bota we ye.
Dûv re, bi navgîniya lambda, em fermanên pêwîst ên ku divê bot bicîh bîne dinivîsin:

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

Ku e.Nivîskar.Bikarhêner navê paşnavê bikarhêner digire.

Bi vî rengî, gava ku hûn peyamek ku bi &-ê dest pê dike bişînin, bot dê we silav bike.

Di dawiya vê fonksiyonê de, divê hûn await discord binivîsin.ConnectAsync(); û li benda Task.Delay(-1);

Ev ê bihêle ku hûn fermanan di paşperdeyê de bêyî ku xêza sereke hilgirin bicîh bikin.

Naha divê em bi API-ya Wargaming re mijûl bibin. Li vir her tişt hêsan e - Daxwazên CURL binivîsin, bersivek bi rengek JSON-ê bistînin, daneyên pêwîst ji wir derxînin û li ser wan manîpulasyonê bikin.

Mînakek xebata bi 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;
        }

Baldarî! Bi tundî nayê pêşniyar kirin ku hemî nîşan û nasnameyên serîlêdanê di nivîsek zelal de hilînin! Bi kêmanî, Discord dema ku ew têkevin tora cîhanî de tokenên weha qedexe dike, û herî zêde, bot ji hêla êrîşkaran ve dest pê dike.

Li VPS - serverê bicîh bikin

Afirandina botek Discord li ser .NET Core bi bicîhkirina serverek VPS

Gava ku hûn bi botê qediyan, pêdivî ye ku ew li ser serverek ku bi domdarî 24/7 dixebite were mêvandar kirin. Ev ji ber vê yekê ye ku dema ku serîlêdana we dimeşîne, bot jî dimeşe. Hema ku hûn serîlêdanê qut bikin, bota we jî di xew de diçe.

Gelek serverên VPS-ê li vê dinyayê hene, hem li ser Windows û hem jî li Linux-ê, lêbelê, di pir rewşan de, mêvandariya li Linux-ê pir erzan e.

Li ser servera Discord, ji min re şîret kirin vscale.io, û min tavilê li ser Ubuntu serverek virtual li ser wê çêkir û bot barkir. Ez ê diyar nekim ka ev malper çawa dixebite, lê ez ê rasterast biçim mîhengên botê.

Berî her tiştî, hûn hewce ne ku nermalava hewce saz bikin ku dê bota me ya ku di .NET Core hatî nivîsandin de bimeşîne. Meriv çawa dike li vir tête diyar kirin.

Dûv re, hûn hewce ne ku botê li karûbarek Git-ê, mîna GitHub û yên wekî wan, bar bikin, û wê li serverek VPS-ê klon bikin, an jî botê xwe bi awayên din dakêşin. Ji kerema xwe not bikin ku hûn ê tenê konsolek hebe, bêyî GUI. Qet.

Piştî ku we bota xwe dakêşand, hûn hewce ne ku wê bimeşînin. Ji bo vê yekê, hûn hewce ne:

  • Hemî pêwendiyan sererast bikin: dotnet sererast bikin
  • Serîlêdanê ava bike: dotnet build name_project.sln -c Serbest berdan
  • Biçe DLL-ya çêkirî;
  • dotnet name_of_file.dll

Pîroz be! Bota we dimeşe. Lêbelê, bot, mixabin, konsolê dagir dike, û derketina ji servera VPS-ê ne hêsan e. Di heman demê de, di bûyera ji nû ve destpêkirina serverê de, hûn neçar in ku botê bi rengek nû dest pê bikin. Çend rêyên derketina ji rewşê hene. Hemî ew bi destpêkirina destpêkirina serverê ve girêdayî ne:

  • Skrîpta xebitandinê li /etc/init.d zêde bike
  • Karûbarek ku dê di destpêkê de bixebite biafirînin.

Ez xala ku ez bi hûrgulî li ser wan rawestim nabînim, her tişt bi têra xwe li ser Înternetê tê vegotin.

vebiguherin

Ez kêfxweş im ku min ev peywir girt. Ev yekem ezmûna min a pêşkeftina botê bû, û ez kêfxweş im ku min zanîna nû di C # de girt, û bi Linux re xebitîm.

Girêdana servera Discord. Ji bo kesên ku lîstikên Wargaming dilîzin.
Girêdana depoya ku bota Discord tê de ye.
Girêdana depoya DSharpPlus.
Ji bo baldariya te spas!

Source: www.habr.com

Add a comment