ืฉืืื ืืืจืืืืืื!
ืืืื ืชืจืื ืืืืจ ืฉืืจืื ืืื ืืืฆื ืืืฆืืจ ืืื ืืืืฆืขืืช C# ื-.NET Core ืืืืฆื ืืืคืขืื ืืืชื ืขื ืฉืจืช ืืจืืืง.
ืืืืืจ ืืืจืื ืืจืงืข, ืฉืื ืืื ื, ืืชืืืช ืืืืืงื ืืืขืืจืช ืืืื ืืฉืจืช ืืจืืืง.
ืื ื ืืงืืื ืฉืืืืจ ืื ืืขืืืจ ืืืชืืืืื ืจืืื.
ืคืจืืืกืืืจืื
ืืื ืืชืืื ืืืื ืกืชืื ืืื ืืื ืฉืื ื ืฉืืืืืชื ืืฉืจืช ืืืืกืงืืจื. ืืื ืฉืืฆืืจืคืชื ืืืื ืืืืจืื ื, ืืชืืืชื ืืืืื ืืืชื ืืขืื ืืืื. ืืืืจ ืฉืืฆืืชื ืืช ืขืจืืฅ ืืืงืกื "ืืงืืืืช ืคื ืืืื", ืืชืขื ืืื ืชื, ืคืชืืชื ืืืชื ืืืฆืืชื ืืื ืืืฆืขืืช ืฉืื ืขื ืืื ื ืืืชื, ืืื:
"ืืชืื ืช (ืืคืชื ืจืืืื)
ืืจืืฉืืช:
- ืืืข ืืฉืคืืช ืชืื ืืช;
- ืืืืืช ืืืืื ืขืฆืืืช.
ะะพะถะตะปะฐะฝะธั:
- ืืืืืช ืืืืื ืงืื ืฉื ืื ืฉืื ืืืจืื;
- ืืืข ืืคืื ืงืฆืืื ืืืืช DISCORD.
ืืืจืืช:
- ืคืืชืื ืืืืื;
- ืชืืืื ืืชืืืืงื ืฉื ืืืื.
ืืืชืจืื ืฉืื:
- ืืืืื ืืช ืืชืืื ืืืืฉืคืืข ืขื ืืคืจืืืงื ืฉืืชื ืืืื;
- ืฆืืืจืช ื ืืกืืื ืืขืืืื ืืฆืืืช;
- ืืืืื ืืช ืืืคืืื ืืืฉืคืจ ืืืืื ืืืืช ืงืืืืืช.
ืื ืขื ืืื ืืืชื ืืื. ืื, ืื ืื ืฉืืืื ืขื ืืขืืืื ืืื, ืืื ืื ืืจืฉื ืืื ืฉืื ืืชืืืืืืช, ืืื ืื ืืืื ืืืืชืจ ืืชืืง. ืืื, ืืชืืชื ืืื ืื ืืฉืจืช, ืืืื ืืืงืฉ ืืื ื ืืืชืื ืืื ืฉืืฆืื ืืช ืืกืืืืกืืืงื ืฉื ืืฉืืงื ื-World of Tanks.
ืฉืื ืืืื ื
Discrod
ืืคื ื ืฉื ืชืืื ืืืชืื ืืช ืืืื ืฉืื ื, ืขืืื ื ืืืฆืืจ ืืืชื ืขืืืจ Discord. ืืชื ืฆืจืื:
- ืืืื ืก ืืืฉืืื ืืืกืงืืจื
ะฟะพ ัััะปะบะต - ืืืฉืื ืืช "ืืืฉืืืื", ืืืฅ ืขื ืืคืชืืจ "ืืืฉืื ืืืฉ" ืืฉื ืืืื
- ืงืื ืืกืืืื ืืื ืขื ืืื ืื ืืกื ืืืื ืฉืื ืืืฆืืืช ืืืจืืืกืืื "ืืื" ืืจืฉืืืช "ืืืืจืืช"
- ืฉืืืจ ืืช ืืืกืืืื ืืืคืฉืื
Wargaming
ืืื ืื, ืขืืื ืืืฆืืจ ืืคืืืงืฆืื ื-Wargaming ืืื ืืงืื ืืืฉื ื-Wargaming API. ืื ืืื ืืื ืคืฉืื:
- ืืืื ืก ืืืฉืืื Wargaming ืฉืื
ืขื ืืื ืงืืฉืืจ ืื - ื ืขืืืจ ื"ืืืคืืืงืฆืืืช ืฉืื" ืื ืืืฅ ืขื ืืคืชืืจ "ืืืกืฃ ืืคืืืงืฆืื ืืืฉื", ื ืืชื ืืช ืฉื ืืืคืืืงืฆืื ืืืืจ ืืช ืกืืื
- ืฉืืืจืช ืืืื ืืืคืืืงืฆืื
ืชืืื ื
ืืฉ ืืืจ ืืืคืฉ ืืืืจื. ืืืฉืื ืืฉืชืืฉ ื-Visual Studio, ืืืฉืื ื-Rider, ืืืฉืื ืืื ืืืจื ืืื ืืืง, ืืืืชื ืงืื ื-Vim (ืืืจื ืืื, ืืชืื ืชืื ืืืืชืืื ืืฉืชืืฉืื ืจืง ืืืงืืืช, ื ืืื?). ืขื ืืืช, ืืื ืื ืืืืฉื ืืช Discord API, ืืชื ืืืื ืืืฉืชืืฉ ืืกืคืจืืืช C# ืืื ืจืฉืืืช "DSharpPlus". ืืชื ืืืื ืืืชืงืื ืืืชื ื-NuGet, ืื ืขื ืืื ืื ืืืช ืืืงืืจืืช ืืขืฆืื ืืืืืืจ.
ืืื ืฉืื ืืืืข ืื ืฉืื ืืื ืืืชืงืื ืืคืืืงืฆืืืช ื-NuGet.ืืืจืืืช ืขืืืจ Visual Studio
- ืขืืืจ ืืืฉืื ืืช ืคืจืืืงื - ื ืืืื ืืืืืืช NuGet;
- ืืืฅ ืขื ืืืืงืืจืช ืืืฉืื ืืืืคืืฉ ืืื "DSharpPlus";
- ืืืจ ืืืชืงื ืืช ืืืกืืจืช;
- ืจืืื!
ืฉืื ืืืื ื ืืกืชืืื, ืืชื ืืืื ืืืืฉืื ืืืชืืืช ืืืื.
ืืืืืื ืืชืืื
ืื ื ืฉืงืื ืืช ืื ืืืืืืื ืฉื ืืืคืืืงืฆืื, ืื ื ืจืง ืืจืื ืืื ืขืืืืื ืขื ืืืจืื ืืืืขืืช ืขื ืืื ืืืื, ืืืื ืขืืืืื ืขื Wargaming API.
ืืขืืืื ืขื ืืืื ืฉื Discord ืืชืจืืฉืช ืืจื ืืืฉืืื ืืกืื ืืจืื ืกืืื MainTask(string[] args);
ืืื ืืงืจืื ืืคืื ืงืฆืื ืื, ื-Main ืืฉ ืืืืจืฉื
MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();
ืืืืจ ืืื, ืขืืื ืืืชืื ืืช ืืืื ืฉืื:
discord = new DiscordClient(new DiscordConfiguration
{
Token = token,
TokenType = TokenType.Bot,
UseInternalLogHandler = true,
LogLevel = LogLevel.Debug
});
ืืืคื ืืืกืืืื ืืื ืืืกืืืื ืฉื ืืืื ืฉืื.
ืืืืจ ืืื, ืืจื ืืืืืื, ืื ื ืืืชืืื ืืช ืืคืงืืืืช ืืืจืืฉืืช ืฉืืืื ืฆืจืื ืืืฆืข:
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(โHello, โ + e.Author.Username);
}
};
ืืืคื e.Author.Username ืืงืื ืืช ืืืื ืื ืฉื ืืืฉืชืืฉ.
ืืืจื ืื, ืืืฉืจ ืืชื ืฉืืื ืื ืืืืขื ืฉืืชืืืื ื-&, ืืืื ืืงืื ืืช ืคื ืื.
ืืกืืฃ ืคืื ืงืฆืื ืื, ืขืืื ืืืชืื 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;
}
ืชืฉืืืช ืืื! ืืืืื ืื ืืืืืฅ ืืืืกื ืืช ืื ืืืกืืืื ืื ืืืืื ืืืคืืืงืฆืื ืืืงืกื ืืจืืจ! ืืื ืืคืืืช, ืืืกืงืืจื ืืืกืจ ืขื ืืกืืืื ืื ืืืื ืืฉืื ื ืื ืกืื ืืจืฉืช ืืขืืืืืช, ืืืื ืืืืชืจ, ืืืื ืืชืืื ืืืืืช ืืฉืืืืฉ ืขื ืืื ืชืืงืคืื.
ืคืจืืกื ื-VPS - ืฉืจืช
ืืืืจ ืฉืชืกืืื ืขื ืืืื, ืืื ืฆืจืื ืืืชืืจื ืืฉืจืช ืฉืคืืขื ืื ืืืื 24/7. ืืืช ืืฉื ืืขืืืื ืฉืืืฉืจ ืืืคืืืงืฆืื ืฉืื ืคืืขืืช, ืื ืืืื ืคืืขื. ืืจืืข ืฉืืชื ืืืื ืืช ืืืคืืืงืฆืื, ืื ืืืื ืฉืื ื ืจืื.
ืฉืจืชื VPS ืจืืื ืงืืืืื ืืขืืื ืืื, ืื ื-Windows ืืื ืืืื ืืงืก, ืขื ืืืช, ืืจืื ืืืงืจืื, ืืจืื ืืืชืจ ืืื ืืืจื ืืืื ืืงืก.
ืืฉืจืช ืืืืกืงืืจื ืืขืฆื ืื ืขื vscale.io ืืืื ืืฆืจืชื ืขืืื ืฉืจืช ืืืจืืืืื ืืืืืื ืื ืืืขืืืชื ืืช ืืืื. ืื ืืชืืจ ืืื ืืืชืจ ืืื ืขืืื, ืืื ืืขืืืจ ืืฉืจ ืืืืืจืืช ืืืื.
ืงืืื ืื, ืขืืื ืืืชืงืื ืืช ืืชืืื ื ืืืจืืฉื ืฉืชืคืขืื ืืช ืืืื ืฉืื ื ืฉื ืืชื ื-.NET Core.
ืืืืจ ืืื, ืขืืื ืืืขืืืช ืืช ืืืื ืืฉืืจืืช Git, ืืื GitHub ืืืืืื, ืืืฉืืคื ืืืชื ืืฉืจืช VPS, ืื ืืืืจืื ืืช ืืืื ืฉืื ืืืจืืื ืืืจืืช. ืฉืื ืื ืฉืชืืื ืื ืจืง ืงืื ืกืืื, ืืื GUI. ืืืื.
ืืืืจ ืฉืืืจืืช ืืช ืืืื ืฉืื, ืขืืื ืืืคืขืื ืืืชื. ืืฉืืื ืื, ืืชื ืฆืจืื:
- ืฉืืืจ ืืช ืื ืืชืืืช: ืฉืืืืจ dotnet
- ืื ืืืช ืืืฉืื: dotnet build name_project.sln -c ืฉืืจืืจ
- ืขืืืจ ืื DLL ืื ืื;
- dotnet name_of_file.dll
ืืื ืืื! ืืืื ืฉืื ืคืืขื. ืขื ืืืช, ืืืื, ืืืจืื ืืฆืขืจ, ืชืืคืก ืืช ืืงืื ืกืืื, ืืื ืงื ืืฆืืช ืืฉืจืช ื-VPS. ืืื ืื, ืืืงืจื ืฉื ืืคืขืื ืืืืฉ ืฉื ืืฉืจืช, ืชืฆืืจื ืืืคืขืื ืืช ืืืื ืืฆืืจื ืืืฉื. ืืฉื ื ืืื ืืจืืื ืืฆืืช ืืืืฆื. ืืืื ืงืฉืืจืื ืืืคืขืื ืืขืช ืืคืขืืช ืืฉืจืช:
- ืืืกืฃ ืกืงืจืืคื ืืคืขืื ื-/etc/init.d
- ืฆืืจ ืฉืืจืืช ืฉืืคืขื ืืขืช ืืืคืขืื.
ืื ื ืื ืจืืื ืืขื ืืืชืขืื ืขืืืื ืืคืืจืื, ืืื ืืชืืืจ ืืคืืจืื ืืกืคืืง ืืืื ืืจื ื.
ืืืฆืืื
ืื ื ืฉืื ืฉืืงืืชื ืขื ืขืฆืื ืืช ืืืฉืืื ืืื. ืื ืืื ืื ืืกืืื ืืจืืฉืื ืฉืื ืืคืืชืื ืืืืื, ืืื ื ืฉืื ืฉืงืืืืชื ืืืข ืืืฉ ื-C# ืืขืืืื ืขื ืืื ืืงืก.
ืงืืฉืืจ ืืฉืจืช ืืืกืงืืจื.
ืชืืื ืื!
ืืงืืจ: www.habr.com