ืืขืื ืืึทืืจืึธืืืืืขืก!
ืืืึทื ื ืืืจ ืืืขื ืืขื ืึทื ืึทืจืืืงื ืืืึธืก ืืืขื ืืืืึทืื ืืืจ ืืื ืฆื ืฉืึทืคึฟื ืึท ืืึธื ื ืืฆื C # ืืืืฃ. ื ืขืฅ ืงืึธืจ ืืื ืืื ืฆื ืืืืคื ืขืก ืืืืฃ ืึท ืืืืึทื ืกืขืจืืืขืจ.
ืืขืจ ืึทืจืืืงื ืืืขื ืฆืื ืืืคืฉืืขืื ืืื ืคืื ืึท ืืื ืืขืจืืจืื ื, ืึท ืคึผืจืืคึผืขืจืึทืืึธืจื ืืื ืข, ืฉืจืืืื ืืึธืืืง ืืื ืืจืึทื ืกืคืขืจืื ื ืื ืืึธื ืฆื ืึท ืืืืึทื ืกืขืจืืืขืจ.
ืืื ืืึธืคึฟื ืืขื ืึทืจืืืงื ืืืขื ืืขืืคื ืคืืืข ืืืืื ืขืจื.
ืคึผืจืขืืืกืืึธืจื
ืขืก ืึทืืข ืกืืึทืจืืขื ืืืืฃ ืืืื ืฉืืึธืฃ ืืึทืจืืกื ื ืึทืื ืืืึธืก ืืื ืคืืจืืจืืื ืืืืฃ ืื ืืืกืงืึธืจื ืกืขืจืืืขืจ. ืืื ื ืืื ืืื ืืขืฆืื ืก ืืขืงืืืขื ืฆื ืืื, ืืึธื ืืื ืืื ืึธื ืืขืืืืื ืืขืจื ืขื ืืืืฃ ืืื ืึทืจืึธืคึผ. ืืื ืืึธื ืืขืคึฟืื ืขื ืืขื ืืขืงืกื ืงืึทื ืึทื "ืืืึทืงืึทื ืกืขืก", ืืื ืืื ืืื ืืขืจืขืกืืจื, ืืขืขืคื ื ืขืก, ืืื ืืขืคึฟืื ืขื ืฆืืืืฉื ืื ืึธืคืคืขืจืก ืืืึธืก ืืึธืื ื ืืฉื ืืื ืืขืจืขืกืืจื ืืืจ, ืื ืืขื ืขื:
"ืคึผืจืึธืืจืึทืืขืจ (ืืึธื ืืขืืืขืืึธืคึผืขืจ)
ืจืขืงืืืืจืขืืขื ืฅ:
- ืืืืกื ืคืื ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทืื;
- ืคืืืืงืืื ืฆื ืืื-ืืขืจื ืขื.
ะะพะถะตะปะฐะฝะธั:
- ืคืืืืงืืื ืฆื ืคึฟืึทืจืฉืืืื ืื ืงืึธื ืคืื ืื ืืขืจืข ืืขื ืืฉื;
- ืืืืกื ืคืื DISCORD ืคืึทื ืืงืฉืึทื ืึทืืืื.
ืืึทืกืงืก:
- ืืึธื ืึทื ืืืืืงืืื ื;
- ืฉืืืฆื ืืื ืืืฉืึทืื ืคืื ืื ืืึธื.
ืืืื ื ืืฅ:
- ืืขืืขืื ืืืื ืฆื ืฉืืืฆื ืืื ืืฉืคึผืขื ืื ืคึผืจืืืขืงื ืืืจ ืืื;
- ืืึทืงืืืขื ืืขืจืคืึทืจืื ื ืคืื ืืจืืขืื ืืื ืึท ืงืึธืืขืงืืืื;
- ืืขืืขืื ืืืื ืฆื ืืึทืืืืึทืื ืืื ืคึฟืึทืจืืขืกืขืจื ืืืืืกืืื ื ืกืงืืื.
ืืึธืก ืืึธื ืืื ืืืืื ืคึฟืึทืจืืื ืืขืจืขืกืืจื. ืืึธ, ืืื ืืึธืื ื ืืฉื ืืึทืฆืึธืื ืคึฟืึทืจ ืืขื ืึทืจืืขื, ืึธืืขืจ ืืื ืืึธืื ื ืืฉื ืคืืจืืื ืื ืงืืื ืึทืืืึทืืืืฉืึทื ื ืคืื ืืืจ, ืืื ืขืก ืืืขื ื ืืฉื ืืืื ืืืขืจืืง ืืื ืื ืคึผืึธืจืืคืขื. ืืขืจืืืขืจ, ืืื ืืขืฉืจืืื ืฆื ืื ืกืขืจืืืขืจ ืึทืืืื, ืืื ืขืจ ืืขืืขืื ืืืจ ืฆื ืฉืจืืึทืื ืึท ืืึธื ืืืึธืก ืืืขื ืืืืึทืื ืื ืฉืคึผืืืขืจ ืก ืกืืึทืืืกืืืง ืืื World of Tanks.
ืื ืคึผืจืขืคึผืจืึทืืึธืจื ืคืึทืกืข
ืืืกืงืจืึธื
ืืืืืขืจ ืืืจ ืึธื ืืืืื ืฉืจืืืื ืืื ืืืขืจ ืืึธื, ืืืจ ืืึทืจืคึฟื ืฆื ืฉืึทืคึฟื ืขืก ืคึฟืึทืจ ืืืกืงืึธืจื. ืืืจ ืืึทืจืคึฟื:
- ืงืืึธืฅ ืืื ืฆื ืื ืืืกืงืึธืจื ืืฉืืื
ะฟะพ ัััะปะบะต - ืืื ืื "ืึทืคึผืคึผืืืงืึทืืืึธื ืก" ืงืืืืื, ืืื ืื "ื ืื ืึทืคึผืคึผืืืงืึทืืืึธื" ืงื ืขืคึผื ืืื ื ืึธืืขื ืื ืืึธื
- ืืึทืงืืืขื ืึท ืืึธื ืกืืืขื ืืืจื ืืึธืืื ื ืืื ืืืื ืืึธื ืืื ืืขืคึฟืื ืขื ืื "ืืึธื" ืงืืืืื ืืื ืื "ืกืขืืืื ืืก" ืจืฉืืื
- ืืื ืืขื ืกืืืขื ืขืจืืขืฅ
Wargaming
ืืืื, ืืืจ ืืึทืจืคึฟื ืฆื ืฉืึทืคึฟื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืื Wargaming ืฆื ืืึทืงืืืขื ืึทืงืกืขืก ืฆื ืื Wargaming API. ืืืื ืืึธ ืืื ืึทืืฅ ืคึผืฉืื:
- ืงืืึธืฅ ืืื ืฆื ืืืื Wargaming ืืฉืืื
ืืืจื ืืขื ืืื ืง - ืืืจ ืืืื ืฆื "ืืืึทื ืึทืคึผืคึผืืืงืึทืืืึธื ืก" ืืื ืืื ืื "ืืืื ืึท ื ืืึทืข ืึทืคึผืืึทืงืืืฉืึทื" ืงื ืขืคึผื, ืืขืื ืื ื ืึธืืขื ืคืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืกืขืืขืงืืืจื ืืขื ืืืคึผ.
- ืฉืคึผืึธืจื ืื ืึทืคึผืคึผืืืงืึทืืืึธื ืฉืืึทื
ืืืืืืืืืจื
ืขืก ืืื ืฉืืื ืคืจืืืืืื ืคืื ืืจืืจื. ืขืืขืฆืขืจ ื ืืฆื ืืืืกืืึทื ืกืืืืืึธ, ืขืืขืฆืขืจ ืจืืืขืจ, ืขืืขืฆืขืจ ืืื ืืืื ืฉืืึทืจืง, ืืื ืฉืจืืืื ืงืึธื ืืื ืืืื (ื ืึธื ืึทืืข, ืคืึทืงืืืฉ ืคึผืจืึธืืืจืึทืืขืจื ื ืืฆื ืืืืื ืื ืงืืึทืืืืึทืืืจ, ืจืขืื?). ืึธืืขืจ, ืืื ืกืืจ ื ืืฉื ืฆื ืื ืกืืจืืืขื ื ืื Discord API, ืืืจ ืงืขื ืขื ื ืืฆื ืื ืึทื ืึทืคืืฉืึทื C # ืืืืืืึธืืขืง "DSharpPlus". ืืืจ ืงืขื ืขื ืื ืกืืึทืืืจื ืขืก ืึธืืขืจ ืคึฟืื NuGet, ืึธืืขืจ ืืืจื ืืืืขื ืื ืงืืืืื ืืื ืคึฟืื ืื ืจืืคึผืึทืืึทืืึธืจื.
ืคึฟืึทืจ ืืขื ืข ืืืึธืก ืืึธื ื ืื ืืืืกื ืึธืืขืจ ืืึธืื ืคืืจืืขืกื ืืื ืฆื ืื ืกืืึทืืืจื ืึทืคึผืืึทืงืืืฉืึทื ื ืคึฟืื NuGet.ืื ืกืืจืึทืงืฉืึทื ื ืคึฟืึทืจ ืืืืกืืึทื ืกืืืืืึธ
- ืืืื ืฆื ืื ืงืืืืื ืคึผืจืึธืืขืงื - ืืืืคึฟืคึผืึทืกื NuGet ืคึผืึทืงืืืืฉืื;
- ืืจืืงื ืืืืฃ ืื ืจืขืฆืขื ืืืข ืืื ืึทืจืืึทื "DSharpPlus" ืืื ืื ืืืื ืคืขืื;
- ืืืืกืงืืืึทืื ืืื ืื ืกืืึทืืืจื ืคืจืืืืืืขืจืง;
- PROFIT!
ืืขืจ ืคึผืจืืคึผืขืจืึทืืึธืจื ืืื ืข ืืื ืืืืขืจ, ืืืจ ืงืขื ืขื ืืืื ืืืืึทืืขืจ ืฆื ืฉืจืืืื ืื ืืึธื.
ืฉืจืืืื ืืึธืืืง
ืืืจ ืืืขืื ื ืืฉื ืืึทืืจืึทืืื ืื ืืื ืฆืข ืืึธืืืง ืคืื ืื ืึทืคึผืืึทืงืืืฉืึทื, ืืื ืืืขื ื ืึธืจ ืืืืึทืื ืืื ืฆื ืึทืจืืขืื ืืื ืื ืื ืืขืจืกืขืคึผืฉืึทื ืคืื ืึทืจืืืงืืขื ืืืจื ืื ืืึธื ืืื ืืื ืฆื ืึทืจืืขืื ืืื ืื Wargaming API.
ืืจืืขืื ืืื ืื ืืืกืงืึธืจื ืืึธื ืืึทืคึผืึทื ื ืืืจื ืื ืกืืึทืืืง ืึทืกืื ืง ืืึทืกืง ืืึทืื ืืึทืกืง (ืฉืืจืืงื [] ืึทืจืืก);
ืฆื ืจืืคื ืืขื ืคึฟืื ืงืฆืืข, ืืื ืืืืคึผื ืืืจ ืืึทืจืคึฟื ืฆื ืจืขืืืกืืจืืจื
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 ืืื ืืขืืื ื ืืขืจ ืืึทื ืืฆืขืจ ืก ื ืืงืงื ืึทืืข.
ืืขื ืืืขื, ืืืขื ืืืจ ืฉืืงื ืงืืื ืึธื ืืึธื ืืืึธืก ืกืืึทืจืฅ ืืื &, ืืขืจ ืืึธื ืืืขื ืืึทืืจืืกื ืืืจ.
ืืื ืื ืกืืฃ ืคืื ืืขื ืคึฟืื ืงืฆืืข, ืืืจ ืืืื ืฉืจืืึทืื ืึทืืืืื ืืืกืงืึธืจื. ืงืึธื ื ืขืงืืึทืกืื ืง (); ืืื ืืขืจืืืึทืจืื ืืึทืกืง.ืืขืืืึท (-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. ืืึธืก ืืื ืจืขืื ืฆื ืืขื ืคืึทืงื ืึทื ืืืขื ืืืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืคืืืกื ืืืง, ืื ืืึธื ืืื ืืืื ืคืืืกื ืืืง. ืืื ืืึทืื ืืื ืืืจ ืงืขืจ ืึทืืืขืง ืื ืึทืคึผืืึทืงืืืฉืึทื, ืืืื ืืึธื ืคืืื ืืืื ืฉืืึธืคื ืืืง.
ืคืืืข ืืืคึผืก ืกืขืจืืืขืจืก ืขืงืกืืกืืืจื ืืื ืืขืจ ืืืขืื, ืืืืืข ืืืืฃ Windows ืืื ืืืืฃ ืืื ืืงืก, ืึธืืขืจ, ืืื ืจืืึฟ ืงืึทืกืขืก, ืขืก ืืื ืคืื ืืฉืืคึผืขืจ ืฆื ืืึทืืขืืึธืก ืืืืฃ ืืื ืืงืก.
ืืืืฃ ืื ืืืกืงืึธืจื ืกืขืจืืืขืจ, ืืื ืืื ืืขืืืขื ืึทืืืืืืื vscale.io, ืืื ืืื ืืืืื ืืืฉืืคื ืึท ืืืืจืืืึทื ืกืขืจืืืขืจ ืืืืฃ ืืืื ืื ืืืืฃ ืขืก ืืื ืืคึผืืึธืึทืืขื ืื ืืึธื. ืืื ืืืขื ื ืืฉื ืืึทืฉืจืืึทืื ืืื ืืขื ืคึผืืึทืฅ ืึทืจืืขื, ืึธืืขืจ ืืื ืืืขื ืืืื ืืืืื ืฆื ืื ืืึธื ืกืขืืืื ืืก.
ืขืจืฉืืขืจ ืคืื ืึทืืข, ืืืจ ืืึทืจืคึฟื ืฆื ืื ืกืืึทืืืจื ืื ื ืืืืืง ืืืืืืืืืจื ืืืึธืก ืืืขื ืืืืคื ืืื ืืืขืจ ืืึธื ืืขืฉืจืืื ืืื .ื ืขื ืงืึธืจ.
ืืขืจื ืึธื ืืืจ ืืึทืจืคึฟื ืฆื ืฆืืคึฟืขืืืงืขืจ ืื ืืึธื ืฆื ืึท ืืื ืืื ืกื, ืืื GitHub ืืื ืื ืืื, ืืื ืงืืึธืื ืขืก ืฆื ืึท ืืืคึผืก ืกืขืจืืืขืจ, ืึธืืขืจ ืืจืืคืงืืคืืข ืืืื ืืึธื ืืื ืื ืืขืจืข ืืืขืื. ืืืืข ืืึธื ืึทื ืืืจ ืืืขื ื ืึธืจ ืืึธืื ืึท ืงืึทื ืกืึธืื, ืงืืื GUI. ืืืื.
ื ืึธื ืืืจ ืืึธืื ืืึทืื ืืึธืืืื ืืืื ืืึธื, ืืืจ ืืึทืจืคึฟื ืฆื ืืืืคื ืขืก. ืคึฟืึทืจ ืืขื, ืืืจ ืืึทืจืคึฟื:
- ืืืงืขืจื ืึทืืข ืืืคึผืขื ืืึทื ืกืื: ืืึธืื ืขื ืจืืกืืึธืจ
- ืืืืขื ืึทืคึผืืึทืงืืืฉืึทื: ืืึธืื ืขื ืืืืขื name_project.sln -c ืืขืืืื ื
- ืืืื ืฆื ืืขืืืื ืืื;
- ืืึธืื ืขื ื ืึธืืขื_ืคืื_ืคืืืข.ืืื
ืืึทืื - ืืึธืื! ืืืื ืืึธื ืืื ืคืืืกื ืืืง. ืึธืืขืจ, ืืืืืขืจ, ืื ืืึธื ืึทืงืืึทืคึผืืื ืื ืงืึทื ืกืึธืื, ืืื ืขืก ืืื ื ืืฉื ืืจืื ื ืฆื ืึทืจืืืกืืึทื ื ืื ืืืคึผืก ืกืขืจืืืขืจ. ืืืื, ืืื ืคืึทื ืคืื ืึท ืกืขืจืืืขืจ ืจืืกืืึทืจื, ืืืจ ืืืขื ืืึธืื ืฆื ืึธื ืืืืื ืืขื ืืึธื ืืืืฃ ืึท ื ืืึทืข ืืืขื. ืขืก ืืขื ืขื ืึท ืคึผืึธืจ ืคืื ืืืขืื ืืืืก ืคืื ืื ืกืืืืึทืฆืืข. ืึทืืข ืคืื โโืืื ืืขื ืขื ืฉืืึทืืืช ืฆื ืื ืงืึทืืขืจ ืืื ืกืขืจืืืืจืขืจ ืกืืึทืจืืึทืคึผ:
- ืืืื ืืืืคื ืฉืจืืคื ืฆื /etc/init.d
- ืฉืึทืคึฟื ืึท ืืื ืกื ืืืึธืก ืืืขื ืืืืคื ืืื ืกืืึทืจืืึทืคึผ.
ืืื ืืึธื ื ืื ืืขื ืื ืคืื ื ืืื ืืืืื ืขื ืืืืฃ ืืื ืืื ืืขืืึทื, ืึทืืฅ ืืื ืืืกืงืจืืืื ืืื ืืขื ืื ืืขืืึทื ืืืืฃ ืื ืืื ืืขืจื ืขื.
ืคืืื ืืื ืื
ืืื ืืื ืฆืืคืจืืื ืืื ืืขื ืืืขื ืืืืฃ ืืขื ืึทืกืืื ืืึทื ื. ืืึธืก ืืื ืืขืืืขื ืืืื ืขืจืฉืืขืจ ืืึธื ืึทื ืืืืืงืืื ื ืืขืจืคืึทืจืื ื, ืืื ืืื ืืื ืฆืืคืจืืื ืึทื ืืื ืืึทื ื ืืึทืข ืืืืกื ืืื C # ืืื ืืจืืขืื ืืื ืืื ืืงืก.
ืืื ืง ืฆื ืืืกืงืึธืจื ืกืขืจืืืขืจ.
ืืื ืืืืง!
ืืงืืจ: www.habr.com