Mhoro Khabrovites!
Nhasi uchaona chinyorwa chichakuratidza kuti ungagadzira sei bot uchishandisa C # pa.NET Core uye kuti ungaifambisa sei pane imwe nzvimbo iri kure.
Chinyorwa chacho chichava nechekumashure, nhanho yekugadzirira, kunyora pfungwa uye kuendesa bot kune iri kure server.
Ndinovimba kuti chinyorwa ichi chichabatsira vakawanda vanotanga.
prehistory
Izvo zvese zvakatanga pane imwe yekusarara yekuvhuvhuta husiku hwandakapedza paDiscord server. Sezvo ndakamukumbanira nguva pfupi yapfuura, ndakavamba kumufunda ndichikwira nokudzika. Ndawana chiteshi chemavara "Vacancies", ndakafarira, ndikavhura, uye ndikawana pakati pezvipo izvo zvisina kundifarira, izvi ndezvi:
"Programmer (bot developer)
Zvinotarisirwa:
- ruzivo rwemitauro yekuronga;
- kugona kuzvidzidzira.
ΠΠΆ:
- kukwanisa kunzwisisa kodhi yevamwe vanhu;
- ruzivo rweDISCORD mashandiro.
Mabasa:
- bot development;
- kutsigirwa uye kuchengetedza bot.
Zvaunobatsira:
- Mukana wekutsigira uye kufurira chirongwa chaunoda;
- Kuwana ruzivo rwekushanda muchikwata;
- Mukana wekuratidza nekuvandudza hunyanzvi huripo.
Izvi zvakabva zvandifadza. Hongu, havana kubhadharira basa iri, asi havana kukumbira chero zvisungo kubva kwauri, uye hazvizove zvakawandisa mune portfolio. Naizvozvo, ndakanyorera server server, uye akandikumbira kuti ndinyore bot icharatidza manhamba emutambi muWorld of Tanks.
Gadziriro yekugadzirira
Discrod
Tisati tatanga kunyora bot yedu, tinoda kuigadzira yeDiscord. Unoda:
- Pinda kuDiscord account
batanidzo - Mu "Applications" tab, tinya pa "New Application" bhatani uye utumidze bot
- Tora chiratidzo chebhoti nekupinda mubhoti rako uye nekutsvaga "Bot" tebhu mune "Zvirongwa" runyorwa.
- Chengetedza chiratidzo pane imwe nzvimbo
Wargaming
Zvakare, iwe unofanirwa kugadzira application muWargaming kuti uwane mukana weWargaming API. Pano, zvakare, zvese zviri nyore:
- Pinda kune yako Wargaming account
ne link iyi - Isu tinoenda ku "Zvikumbiro Zvangu" uye tinya pane "Wedzera nyowani application" bhatani, ichipa zita rekushandisa uye kusarudza mhando yayo.
- Kuchengetedza ID yekushandisa
Software
Panotova nerusununguko rwekusarudza. Mumwe munhu anoshandisa Visual Studio, mumwe munhu Rider, mumwe munhu anowanzo ane simba, uye anonyora kodhi muVim (mushure mezvose, vanogadzira chaivo vanoshandisa keyboard chete, handiti?). Nekudaro, kuti usaite iyo Discord API, unogona kushandisa iyo isina pamutemo C# raibhurari "DSharpPlus". Unogona kuimisa kungave kubva kuNuGet, kana nekuvaka masosi iwe pachako kubva kune repository.
Kune avo vasingazive kana kukanganwa maitiro ekuisa maapplication kubva kuNuGet.Mirayiridzo yeVisual Studio
- Enda kune iyo tab Project - Manage NuGet Packages;
- Dzvanya pakuongorora uye mumunda wekutsvaga pinda "DSharpPlus";
- Sarudza uye isa chimiro;
- Purofiti!
Nhanho yekugadzirira yapera, unogona kuenderera mberi nekunyora bot.
Kunyora pfungwa
Isu hatizotarise iyo logic yese yechishandiso, ini ndinongoratidza maitiro ekushanda pamwe nekubvunzurudzwa kwemameseji ne bot, uye maitiro ekushanda neWargaming API.
Kushanda neDiscord bot kunoitika kuburikidza neiyo static async Task MainTask(tambo[] args);
Kuti ufonere basa iri, mune Main unofanirwa kunyoresa
MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();
Zvadaro, unofanira kutanga bot yako:
discord = new DiscordClient(new DiscordConfiguration
{
Token = token,
TokenType = TokenType.Bot,
UseInternalLogHandler = true,
LogLevel = LogLevel.Debug
});
Ndekupi chiratidzo chebhoti rako.
Zvadaro, kuburikidza ne lambda, tinonyora mirairo inodiwa iyo bot inofanira kuita:
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(βHello, β + e.Author.Username);
}
};
Apo e.Author.Zita rekushandisa riri kuwana remadunhurirwa remushandisi.
Nenzira iyi, paunotumira chero meseji inotanga ne &, iyo bot ichakukwazisa.
Pakupera kwebasa iri, unofanira kunyora wakamirira discord.ConnectAsync(); uye kumirira Basa.Kunonoka(-1);
Izvi zvinokutendera kuti uite mirairo kumashure usingatore tambo huru.
Iye zvino tinoda kubata neWargaming API. Zvese zviri nyore pano - nyora zvikumbiro zveCURL, wana mhinduro muchimiro chetambo yeJSON, buritsa data rinodiwa kubva ipapo uye uite manipulations pavari.
Muenzaniso wekushanda neWargamingAPI
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! Izvo zvakanyanya hazvikurudzirwe kuchengetedza zvese tokeni uye maID ID mune yakajeka mavara! Pazvishoma, Discord inorambidza zviratidzo zvakadaro pavanopinda munyika yose, uye pamwero mukuru, bot inotanga kushandiswa nevanorwisa.
Isa kuVPS - server
Paunenge wapedza ne bot, inoda kugarwa pane sevha inogara ichimhanya 24/7. Izvi zvinokonzerwa nekuti kana application yako iri kushanda, bot iri kushandawo. Paunongodzima application, bot yako inorarawo.
Masevha mazhinji eVPS aripo munyika ino, ese paWindows uye paLinux, zvisinei, kazhinji, zvakachipa zvakanyanya kubata paLinux.
PaDiscord server, ndakarairwa vscale.io, uye ini ndakabva ndagadzira sevha chaiyo paUbuntu pairi ndokuisa bot. Ini handisi kuzotsanangura kuti saiti ino inoshanda sei, asi ichaenda yakananga kune bot marongero.
Chokutanga pane zvose, unoda kuisa software inodiwa iyo inomhanya bot yedu yakanyorwa mu.NET Core.
Tevere, iwe unofanirwa kurodha bot kuGit sevhisi, seGitHub uye nezvimwe, uye kuigadzira kune VPS server, kana kurodha bot yako nedzimwe nzira. Ndokumbira utarise kuti iwe uchange uine koni chete, hapana GUI. Zvachose.
Mushure mekunge warodha bot yako, unofanirwa kuimhanyisa. Nokuda kweizvi, unoda:
- Dzosera zvese zvinotsamira: dotnet dzorera
- Vaka application: dotnet kuvaka zita_project.sln -c Release
- Enda kune yakavakwa DLL;
- dotnet name_of_file.dll
Makorokoto! Bot yako iri kushanda. Nekudaro, iyo bot, zvinosuruvarisa, inogara iyo console, uye hazvisi nyore kubuda iyo VPS server. Zvakare, kana sevha inotangazve, iwe uchafanirwa kutanga bot nenzira itsva. Pane nzira mbiri dzekubuda mumamiriro acho ezvinhu. Ese ane hukama nekuvhurwa kwesevha yekutanga:
- Wedzera runza script ku /etc/init.d
- Gadzira sevhisi inozotanga pakutanga.
Ini handisi kuona pfungwa yekugara pavari zvakadzama, zvese zvinotsanangurwa zvizere zvakakwana paInternet.
zvakawanikwa
Ndinofara kuti ndakatora basa iri. Ichi chaive chiitiko changu chekutanga chekuvandudza bot, uye ndinofara kuti ndakawana ruzivo rutsva muC #, uye kushanda neLinux.
Batanidza kuDiscord server.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!
Source: www.habr.com