Ke hana ʻana i kahi bot Discord ma .NET Core me ka hoʻoili ʻana i kahi kikowaena VPS
Aloha Khabrovites!
I kēia lā e ʻike ʻoe i kahi ʻatikala e hōʻike ana iā ʻoe pehea e hana ai i kahi bot me ka hoʻohana ʻana iā C# ma .NET Core a pehea e holo ai ma kahi kikowaena mamao.
Aia ka ʻatikala i kahi kāʻei kua, kahi pae hoʻomākaukau, kākau i ka loiloi a me ka hoʻoili ʻana i ka bot i kahi kikowaena mamao.
Manaʻo wau e kōkua kēia ʻatikala i nā poʻe hoʻomaka.
prehistory
Ua hoʻomaka ʻia i hoʻokahi pō hiamoe ʻole aʻu i hoʻohana ai ma ka server Discord. Mai koʻu hui pū ʻana me ia, ua hoʻomaka wau e aʻo iā ia i luna a i lalo. I ka loaʻa ʻana o ke kahawai kikokikona "Vacancies", lilo wau i hoihoi, wehe ʻia, a loaʻa i waena o nā makana i makemake ʻole iaʻu, penei:
"Ka mea papahana (mea hoʻomohala bot) Manaʻo:
ʻike i nā ʻōlelo papahana;
hiki ke aʻo iā ia iho.
Makemake:
hiki ke hoʻomaopopo i ke code o nā poʻe ʻē aʻe;
ʻike i ka hana DISCORD.
Nā Kūlana:
hoʻomohala bot;
kākoʻo a mālama i ka bot.
ʻO kāu pōmaikaʻi:
ʻO ka manawa kūpono e kākoʻo a hoʻoikaika i ka papahana āu e makemake ai;
Loaʻa ka ʻike no ka hana ʻana i kahi hui;
ʻO ka manawa kūpono e hōʻike a hoʻomaikaʻi i nā mākau i loaʻa.
Ua hoihoi koke keia ia'u. ʻAe,ʻaʻole lākou i uku no kēia hana, akā,ʻaʻole lākou i koi i nā kuleana mai iāʻoe, aʻaʻole ia e hoʻonui i ka waihona. No laila, ua kākau wau i ke kikowaena kikowaena, a ua noi ʻo ia iaʻu e kākau i kahi bot e hōʻike i nā helu helu o ka mea pāʻani ma World of Tanks.
Ke kauʻana
Discrod
Ma mua o ka hoʻomaka ʻana e kākau i kā mākou bot, pono mākou e hana ia no Discord. Pono ʻoe:
Hele mākou i "My Applications" a kaomi i ka pihi "Add a new application", e hāʻawi i ka inoa o ka noi a koho i kona ʻano.
E mālama ana i ka ID noi
lako polokalamu
Aia ke kūʻokoʻa koho. Hoʻohana kekahi i ka Visual Studio, ʻo Rider kekahi, ʻoi aku ka ikaika o kekahi, a kākau i ke code ma Vim (ma hope o nā mea āpau, hoʻohana nā mea polokalamu maoli i ka keyboard, ʻaʻole?). Eia naʻe, i ʻole e hoʻokō i ka Discord API, hiki iā ʻoe ke hoʻohana i ka waihona C # ʻole "DSharpPlus". Hiki iā ʻoe ke hoʻouka iā ia mai NuGet, a i ʻole ke kūkulu ʻana i nā kumu iā ʻoe iho mai ka waihona.
No ka poʻe ʻike ʻole a poina paha pehea e hoʻokomo ai i nā noi mai NuGet.Nā kuhikuhi no Visual Studio
E hele i ka papa Project - Manage NuGet Packages;
Kaomi ma ka loiloi a ma ka kahua huli e komo i "DSharpPlus";
E koho a hoʻokomo i ka hoʻolālā;
POMAIKAI!
Ua pau ka pae hoʻomākaukau, hiki iā ʻoe ke hoʻomau i ke kākau ʻana i ka bot.
Ke kākau moʻolelo
ʻAʻole mākou e noʻonoʻo i ka loiloi holoʻokoʻa o ka noi, e hōʻike wale wau pehea e hana ai me ka interception o nā memo e ka bot, a pehea e hana ai me ka Wargaming API.
Ke hana nei me ka Discord bot ma o ka static async Task MainTask(string[] args);
No ke kāhea ʻana i kēia hana, ma Main pono ʻoe e hoʻopaʻa inoa
Aia ma hea ka hōʻailona o kāu bot.
A laila, ma o ka lambda, kākau mākou i nā kauoha e pono ai ka bot e hoʻokō:
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(“Hello, ” + e.Author.Username);
}
};
Kahi e.Author.Username e loaʻa ai ka inoa kapakapa o ka mea hoʻohana.
Ma kēia ala, ke hoʻouna ʻoe i kekahi memo e hoʻomaka me &, e aloha ka bot iā ʻoe.
I ka pau ʻana o kēia hana, pono ʻoe e kākau a kali discord.ConnectAsync(); a kali i ka Task.Delay(-1);
E ʻae kēia iā ʻoe e hoʻokō i nā kauoha ma ke kua me ka ʻole e lawe i ka pae nui.
I kēia manawa pono mākou e hana me ka Wargaming API. Maʻalahi nā mea a pau ma aneʻi - kākau i nā noi CURL, loaʻa kahi pane ma ke ʻano o kahi kaula JSON, huki i ka ʻikepili pono mai laila a hana i nā manipulations ma luna o lākou.
He laʻana o ka hana ʻana me 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;
}
Nānā! ʻAʻole ʻōlelo ʻia e mālama i nā hōʻailona āpau a me nā ID noi ma kahi kikokikona maʻalahi! Ma ka liʻiliʻi loa, pāpā ʻo Discord i nā hōʻailona i ka wā e komo ai lākou i ka pūnaewele puni honua, a ma ka palena nui, hoʻomaka ka bot e hoʻohana ʻia e nā mea hoʻouka.
Hoʻopili i VPS - kikowaena
Ke pau ʻoe me ka bot, pono e hoʻokipa ʻia ma kahi kikowaena e holo mau ana 24/7. Ma muli o ka holo ʻana o kāu noi, ke holo pū nei ka bot. Ke hoʻopau ʻoe i ka noi, e hiamoe pū kāu bot.
Nui nā kikowaena VPS i kēia ao, ma Windows a ma Linux, akā naʻe, ma ka hapa nui, ʻoi aku ka maʻalahi o ka hoʻokipa ma Linux.
Ma ke kikowaena Discord, ua ʻōlelo ʻia au iā vscale.io, a ua hana koke wau i kahi kikowaena virtual ma Ubuntu ma luna a hoʻouka i ka bot. ʻAʻole wau e wehewehe i ka hana ʻana o kēia pūnaewele, akā e hele pololei i nā hoʻonohonoho bot.
A laila, pono ʻoe e hoʻouka i ka bot i kahi lawelawe Git, e like me GitHub a me nā mea like, a clone iā ia i kahi kikowaena VPS, a i ʻole e hoʻoiho i kāu bot ma nā ʻano ʻē aʻe. E ʻoluʻolu e loaʻa iā ʻoe kahi console wale nō, ʻaʻohe GUI. I nā mea āpau.
Ma hope o kāu hoʻoiho ʻana i kāu bot, pono ʻoe e holo. No kēia, pono ʻoe:
Hoʻihoʻi i nā mea hilinaʻi a pau: hoʻihoʻi dotnet
Hana i ka palapala noi: dotnet build name_project.sln -c Hoʻokuʻu
E hele i ka DLL i kūkulu ʻia;
dotnet name_of_file.dll
Hoʻomaikaʻi! Ke holo nei kāu bot. Eia naʻe, ʻo ka bot, ʻaʻole naʻe, noho i ka console, a ʻaʻole maʻalahi ke haʻalele i ka kikowaena VPS. Eia kekahi, inā hoʻomaka hou kahi kikowaena, pono ʻoe e hoʻomaka i ka bot ma kahi ala hou. Aia ʻelua mau ala i waho o ke kūlana. Ua pili lākou a pau i ka hoʻomaka ʻana i ka hoʻomaka ʻana o ka server:
Hoʻohui i ka palapala holo i /etc/init.d
E hana i kahi lawelawe e holo i ka hoʻomaka.
ʻAʻole wau i ʻike i ke ʻano o ka noho ʻana ma luna o lākou i ka kikoʻī, ua wehewehe ʻia nā mea āpau i ka kikoʻī ma ka Pūnaewele.
haʻina
Hauʻoli wau i koʻu lawe ʻana i kēia hana. ʻO kēia kaʻu ʻike hoʻomohala bot mua, a hauʻoli wau i ka loaʻa ʻana o ka ʻike hou ma C #, a me ka hana pū me Linux.