ProHoster > blog > Utawala > Kuunda mfumo wa Discord bot kwenye .NET Core na kupelekwa kwa seva ya VPS
Kuunda mfumo wa Discord bot kwenye .NET Core na kupelekwa kwa seva ya VPS
Habari Khabrovites!
Leo utaona makala ambayo itakuonyesha jinsi ya kuunda bot kwa kutumia C # kwenye NET Core na jinsi ya kuiendesha kwenye seva ya mbali.
Nakala hiyo itajumuisha usuli, hatua ya maandalizi, mantiki ya kuandika na kuhamisha bot kwa seva ya mbali.
Natumaini makala hii itasaidia Kompyuta nyingi.
kabla ya historia
Yote ilianza usiku mmoja wa vuli usio na usingizi ambao nilitumia kwenye seva ya Discord. Kwa kuwa nilijiunga naye hivi majuzi, nilianza kumsoma juu chini. Baada ya kupata chaneli ya maandishi "Nafasi", nilipendezwa, nikaifungua, na nikapata kati ya matoleo ambayo hayakunivutia, haya ni:
"Programu (msanidi wa bot) Mahitaji:
ujuzi wa lugha za programu;
uwezo wa kujisomea.
ΠΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ:
uwezo wa kuelewa kanuni za watu wengine;
ujuzi wa utendaji wa DISCORD.
Malengo:
maendeleo ya bot;
msaada na matengenezo ya bot.
Faida yako:
Fursa ya kusaidia na kushawishi mradi unaopenda;
Kupata uzoefu wa kufanya kazi katika timu;
Fursa ya kuonyesha na kuboresha ujuzi uliopo.
Hii ilinivutia mara moja. Ndio, hawakulipa kazi hii, lakini hawakudai majukumu yoyote kutoka kwako, na haitakuwa ya juu sana kwenye kwingineko. Kwa hivyo, niliandika kwa msimamizi wa seva, na akaniuliza niandike bot ambayo itaonyesha takwimu za mchezaji katika Ulimwengu wa Mizinga.
awamu ya maandalizi
Discrod
Kabla ya kuanza kuandika bot yetu, tunahitaji kuiundia Discord. Unahitaji:
Tunaenda kwa "Maombi Yangu" na bonyeza kitufe cha "Ongeza programu mpya", tukitoa jina la programu na kuchagua aina yake.
Inahifadhi Kitambulisho cha Maombi
programu
Tayari kuna uhuru wa kuchagua. Mtu hutumia Visual Studio, mtu Rider, mtu kwa ujumla ana nguvu, na anaandika nambari katika Vim (baada ya yote, watengenezaji wa programu halisi hutumia kibodi tu, sivyo?). Walakini, ili usitekeleze API ya Discord, unaweza kutumia maktaba isiyo rasmi ya C # "DSharpPlus". Unaweza kuisanikisha kutoka kwa NuGet, au kwa kujenga vyanzo mwenyewe kutoka kwa hazina.
Kwa wale ambao hawajui au wamesahau jinsi ya kusakinisha programu kutoka NuGet.Maagizo ya Visual Studio
Nenda kwenye kichupo Mradi - Dhibiti Vifurushi vya NuGet;
Bofya kwenye ukaguzi na katika uwanja wa utafutaji ingiza "DSharpPlus";
Chagua na usakinishe mfumo;
Fanya!
Hatua ya maandalizi imekwisha, unaweza kuendelea na kuandika bot.
Mantiki ya kuandika
Hatutazingatia mantiki nzima ya programu, nitaonyesha tu jinsi ya kufanya kazi na kutekwa kwa ujumbe na bot, na jinsi ya kufanya kazi na API ya Wargaming.
Kufanya kazi na Discord bot hutokea kupitia Task MainTask tuli (kamba[] args);
Kuita kazi hii, katika Kuu unahitaji kujiandikisha
Ambapo ishara ni bot yako.
Kisha, kupitia lambda, tunaandika amri zinazohitajika ambazo bot inapaswa kutekeleza:
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(βHello, β + e.Author.Username);
}
};
Ambapo e.Author.Jina la mtumiaji linapata jina la utani la mtumiaji.
Kwa njia hii, unapotuma ujumbe wowote unaoanza na &, roboti itakusalimia.
Mwishoni mwa chaguo hili la kukokotoa, lazima uandike wait discord.ConnectAsync(); na kusubiri Task.Delay(-1);
Hii itakuruhusu kutekeleza amri nyuma bila kuchukua uzi kuu.
Sasa tunahitaji kushughulika na API ya Wargaming. Kila kitu ni rahisi hapa - andika maombi ya CURL, pata jibu kwa njia ya kamba ya JSON, toa data muhimu kutoka hapo na ufanyie udanganyifu.
Mfano wa kufanya kazi na 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;
}
Makini! Haipendekezi kabisa kuhifadhi ishara zote na vitambulisho vya maombi katika maandishi wazi! Kwa kiwango cha chini, Discord hupiga marufuku ishara hizo wakati zinaingia kwenye mtandao wa kimataifa, na kwa kiwango cha juu, bot huanza kutumiwa na washambuliaji.
Tumia kwa VPS - seva
Mara tu unapomaliza kutumia roboti, inahitaji kupangishwa kwenye seva ambayo inafanya kazi kila mara 24/7. Hii ni kutokana na ukweli kwamba wakati programu yako inaendesha, bot pia inafanya kazi. Mara tu unapozima programu, kijibu chako hulala pia.
Seva nyingi za VPS zipo katika ulimwengu huu, kwenye Windows na kwenye Linux, hata hivyo, katika hali nyingi, ni nafuu zaidi kukaribisha kwenye Linux.
Kwenye seva ya Discord, nilishauriwa vscale.io, na mara moja niliunda seva pepe kwenye Ubuntu juu yake na kupakia bot. Sitaelezea jinsi tovuti hii inavyofanya kazi, lakini itaenda moja kwa moja kwenye mipangilio ya bot.
Ifuatayo, unahitaji kupakia kijibu kwa huduma ya Git, kama GitHub na kadhalika, na uifanye kwa seva ya VPS, au upakue bot yako kwa njia zingine. Tafadhali kumbuka kuwa utakuwa na koni tu, hakuna GUI. Hata kidogo.
Baada ya kupakua bot yako, unahitaji kuiendesha. Kwa hili, unahitaji:
Rejesha utegemezi wote: kurejesha dotnet
Jenga programu: dotnet build name_project.sln -c Toa
Nenda kwa DLL iliyojengwa;
dotnet name_of_file.dll
Hongera! Kijibu chako kinaendelea. Hata hivyo, bot, kwa bahati mbaya, inachukua console, na si rahisi kuondoka kwa seva ya VPS. Pia, ikiwa seva itaanzisha tena, itabidi uanzishe bot kwa njia mpya. Kuna njia kadhaa za kutoka kwa hali hiyo. Zote zinahusiana na uzinduzi wakati wa kuanza kwa seva:
Ongeza hati ya kukimbia kwa /etc/init.d
Unda huduma ambayo itaanza wakati wa kuanza.
Sioni uhakika wa kukaa juu yao kwa undani, kila kitu kinaelezwa kwa undani wa kutosha kwenye mtandao.
Matokeo
Nina furaha nilichukua jukumu hili. Huu ulikuwa uzoefu wangu wa kwanza wa ukuzaji wa roboti, na ninafurahi kwamba nilipata maarifa mapya katika C #, na kufanya kazi na Linux.