Nggawe bot Discord ing .NET Core kanthi penyebaran menyang server VPS

Nggawe bot Discord ing .NET Core kanthi penyebaran menyang server VPS

Hello Khabrovites!

Dina iki sampeyan bakal weruh artikel sing bakal nuduhake sampeyan carane nggawe bot nggunakake C# ing .NET Core lan carane mbukak ing server remot.

Artikel kasebut bakal kalebu latar mburi, tahap persiapan, nulis logika lan nransfer bot menyang server remot.

Muga-muga artikel iki bakal mbantu akeh pamula.

prasejarah

Iku kabeh diwiwiti ing siji wengi Autumn sleepless aku ngginakaken ing server Discord. Wiwit aku bubar melu dheweke, aku wiwit sinau munggah lan mudhun. Sawise nemokake saluran teks "Lowongan", aku dadi kasengsem, mbukak, lan nemokake ing antarane tawaran sing ora narik kawigaten, yaiku:

"Programmer (pengembang bot)
Syarat:

  • kawruh basa pamrograman;
  • kemampuan kanggo sinau dhewe.

CATETAN:

  • kemampuan kanggo ngerti kode wong liya;
  • kawruh babagan fungsi DISCORD.

Tugas:

  • pangembangan bot;
  • dhukungan lan pangopΓ¨nan bot.

Keuntungan sampeyan:

  • Kesempatan kanggo ndhukung lan mengaruhi proyek sing disenengi;
  • Entuk pengalaman kerja ing tim;
  • Kesempatan kanggo nduduhake lan nambah katrampilan sing ana.


Iki langsung kasengsem kula. Ya, padha ora mbayar karya iki, nanging padha ora nuntut kewajiban saka sampeyan, lan iku ora bakal superfluous ing portofolio. Mulane, aku wrote admin server, lan takon kula kanggo nulis bot sing bakal nuduhake statistik pamuter ing World of Tanks.

Tahap preparatory

Nggawe bot Discord ing .NET Core kanthi penyebaran menyang server VPS
Discrod
Sadurunge miwiti nulis bot, kita kudu nggawe kanggo Discord. Sampeyan perlu:

  1. Mlebu menyang akun Discord link
  2. Ing tab "Aplikasi", klik tombol "Aplikasi Anyar" lan jeneng bot
  3. Entuk token bot kanthi mlebu menyang bot sampeyan lan nemokake tab "Bot" ing dhaptar "Setelan".
  4. Simpen token nang endi wae

Wargaming

Uga, sampeyan kudu nggawe aplikasi ing Wargaming kanggo entuk akses menyang API Wargaming. Ing kene, kabeh uga prasaja:

  1. Mlebu menyang akun Wargaming dening link iki
  2. Pindhah menyang "Aplikasiku" lan klik tombol "Tambah aplikasi anyar", menehi jeneng aplikasi lan milih jinise.
  3. Nyimpen ID Aplikasi

Software

Wis ana kebebasan milih. Ana sing nggunakake Visual Studio, wong Rider, wong umume kuat, lan nulis kode ing Vim (sawise kabeh, programer nyata mung nggunakake keyboard, ta?). Nanging, supaya ora ngleksanakake API Discord, sampeyan bisa nggunakake perpustakaan C # ora resmi "DSharpPlus". Sampeyan bisa nginstal saka NuGet, utawa kanthi mbangun sumber dhewe saka gudang.

Kanggo sing ora ngerti utawa lali carane nginstal aplikasi saka NuGet.Pandhuan kanggo Visual Studio

  1. Pindhah menyang tab Project - Atur Paket NuGet;
  2. Klik ing review lan ing kolom telusuran ketik "DSharpPlus";
  3. Pilih lan nginstal framework;
  4. Bathi!

Tahap persiapan wis rampung, sampeyan bisa nerusake nulis bot.

Logika nulis

Nggawe bot Discord ing .NET Core kanthi penyebaran menyang server VPS

Kita ora bakal nimbang kabeh logika aplikasi, Aku mung bakal nuduhake carane bisa karo interception pesen dening bot, lan carane bisa karo Wargaming API.

