ααααΆααα½αα’ααααααα»α Khabrovsk!
αααααααα’αααααΉαα’αΆαα’ααααααα½ααααααΉαααααΆααα’αααααΈαααααααααΎα bot αααααααΎ C# αα ααΎ .NET Core αα·αααααααααΎαααΆαααΆαα ααΎαααΆαααΈαααααΈα ααααΆαα
α’αααααααΉαααΆαααααααΆαααααα ααααΆααααΆααααα α ααΆαααααααααααα·ααααΆ αα·αααΆαααααα bot αα αααΆαααΈαααααΈα ααααΆαα
αααα»ααααααΉαααΆα’ααααααααααΉααα½αα’αααα
αΆααααααΎαααααΌαααΆα
αααΎαα
αααααα»αααααααααα·ααΆααααα
ααΆααΆααα’ααααΆαα αΆααααααΎααα½αααααααΌαααααΉαααΎαααα»ααααααααα·αααα ααααααα»αααΆαα αααΆαααααα ααΎαααΆαααΈααα Discord α α αΆααααΆααααΈαααα»αααΆαα αΌααα½αααΆαα½αααΆααααΈαααα αααα»αα αΆααααααΎααα·ααααΆααΆααΆααααΆααααα»α αα·αααΆααααα α αααααΆαααααΎαααΆαααα’ααααα "ααααα" αααα»αααΆαα αΆααα’αΆαααααα ααΎαααΆ α αΎαααΆαααααΎααααα»αα ααααααΆααααααααΌαααααα·αα αΆααα’αΆαααααααααα»α αααα
"α’αααααααααααααα·ααΈ (α’αααα’αα·αααααα bot)
αααααΌαααΆαα
- α ααααααΉαααααΆααΆααααααααααα·ααΈ;
- αααααααΆααααα»αααΆααααααααααα½αα―αα
ααααααααΆααααΆα
- αααααααΆααααα»αααΆααααααΈααΌαααααα’αααααα;
- α ααααααΉαα’αααΈαα»αααΆα DISCORD α
αα·α αα ααΆα:
- ααΆαα’αα·αααα bot;
- ααΆαααΆαααααα·αααααΆα bot α
α’αααααααααααααααα’αααα
- α±ααΆαααΎααααΈααΆαααα αα·αααΆαα₯αααα·ααααΎαααααααααα’αααα αΌαα α·ααα;
- ααα½αααΆααααα·αααααααΆαααΆαααΆαααα»α;
- α±ααΆαααΎααααΈαααα αΆα αα·ααααααα’ααααΆααααααΆαααααΆααα
αααααααΎα±αααααα»αα
αΆααα’αΆααααααααααΆααα ααΆα αα½ααααα·αααΆααααααααΆαααααααΆααααΆαααΆαααααα ααα»αααααα½ααααα·ααααααΌαα±ααααΆαααΆαααααα·α
αα
ααΆαα½αααΈα’ααααα α αΎαααΆααΉααα·αααΆαααα
αααΎααα
αααα»ααααααααααααα’αααααα ααΌα
αααααααα»αααΆαααααααα
ααΆαα server admin α αΎαααΆααααΆααα»αα±αααααα»αααααα bot αααααΉααααα αΆααααα·αα·α’αααααααα
αααα»α World of Tanks α
ααααΆααααΆαααααααααα α
ααααααααα·αααααΆα
αα»ααααααΎαα
αΆααααααΎαααααα bot ααααααΎα ααΎαααααΌααααααΎαααΆαααααΆαα Discord α α’αααβααααΌαααΆα:
- α
αΌαααααΈ Discord
αααααααΆαα - αα αααα»αααααΆαα "αααααα·ααΈ" α α»α ααΎαααΌαα»α "αααααα·ααΈααααΈ" α αΎαααΆαααααααααΌα
- ααα½αααΆα bot token αααα αΌααα αααα»α bot ααααα’ααα α αΎααααααααααααΆαα "Bot" αα αααα»ααααααΈ "Settings"
- αααααΆαα»ααα·αα·ααααααααΆαα ααααααααΆαα½αα
Wargaming
ααΌα ααααΆααααααααα’αααααααΌααααααΎααααααα·ααΈαα αααα»α Wargaming ααΎααααΈααα½αααΆαααΆαα αΌαααααΎ Wargaming API α α’αααΈααααααααΆαααΊααΆαααααα ααΈαααααααα:
- α
αΌααα
ααααΈ Wargaming ααααα’αααα
ααΆααααααααααα - α αΌααα ααΆαα "αααααα·ααΈαααααααα»α" α αΎαα α»α ααΎαααΌαα»α "αααααααααααα·ααΈααααΈ" ααααααααααααααααααα·ααΈ αα·αααααΎαααΎαααααααααααααΆ
- αααα»ααααααΆαα»αααααααααΆαααααααα·ααΈ
αααααα·ααΈ Software
ααΆαβααααΈααΆαβαααα»αβααΆαβααααΎαααΎαβαα½α βα αΎαα α’αααααααααααΎ Visual Studio αααα Rider ααααααΆαααΆαααααααΆαα α αΎααααααααΌααααα»α Vim (αααααΆααααΈααΆααα’αα α’αααααααααααααα·ααΈαα·αααααΎααααααΆαα α»α αα?) ααααααΆαααΆααααα ααΎααααΈαααααΆαααΆαα’αα»αααα Discord API α’αααα’αΆα ααααΎαααααΆααα C# ααααα·αααααΌαααΆα βDSharpPlusβα α’αααα’αΆα ααα‘αΎαααΆααΈ NuGet α¬αααααΆααααααΌααααααααααααα½αα―αααΈααααΆααα
αααααΆααα’αααααααα·αααΆααααΉα α¬ααααα ααΈααααααα‘αΎααααααα·ααΈααΈ NuGetαααΆαααααΆααααααΆαα Visual Studio
- α αΌααα ααΆααααααΆαααααααα - ααααααααααααα αα NuGet;
- α α»α ααΎααΆααα·αα·αααα‘αΎααα·αα αΎααααα αΌα "DSharpPlus" αα αααα»αααΆααααααααα
- ααααΎαααΎααα·αααα‘αΎαααα»α;
- αααααΆαααααΆαααααα½α!
ααααΆααααΆαααααααα½α ααΆααα αΎα α’αααα’αΆα αααααα ααΆαααααα bot ααΆαα
ααΆαααααααααααα·ααααΆ
ααΎαααΉααα·ααα·αα·αααααΎααααααα·ααααΆαααααα·ααΈααΆααα’αααα αααα»αααααΆαααααααα αΆαα’αααααΈααααααααΎααΆαααΆαα½α bot ααααΆααα
αΆααααΆα αα·αααααααααΎααΆαααΆαα½α Wargaming API α
ααΆαααααΎααΆαααΆαα½α Discord bot ααΎαα‘αΎαααΆαααα static async Task MainTask(string[] args);
ααΎααααΈα α
αα»αααΆαααα αααα»α Main α’αααααααΌαααααα
MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();
αααααΆααααα’αααααααΌαα αΆααααααΎα bot ααααα’αααα
discord = new DiscordClient(new DiscordConfiguration
{
Token = token,
TokenType = TokenType.Bot,
UseInternalLogHandler = true,
LogLevel = LogLevel.Debug
});
ααααααααααααααΆαααααΆααααΊααΆαα·αα·ααααααααΆαααα bot ααααα’αααα
αααααΆαααααααααααΎ 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 β ααα½αααΆααααααα·ααΆαααααα’αααααααΎα
αα·ααΈααα αα ααααααα’αααααααΎααΆαααΆαα½ααααα αΆααααααΎαααα & ααα bot ααΉαααααΆααααα’αααα
αα α α»ααααα αααααα»αααΆαααα α’αααααααΌαααααα await 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 α αΆαααααΆαααΌααΉααααααα αα αααααααα½αααα αΌααα ααΆααααΎααααΆααααα α αΎαα’αα·ααααΆ ααΌαα αΆααααααΎαααααΌαααΆαααααΎααααΆαααααα’αααααΆααααα αΆαα
ααΆαααααααΆααα αααΆαααΈααα VPS
αα
αααα’ααααα½α
ααΆααααΆαα½α bot ααΆα
αΆαααΆα
αααααΌααααα αααα
ααΎαααΆαααΈααααααααααΎαααΆαααΆαα·α
αα
24/7 α αααααΊαααααΆαααααΆααα·ααααααΆαα
αααααααααααα·ααΈααααα’ααααααα»αααααΎαααΆα bot αααααα»αααααΎαααΆααααααα αααΆαααΆα’ααααα·ααααααα·ααΈ bot ααααα’αααααΉααααα
ααΆααααΆαααΈααα VPS ααΆα αααΎααα αααα»ααα·αααααααα ααΆαααα ααΎ Windows αα·α Linux ααα»αααααααα»αααααΈααΆαα αααΎα ααΆααΆαααααααααααΆααααα»αααΆααααα αααα ααΎ Linux α
αα ααΎαααΆαααΈααα Discord αα½αααααΆαααααΆα vscale.io ααααααα»α α αΎαααααΆααααααααα»αααΆααααααΎααααΆαααΈααααα·αααα·ααα ααΎα’ααΌααα»αααΌαα ααΎααΆ α αΎααααα ααααΌαααααα αααα»αααΉααα·ααααααΆααααΈαααααααααα ααααααααααααΎαααΆαααααα ααα»ααααααΉααααααα ααΆαααα‘αΎα bot ααααΆααα
ααααΌαα’αααααααΌαααα‘αΎααααααα·ααΈα
αΆαααΆα
ααααααΉαααααΎαααΆα bot ααααααΎααααααααααααα»α .NET Core α
αααααΆαααα α’αααααααΌααααα ααααΌααααααα ααΆαα Git αααααΆααααΆααααααΌα ααΆ GitHub αα·ααααααααα α αΎαααααΌαααΆαα αααΆαααΈααα VPS α¬ααΆααα·ααΈαααααααα ααΆααα bot ααααα’αααα ααΌαα αααΆαααΆ α’αααααΉαααΆααααα»αααΌαααα»ααααα ααααΆα GUI ααα ααΆααα’ααα
αααααΆααααΈα’αααααΆαααΆααα bot ααααα’ααααα½α α αΎα α’αααααααΌαααΎαααααΎαααΆαααΆα ααΎααααΈααααΎααΌα αααα’αααααααΌαααΆα:
- ααααΆαααΆαα’αΆαααααααΆααα’ααα‘αΎααα·αα ααααΆα dotnet
- αααααΎααααααα·ααΈα dotnet build name_project.sln -c α ααααααΆα
- α αΌααα ααΆαα DLL αααααΆαααΆαααα;
- dotnet name_of_file.dll
α’αα’αααΆαα! ααΌαααααα’ααααααα»αααααΎαααΆαα αααααΆαααΆαααΆααααα ααΆα’αα»αα bot ααΆααααΆαααα»αααΌα α αΎαααΆαα αΆαα ααααΈαααΆαααΈααα VPS ααΊαα·αααΆααααα½ααααααα ααΌα ααααΆαααααααα ααααα·αααΎαααΆαααΈαααααααΌαααΆααα·αα‘αΎααα·α α’αααααΉαααααΌαα αΆααααααΎαααΌααααααααα ααΆααα·ααΈααΈααααΆαα ααααΈααααΆαααΆαα αα½αααΆααΆααα’ααααΊααΆαααααα ααΉαααΆαα αΆααααααΎααα αααα αΆααααααΎααααΆαααΈαααα
- ααααααααΆαα αΆααααααΎαααααααΈααα /etc/init.d
- αααααΎαααααΆαααααααααΉαα αΆααααααΎααα αααα αΆααααααΎαα
αααα»αβαα·αβααΎαβα ααα»α βααΆβαα½αβαααα»αβααΆαβαααβαα βααΎβαα½αβααβαααα’α·αβαα α’αααΈβαααααβαααΆαβααααΌαβααΆαβαα·αααααΆβαααΆαβαααα’α·αβαα βααΎβα’ααΈαααΊαα·αα
ααΆαααααΎα
αααα»αβααΈαβααΆαβααΆααβαααβαααα»αβααα½αβααΆαβααΆααα·α αα βαααα αααααΆαααα·αααααααααΌααααααααα»ααααα»αααΆαα’αα·αααααα bot α αΎααααα»αααΈαααΆαααααααα»αααα½αααΆαα ααααααΉαααααΈαα αααα»α C# αα·αααααΎααΆαααΆαα½αααΈαα»α α
ααααΆαααα
αααΆαααΈααα Discord α
ααΌααα·αα·αααααΎα!
ααααα: www.habr.com