ආයුබෝවන් Khabrovites!
අද ඔබට .NET Core හි C# භාවිතා කර bot එකක් සාදා ගන්නා ආකාරය සහ එය දුරස්ථ සේවාදායකයක ධාවනය කරන්නේ කෙසේද යන්න පෙන්වන ලිපියක් ඔබට දැකගත හැකි වනු ඇත.
ලිපිය පසුබිමකින්, සූදානම් වීමේ අදියරකින්, තර්කනය ලිවීමෙන් සහ දුරස්ථ සේවාදායකයකට බොට් මාරු කිරීමකින් සමන්විත වේ.
මෙම ලිපිය බොහෝ ආරම්භකයින්ට උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි.
මුදලටය
ඒ සියල්ල ආරම්භ වූයේ මම Discord සේවාදායකයේ ගත කළ එක් නිදි නැති සරත් සෘතුවේ රාත්රියක ය. මම මෑතකදී ඔහු සමඟ සම්බන්ධ වූ නිසා, මම ඔහුව ඉහළට හා පහළට අධ්යයනය කිරීමට පටන් ගතිමි. "පුරප්පාඩු" යන පෙළ නාලිකාව සොයා ගැනීමෙන් පසු, මම උනන්දු වී, එය විවෘත කර, මට උනන්දුවක් නොදක්වන දීමනා අතර සොයා ගත්තේ:
"ක්රමලේඛකයා (බොට් සංවර්ධක)
අවශ්යතා:
- ක්රමලේඛන භාෂා පිළිබඳ දැනුම;
- ස්වයං ඉගෙනීමේ හැකියාව.
:
- වෙනත් පුද්ගලයින්ගේ කේතය තේරුම් ගැනීමේ හැකියාව;
- DISCORD ක්රියාකාරීත්වය පිළිබඳ දැනුම.
කාර්යයන්:
- බොට් සංවර්ධනය;
- bot හි සහාය සහ නඩත්තුව.
ඔබේ ප්රතිලාභය:
- ඔබ කැමති ව්යාපෘතියට සහාය වීමට සහ බලපෑම් කිරීමට අවස්ථාව;
- කණ්ඩායමක වැඩ කිරීමේ අත්දැකීම් ලබා ගැනීම;
- පවතින කුසලතා විදහා දැක්වීමට සහ වැඩිදියුණු කිරීමට අවස්ථාව.
මෙය වහාම මා උනන්දු විය. ඔව්, ඔවුන් මෙම කාර්යය සඳහා මුදල් ගෙවා නැත, නමුත් ඔවුන් ඔබෙන් කිසිදු වගකීමක් ඉල්ලා නොසිටි අතර, එය කළඹ තුළ අතිරික්ත නොවනු ඇත. එබැවින්, මම සේවාදායක පරිපාලක වෙත ලිව්වා, ඔහු මගෙන් වර්ල්ඩ් ඔෆ් ටෑන්ක්ස් හි ක්රීඩකයාගේ සංඛ්යාලේඛන පෙන්වන බොට් එකක් ලියන්නැයි ඉල්ලා සිටියේය.
සූදානම් කිරීමේ අදියර
බැහැර කරන්න
අපි අපේ බොට් එක ලිවීමට පෙර, අපි එය Discord සඳහා නිර්මාණය කළ යුතුයි. ඔබට අවශ්යයි:
- Discord ගිණුමට ලොග් වන්න
ලින්ක් - "යෙදුම්" ටැබය තුළ, "නව යෙදුම" බොත්තම මත ක්ලික් කර බොට් නම් කරන්න
- ඔබගේ බොට් එකට ලොග් වී "සැකසීම්" ලැයිස්තුවේ "බොට්" ටැබය සොයා ගැනීමෙන් බොට් ටෝකනයක් ලබා ගන්න
- ටෝකනය කොහේ හරි සුරකින්න
යුද්ධ කිරීම
එසේම, Wargaming API වෙත ප්රවේශය ලබා ගැනීමට ඔබ Wargaming හි යෙදුමක් නිර්මාණය කළ යුතුය. මෙන්න, සෑම දෙයක්ම සරලයි:
- ඔබගේ Wargaming ගිණුමට ලොග් වන්න
මෙම සබැඳිය මගින් - අපි "මගේ යෙදුම්" වෙත ගොස් "නව යෙදුමක් එක් කරන්න" බොත්තම මත ක්ලික් කරන්න, යෙදුමේ නම ලබා දී එහි වර්ගය තෝරන්න.
- යෙදුම් හැඳුනුම්පත සුරැකීම
මෘදුකාංග
තේරීමේ නිදහස දැනටමත් තිබේ. යමෙක් විෂුවල් ස්ටුඩියෝ භාවිතා කරයි, යමෙකු රයිඩර්, යමෙකු සාමාන්යයෙන් බලවත්, සහ Vim හි කේතය ලියයි (සියල්ලට පසු, සැබෑ ක්රමලේඛකයින් යතුරුපුවරුව පමණක් භාවිතා කරයි, හරිද?). කෙසේ වෙතත්, Discord API ක්රියාත්මක නොකිරීමට, ඔබට නිල නොවන C# පුස්තකාලය "DSharpPlus" භාවිතා කළ හැකිය. ඔබට එය NuGet වෙතින් ස්ථාපනය කළ හැකිය, නැතහොත් ගබඩාවෙන් මූලාශ්ර ඔබම ගොඩනගා ගත හැකිය.
NuGet වෙතින් යෙදුම් ස්ථාපනය කරන්නේ කෙසේදැයි නොදන්නා හෝ අමතක වූ අයට.Visual Studio සඳහා උපදෙස්
- පටිත්ත වෙත යන්න Project - NuGet පැකේජ කළමනාකරණය කරන්න;
- සමාලෝචනය මත ක්ලික් කර සෙවුම් ක්ෂේත්රය තුළ "DSharpPlus" ඇතුල් කරන්න;
- රාමුව තෝරන්න සහ ස්ථාපනය කරන්න;
- ලාභය
සූදානම් වීමේ අදියර අවසන්, ඔබට බොට් ලිවීමට ඉදිරියට යා හැකිය.
තර්කය ලිවීම
අපි යෙදුමේ සම්පූර්ණ තර්කනය සලකා බලන්නේ නැත, මම පෙන්වන්නේ bot විසින් පණිවිඩ අන්තර්ක්රියා කිරීම සමඟ වැඩ කරන්නේ කෙසේද සහ Wargaming API සමඟ වැඩ කරන්නේ කෙසේද යන්න පමණි.
Discord bot සමඟ වැඩ කිරීම සිදු වන්නේ static async Task MainTask (string[] args);
මෙම කාර්යය ඇමතීමට, ප්රධාන වශයෙන් ඔබ ලියාපදිංචි විය යුතුය
MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();
ඊළඟට, ඔබ ඔබේ බොට් ආරම්භ කළ යුතුය:
discord = new DiscordClient(new DiscordConfiguration
{
Token = token,
TokenType = TokenType.Bot,
UseInternalLogHandler = true,
LogLevel = LogLevel.Debug
});
ටෝකනය යනු ඔබේ බොට්ගේ ටෝකනයයි.
ඉන්පසුව, lambda හරහා, අපි bot ක්රියාත්මක කළ යුතු අවශ්ය විධාන ලියන්නෙමු:
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(“Hello, ” + e.Author.Username);
}
};
e.Author.Username පරිශීලකයාගේ අන්වර්ථ නාමය ලබා ගන්නා තැන.
මේ ආකාරයට, ඔබ & යන්නෙන් ආරම්භ වන ඕනෑම පණිවිඩයක් යවන විට, බොට් ඔබට ආචාර කරයි.
මෙම ශ්රිතය අවසානයේ, ඔබ Wait discord ලිවිය යුතුය.ConnectAsync(); සහ Task.Delay(-1) බලාපොරොත්තු වන්න;
ප්රධාන ත්රෙඩ් එක නොගෙන පසුබිමේ විධාන ක්රියාත්මක කිරීමට මෙය ඔබට ඉඩ සලසයි.
දැන් අපි Wargaming API සමඟ ගනුදෙනු කළ යුතුයි. මෙහි සෑම දෙයක්ම සරලයි - CURL ඉල්ලීම් ලියන්න, JSON තන්තුවක ආකාරයෙන් ප්රතිචාරයක් ලබා ගන්න, අවශ්ය දත්ත එතැනින් ඉවතට ගෙන ඒවා මත හැසිරවීම් සිදු කරන්න.
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;
}
අවධානය! සියලුම ටෝකන සහ යෙදුම් හැඳුනුම්පත් පැහැදිලි පෙළෙහි ගබඩා කිරීම දැඩි ලෙස නිර්දේශ නොකරයි! අවම වශයෙන්, Discord විසින් ලෝක ව්යාප්ත ජාලයට ඇතුළු වන විට එවැනි ටෝකන තහනම් කරන අතර උපරිම වශයෙන්, bot ප්රහාරකයන් විසින් භාවිතා කිරීමට පටන් ගනී.
VPS - සේවාදායකය වෙත යෙදවීම
ඔබ බොට් සමඟ අවසන් වූ පසු, එය 24/7 නිරන්තරයෙන් ක්රියාත්මක වන සේවාදායකයක සත්කාරකත්වය ලබා දිය යුතුය. මෙයට හේතුව ඔබගේ යෙදුම ක්රියාත්මක වන විට, බොට් ද ක්රියාත්මක වීමයි. ඔබ යෙදුම ක්රියා විරහිත කළ විගස, ඔබේ බොට් එකත් නිදිමතයි.
වින්ඩෝස් සහ ලිනක්ස් යන දෙකෙහිම බොහෝ VPS සේවාදායකයන් මේ ලෝකයේ පවතී, කෙසේ වෙතත්, බොහෝ අවස්ථාවලදී, ලිනක්ස් හි සත්කාරකත්වය සැපයීම වඩා ලාභදායී වේ.
Discord සේවාදායකයේ, මට vscale.io උපදෙස් දෙන ලදී, මම වහාම එය මත Ubuntu මත අතථ්ය සේවාදායකයක් සාදා බොට් උඩුගත කළෙමි. මෙම වෙබ් අඩවිය ක්රියා කරන ආකාරය මම විස්තර නොකරමි, නමුත් කෙලින්ම බොට් සැකසුම් වෙත යන්නෙමි.
පළමුවෙන්ම, ඔබ .NET Core හි ලියා ඇති අපගේ බොට් ධාවනය කරන අවශ්ය මෘදුකාංග ස්ථාපනය කළ යුතුය.
මීළඟට, ඔබට GitHub වැනි Git සේවාවකට bot උඩුගත කර VPS සේවාදායකයකට ක්ලෝන කිරීම හෝ වෙනත් ආකාරවලින් ඔබේ bot බාගත කිරීම අවශ්ය වේ. ඔබට GUI නොමැති කොන්සෝලයක් පමණක් ඇති බව කරුණාවෙන් සලකන්න. කොහෙත්ම.
ඔබ ඔබේ බොට් බාගත කළ පසු, ඔබ එය ධාවනය කළ යුතුය. මේ සඳහා, ඔබට අවශ්ය:
- සියලු පරායත්තතා ප්රතිස්ථාපනය කරන්න: dotnet ප්රතිසාධනය
- යෙදුම ගොඩනැගීම: dotnet build name_project.sln -c නිකුතුව
- සාදන ලද DLL වෙත යන්න;
- dotnet name_of_file.dll
සුභ පැතුම්! ඔබේ බොට් එක ක්රියාත්මක වේ. කෙසේ වෙතත්, බොට්, අවාසනාවකට මෙන්, කොන්සෝලය අල්ලාගෙන සිටින අතර, VPS සේවාදායකයෙන් පිටවීම පහසු නොවේ. එසේම, සේවාදායකය නැවත ආරම්භ කිරීමකදී, ඔබට නව ආකාරයකින් බොට් ආරම්භ කිරීමට සිදුවනු ඇත. තත්වයෙන් මිදීමට මාර්ග කිහිපයක් තිබේ. ඒවා සියල්ලම සේවාදායක ආරම්භයේදී දියත් කිරීමට සම්බන්ධ වේ:
- ධාවන පිටපත /etc/init.d වෙත එක් කරන්න
- ආරම්භයේදීම ක්රියාත්මක වන සේවාවක් සාදන්න.
ඒවා ගැන විස්තරාත්මකව වාසය කිරීමේ කාරණය මට නොපෙනේ, සෑම දෙයක්ම අන්තර්ජාලයේ ප්රමාණවත් තරම් විස්තරාත්මකව විස්තර කර ඇත.
සොයා ගැනීම්
මම මේ පැවරුම භාර ගැනීම ගැන මම සතුටු වෙනවා. මෙය මගේ පළමු bot සංවර්ධන අත්දැකීම වූ අතර, මම C # හි නව දැනුම ලබා ගැනීම සහ Linux සමඟ වැඩ කිරීම ගැන මම සතුටු වෙමි.
Discord සේවාදායකය වෙත සබැඳිය.
Спасибо!
මූලාශ්රය: www.habr.com