Nggarap bot Discord dumadi liwat Task MainTask async statis (string [] args);
Kanggo nelpon fungsi iki, ing Utama sampeyan kudu ndhaptar

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

Sabanjure, sampeyan kudu miwiti bot:

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

Endi token iku token bot sampeyan.
Banjur, liwat lambda, kita nulis perintah sing dibutuhake sing kudu ditindakake bot:

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

Where e.Author.Username entuk julukan pangguna.

Kanthi cara iki, nalika sampeyan ngirim pesen sing diwiwiti karo &, bot bakal menehi salam marang sampeyan.

Ing mburi fungsi iki, sampeyan kudu nulis ngenteni discord.ConnectAsync (); lan ngenteni Tugas.Tundha (-1);

Iki bakal ngidini sampeyan nglakokake printah ing latar mburi tanpa njupuk utas utama.

Saiki kita kudu ngatasi API Wargaming. Kabeh iku prasaja ing kene - nulis panjalukan CURL, entuk respon ing wangun string JSON, narik data sing dibutuhake saka ing kono lan nindakake manipulasi.

Conto nggarap 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;
        }

manungsa waΓ©! Ora dianjurake kanggo nyimpen kabeh token lan ID aplikasi ing teks sing cetha! Paling ora, Discord nglarang token kasebut nalika mlebu jaringan ing saindenging jagad, lan maksimal, bot kasebut wiwit digunakake dening panyerang.

Pasang menyang VPS - server

Nggawe bot Discord ing .NET Core kanthi penyebaran menyang server VPS

Sawise sampeyan rampung karo bot, iku kudu dadi tuan rumah ing server sing terus-terusan mlaku 24/7. Iki amarga kasunyatane nalika aplikasi sampeyan mlaku, bot uga mlaku. Sanalika sampeyan mateni aplikasi kasebut, bot sampeyan uga ngantuk.

Akeh server VPS sing ana ing jagad iki, ing Windows lan ing Linux, nanging ing umume kasus, luwih murah dadi host ing Linux.

Ing server Discord, aku disaranake vscale.io, lan aku langsung nggawe server virtual ing Ubuntu lan ngunggah bot kasebut. Aku ora bakal njlèntrèhaké carane situs iki dianggo, nanging bakal langsung menyang setelan bot.

Kaping pisanan, sampeyan kudu nginstal piranti lunak sing dibutuhake sing bakal mbukak bot kita sing ditulis ing .NET Core. Carane nindakake iku diterangake ing kene.

Sabanjure, sampeyan kudu ngunggah bot menyang layanan Git, kaya GitHub lan liya-liyane, lan kloning menyang server VPS, utawa ngundhuh bot sampeyan kanthi cara liya. Elinga yen sampeyan mung duwe console, ora ana GUI. Sakabehe.

Sawise sampeyan ngundhuh bot sampeyan, sampeyan kudu mbukak. Kanggo iki, sampeyan kudu:

  • Mulihake kabeh dependensi: mulihake dotnet
  • Mbangun aplikasi: dotnet mbangun name_project.sln -c Release
  • Menyang dibangun DLL;
  • dotnet name_of_file.dll

Sugeng rawuh! Bot sampeyan mlaku. Nanging, bot, sayangΓ©, manggoni konsol, lan ora gampang metu saka server VPS. Uga, yen server diwiwiti maneh, sampeyan kudu miwiti bot kanthi cara anyar. Ana sawetara cara metu saka kahanan. Kabeh mau ana gandhengane karo peluncuran nalika wiwitan server:

  • Tambah script run menyang /etc/init.d
  • Nggawe layanan sing bakal mbukak nalika wiwitan.

Aku ora weruh titik manggon ing wong ing rinci, kabeh wis diterangake ing cukup rinci ing Internet.

temonan

Aku bungah aku njupuk tugas iki. Iki pengalaman pangembangan bot pisanan, lan aku bungah sing aku entuk kawruh anyar ing C #, lan nggarap Linux.

Link menyang server Discord. Kanggo sing main game Wargaming.
Link menyang repositori ing ngendi bot Discord dumunung.
Link menyang repositori DSharpPlus.
Matur suwun!

Source: www.habr.com

Add a comment