рд╣реЕрд▓реЛ рдЦрд╛рдмреНрд░реЛрд╡рд┐рдЯреНрд╕!
рдЖрдЬ рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рд▓реЗрдЦ рджрд┐рд╕реЗрд▓ рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ .NET Core рд╡рд░ C# рд╡рд╛рдкрд░реВрди рдмреЙрдЯ рдХрд╕рд╛ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪрд╛ рдЖрдгрд┐ рддреЛ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдХрд╕рд╛ рдЪрд╛рд▓рд╡рд╛рдпрдЪрд╛ рд╣реЗ рджрд╛рдЦрд╡реЗрд▓.
рд▓реЗрдЦрд╛рдд рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА, рддрдпрд╛рд░реАрдЪрд╛ рдЯрдкреНрдкрд╛, рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рд▓рд┐рд╣рд┐рдгреЗ рдЖрдгрд┐ рдмреЙрдЯрд▓рд╛ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕реЗрд▓.
рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣рд╛ рд▓реЗрдЦ рдЕрдиреЗрдХ рдирд╡рд╢рд┐рдХреНрдпрд╛рдВрдирд╛ рдорджрдд рдХрд░реЗрд▓.
prehistory
рд╣реЗ рд╕рд░реНрд╡ рдПрдХрд╛ рдирд┐рджреНрд░рд┐рд╕реНрдд рд╢рд░рдж рдЛрддреВрддреАрд▓ рд░рд╛рддреНрд░реА рд╕реБрд░реВ рдЭрд╛рд▓реЗ рдЬреЗ рдореА рдбрд┐рд╕рдХреЙрд░реНрдб рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдШрд╛рд▓рд╡рд▓реЗ. рдореА рдиреБрдХрддрд╛рдЪ рддреНрдпрд╛рд▓рд╛ рдЬреЙрдИрди рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ рдореА рддреНрдпрд╛рдЪрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реВ рд▓рд╛рдЧрд▓реЛ. рдордЬрдХреВрд░ рдЪреЕрдиреЗрд▓ "рд░рд┐рдХреНрдд рдЬрд╛рдЧрд╛" рд╕рд╛рдкрдбрд▓реНрдпрд╛рдирдВрддрд░, рдорд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рд╡рд╛рдЯрд▓реЗ, рддреЗ рдЙрдШрдбрд▓реЗ рдЖрдгрд┐ рдорд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рдирд╕рд▓реЗрд▓реНрдпрд╛ рдСрдлрд░рдордзреНрдпреЗ рд╕рд╛рдкрдбрд▓реЗ, рдпрд╛ рдЖрд╣реЗрдд:
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рдмреЙрдЯ рдбреЗрд╡реНрд╣рд▓рдкрд░)
рдЖрд╡рд╢реНрдпрдХрддрд╛:
- рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдЪреЗ рдЬреНрдЮрд╛рди;
- рд╕реНрд╡рдд: рдЪреА рд╢рд┐рдХрдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛.
╨Я╨╛╨╢╨╡╨╗╨░╨╜╨╕╤П:
- рдЗрддрд░ рд▓реЛрдХрд╛рдВрдЪреЗ рдХреЛрдб рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛;
- DISCORD рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдЬреНрдЮрд╛рди.
рдХрд╛рд░реНрдпреЗ
- рдмреЙрдЯ рд╡рд┐рдХрд╛рд╕;
- рдмреЙрдЯрдЪреЗ рд╕рдорд░реНрдерди рдЖрдгрд┐ рджреЗрдЦрднрд╛рд▓.
рддреБрдордЪрд╛ рдлрд╛рдпрджрд╛:
- рдЖрдкрд▓реНрдпрд╛ рдЖрд╡рдбреАрдЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА;
- рд╕рдВрдШрд╛рдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдорд┐рд│рд╡рдгреЗ;
- рд╡рд┐рджреНрдпрдорд╛рди рдХреМрд╢рд▓реНрдпреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рд╕реБрдзрд╛рд░рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА.
рд╣реЗ рдорд▓рд╛ рд▓рдЧреЗрдЪ рд░реБрдЪрд▓реЗ. рд╣реЛрдп, рддреНрдпрд╛рдВрдиреА рдпрд╛ рдХрд╛рдорд╛рд╕рд╛рдареА рдкреИрд╕реЗ рджрд┐рд▓реЗ рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдиреА рддреБрдордЪреНрдпрд╛рдХрдбреВрди рдХреЛрдгрддреЗрд╣реА рджрд╛рдпрд┐рддреНрд╡ рдорд╛рдЧрд┐рддрд▓реЗ рдирд╛рд╣реА рдЖрдгрд┐ рддреЗ рдкреЛрд░реНрдЯрдлреЛрд▓рд┐рдУрдордзреНрдпреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА. рдореНрд╣рдгреВрди, рдореА рд╕рд░реНрд╡реНрд╣рд░ рдкреНрд░рд╢рд╛рд╕рдХрд╛рд▓рд╛ рд▓рд┐рд╣рд┐рд▓реЗ рдЖрдгрд┐ рддреНрдпрд╛рдиреЗ рдорд▓рд╛ рдПрдХ рдмреЙрдЯ рд▓рд┐рд╣рд╛рдпрд▓рд╛ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдЬреЗ рд╡рд░реНрд▓реНрдб рдСрдл рдЯрдБрдХреНрд╕рдордзреНрдпреЗ рдЦреЗрд│рд╛рдбреВрдЪреА рдЖрдХрдбреЗрд╡рд╛рд░реА рджрд░реНрд╢рд╡реЗрд▓.
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдЯреЗрдЬ
рдбрд┐рд╕реНрдХреНрд░реЛрдб
рдЖрдореНрд╣реА рдЖрдордЪрд╛ рдмреЙрдЯ рд▓рд┐рд╣рд╛рдпрд▓рд╛ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдЖрдореНрд╣рд╛рд▓рд╛ рддреЗ Discord рд╕рд╛рдареА рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреБрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ:
- рдбрд┐рд╕рдХреЙрд░реНрдб рдЦрд╛рддреНрдпрд╛рдд рд▓реЙрдЧ рдЗрди рдХрд░рд╛
рджреБрд╡рд╛ - "рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рдЯреЕрдмрдордзреНрдпреЗ, "рдирд╡реАрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рдмрдЯрдгрд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛ рдЖрдгрд┐ рдмреЙрдЯрд▓рд╛ рдирд╛рд╡ рджреНрдпрд╛
- рддреБрдордЪреНрдпрд╛ рдмреЙрдЯрдордзреНрдпреЗ рд▓реЙрдЧ рдЗрди рдХрд░реВрди рдЖрдгрд┐ "рд╕реЗрдЯрд┐рдВрдЧреНрдЬ" рд╕реВрдЪреАрдордзреНрдпреЗ "рдмреЙрдЯ" рдЯреЕрдм рд╢реЛрдзреВрди рдмреЙрдЯ рдЯреЛрдХрди рдорд┐рд│рд╡рд╛
- рдЯреЛрдХрди рдХреБрдареЗрддрд░реА рд╕реЗрд╡реНрд╣ рдХрд░рд╛
рд╡рд╛рд░реНрдорд┐рдВрдЧ
рддрд╕реЗрдЪ, Wargaming API рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдорд┐рд│рд╡рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ Wargaming рдордзреНрдпреЗ рдПрдХ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпреЗрдереЗ рджреЗрдЦреАрд▓, рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реЛрдкреЗ рдЖрд╣реЗ:
- рддреБрдордЪреНрдпрд╛ Wargaming рдЦрд╛рддреНрдпрд╛рдд рд▓реЙрдЧ рдЗрди рдХрд░рд╛
рдпрд╛ рд▓рд┐рдВрдХрджреНрд╡рд╛рд░реЗ - рдЖрдореНрд╣реА "рдорд╛рдЭреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рд╡рд░ рдЬрд╛рддреЛ рдЖрдгрд┐ "рдирд╡реАрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреЛрдбрд╛" рдмрдЯрдгрд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЛ, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреЗ рдирд╛рд╡ рджреЗрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдЪрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд╡рдбрддреЛ.
- рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдпрдбреА рд╕реЗрд╡реНрд╣ рдХрд░рдд рдЖрд╣реЗ
рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░
рдирд┐рд╡рдбреАрдЪреЗ рд╕реНрд╡рд╛рддрдВрддреНрд░реНрдп рдЖрдзреАрдЪ рдЖрд╣реЗ. рдХреЛрдгреАрддрд░реА рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУ рд╡рд╛рдкрд░рддреЛ, рдХреЛрдгреА рд░рд╛рдпрдбрд░, рдХреЛрдгреАрддрд░реА рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЕрд╕рддреЛ рдЖрдгрд┐ рд╡рд┐рдордордзреНрдпреЗ рдХреЛрдб рд▓рд┐рд╣рд┐рддреЛ (рдЕрдЦреЗрд░, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдлрдХреНрдд рдХреАрдмреЛрд░реНрдб рд╡рд╛рдкрд░рддрд╛рдд, рдмрд░реЛрдмрд░?). рддрдерд╛рдкрд┐, Discord API рд▓рд╛рдЧреВ рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдЕрдирдзрд┐рдХреГрдд C# рд▓рд╛рдпрдмреНрд░рд░реА тАЬDSharpPlusтАЭ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛. рд╣реЗ рдПрдХрддрд░ NuGet рд╡рд░реВрди рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдХрд┐рдВрд╡рд╛ рд╕реНрд╡рддрдГ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рд╕реНрд░реЛрдд рддрдпрд╛рд░ рдХрд░реВрди.
рдЬреНрдпрд╛рдВрдирд╛ NuGet рд╡рд░реВрди рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдХрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рд╛рдпрдЪреЗ рд╣реЗ рдорд╛рд╣рд┐рдд рдирд╛рд╣реА рдХрд┐рдВрд╡рд╛ рд╡рд┐рд╕рд░рд▓реЗ рдЖрд╣реЗрдд рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА.рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУрд╕рд╛рдареА рд╕реВрдЪрдирд╛
- рдЯреЕрдмрд╡рд░ рдЬрд╛ рдкреНрд░рдХрд▓реНрдк - NuGet рдкреЕрдХреЗрдЬреЗрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛;
- рдкреБрдирд░рд╛рд╡рд▓реЛрдХрдирд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛ рдЖрдгрд┐ рд╢реЛрдз рдлреАрд▓реНрдбрдордзреНрдпреЗ "DSharpPlus" рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛;
- рдлреНрд░реЗрдорд╡рд░реНрдХ рдирд┐рд╡рдбрд╛ рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛;
- рд▓рд╛рдн!
рддрдпрд╛рд░реАрдЪрд╛ рдЯрдкреНрдкрд╛ рд╕рдВрдкрд▓рд╛ рдЖрд╣реЗ, рддреБрдореНрд╣реА рдмреЙрдЯ рд▓рд┐рд╣рд╛рдпрд▓рд╛ рдкреБрдвреЗ рдЬрд╛рдК рд╢рдХрддрд╛.
рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рд▓реЗрдЦрди
рдЖрдореНрд╣реА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рд╕рдВрдкреВрд░реНрдг рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░рд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдореА рдлрдХреНрдд рдмреЙрдЯрджреНрд╡рд╛рд░реЗ рд╕рдВрджреЗрд╢рд╛рдВрдЪреНрдпрд╛ рд╡реНрдпрддреНрдпрдпрд╛рд╕рд╣ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ Wargaming API рд╕рд╣ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ рд╣реЗ рджрд░реНрд╢рд╡реЗрд▓.
Discord bot рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреЗ рд╣реЗ рд╕реНрдЯреЕрдЯрд┐рдХ 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 рджреНрд╡рд╛рд░реЗ, рдЖрдореНрд╣реА рдЖрд╡рд╢реНрдпрдХ рдЖрдЬреНрдЮрд╛ рд▓рд┐рд╣рд┐рддреЛ рдЬреНрдпрд╛ рдмреЙрдЯрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд:
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 рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╣реЛрд╕реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдореБрд│реЗ рдЖрд╣реЗ рдХреА рдЬреЗрд╡реНрд╣рд╛ рддреБрдордЪрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓реВ рдЕрд╕рддреЛ, рддреЗрд╡реНрд╣рд╛ рдмреЙрдЯ рджреЗрдЦреАрд▓ рдЪрд╛рд▓реВ рдЕрд╕рддреЛ. рддреБрдореНрд╣реА рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдж рдХрд░рддрд╛рдЪ рддреБрдордЪрд╛ рдмреЙрдЯрд╣реА рдЭреЛрдкрддреЛ.
рд╡рд┐рдВрдбреЛрдЬ рдЖрдгрд┐ рд▓рд┐рдирдХреНрд╕рд╡рд░ рдпрд╛ рдЬрдЧрд╛рдд рдЕрдиреЗрдХ рд╡реНрд╣реАрдкреАрдПрд╕ рд╕рд░реНрд╡реНрд╣рд░ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗрдд, рддрдерд╛рдкрд┐, рдмрд╣реБрддреЗрдХ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╣реЛрд╕реНрдЯ рдХрд░рдгреЗ рдЦреВрдкрдЪ рд╕реНрд╡рд╕реНрдд рдЖрд╣реЗ.
рдбрд┐рд╕рдХреЙрд░реНрдб рд╕рд░реНрд╡реНрд╣рд░рд╡рд░, рдорд▓рд╛ vscale.io рдЪрд╛ рд╕рд▓реНрд▓рд╛ рджреЗрдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрдгрд┐ рдореА рд▓рдЧреЗрдЪ рддреНрдпрд╛рд╡рд░ рдЙрдмрдВрдЯреВрд╡рд░ рдПрдХ рдЖрднрд╛рд╕реА рд╕рд░реНрд╡реНрд╣рд░ рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЖрдгрд┐ рдмреЙрдЯ рдЕрдкрд▓реЛрдб рдХреЗрд▓рд╛. рд╣реА рд╕рд╛рдЗрдЯ рдХрд╢реА рдХрд╛рд░реНрдп рдХрд░рддреЗ рдпрд╛рдЪреЗ рдореА рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдереЗрдЯ рдмреЙрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрдЬрд╡рд░ рдЬрд╛рдИрди.
рд╕рд░реНрд╡рдкреНрд░рдердо, рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЬреЗ рдЖрдордЪреЗ .NET Core рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдмреЙрдЯ рдЪрд╛рд▓рд╡реЗрд▓.
рдкреБрдвреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ GitHub рдЖрдгрд┐ рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рд╛рд░рдЦреНрдпрд╛ Git рд╕реЗрд╡реЗрд╡рд░ рдмреЙрдЯ рдЕрдкрд▓реЛрдб рдХрд░рдгреЗ рдЖрдгрд┐ VPS рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдХреНрд▓реЛрди рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдорд╛рд░реНрдЧрд╛рдВрдиреА рддреБрдордЪрд╛ рдмреЙрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдлрдХреНрдд рдХрдиреНрд╕реЛрд▓ рдЕрд╕реЗрд▓, GUI рдирд╛рд╣реА. рдЕрдЬрд┐рдмрд╛рдд.
рддреБрдореНрд╣реА рддреБрдордЪрд╛ рдмреЙрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреБрдореНрд╣рд╛рд▓рд╛ рддреЛ рдЪрд╛рд▓рд╡рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓. рдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:
- рд╕рд░реНрд╡ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рд╛: рдбреЙрдЯрдиреЗрдЯ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рд╛
- рдмрд┐рд▓реНрдб рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди: dotnet build name_project.sln -c рд░рд┐рд▓реАрдЬ
- рдмрд┐рд▓реНрдЯ DLL рд╡рд░ рдЬрд╛;
- dotnet name_of_file.dll
рдЕрднрд┐рдирдВрджрди! рддреБрдордЪрд╛ рдмреЙрдЯ рдЪрд╛рд▓реВ рдЖрд╣реЗ. рддрдерд╛рдкрд┐, рдмреЙрдЯ, рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рдХрдиреНрд╕реЛрд▓ рд╡реНрдпрд╛рдкрддреЛ рдЖрдгрд┐ VPS рд╕рд░реНрд╡реНрд╣рд░рдордзреВрди рдмрд╛рд╣реЗрд░ рдкрдбрдгреЗ рдЗрддрдХреЗ рд╕реЛрдкреЗ рдирд╛рд╣реА. рддрд╕реЗрдЪ, рд╕рд░реНрд╡реНрд╣рд░ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдЭрд╛рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдирд╡реАрди рдкрджреНрдзрддреАрдиреЗ рдмреЙрдЯ рд╕реБрд░реВ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓. рдкрд░рд┐рд╕реНрдерд┐рддреАрддреВрди рдмрд╛рд╣реЗрд░ рдкрдбрдгреНрдпрд╛рдЪреЗ рджреЛрди рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд. рддреЗ рд╕рд░реНрд╡ рд╕рд░реНрд╡реНрд╣рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрд╡рд░ рд▓реЙрдиреНрдЪрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗрдд:
- /etc/init.d рдордзреНрдпреЗ рд░рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╛
- рдПрдХ рд╕реЗрд╡рд╛ рддрдпрд╛рд░ рдХрд░рд╛ рдЬреА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрд╡рд░ рдЪрд╛рд▓реЗрд▓.
рдорд▓рд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдмрджреНрджрд▓ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд░рд╛рд╣рдгреНрдпрд╛рдЪрд╛ рдореБрджреНрджрд╛ рджрд┐рд╕рдд рдирд╛рд╣реА, рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрдЪреЗ рдкреБрд░реЗрд╕реЗ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ.
рдирд┐рд╖реНрдХрд░реНрд╖
рдореА рд╣реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реНрд╡реАрдХрд╛рд░рд▓реА рдпрд╛рдЪрд╛ рдорд▓рд╛ рдЖрдирдВрдж рдЖрд╣реЗ. рд╣рд╛ рдорд╛рдЭрд╛ рдкрд╣рд┐рд▓рд╛ рдмреЙрдЯ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рдЕрдиреБрднрд╡ рд╣реЛрддрд╛, рдЖрдгрд┐ рдорд▓рд╛ рдЖрдирдВрдж рдЖрд╣реЗ рдХреА рдорд▓рд╛ C# рдордзреНрдпреЗ рдирд╡реАрди рдЬреНрдЮрд╛рди рдорд┐рд│рд╛рд▓реЗ, рдЖрдгрд┐ Linux рд╕рд╣ рдХрд╛рдо рдХреЗрд▓реЗ.
рдбрд┐рд╕реНрдХреЙрд░реНрдб рд╕рд░реНрд╡реНрд╣рд░рд╢реА рджреБрд╡рд╛.
рдЖрдкрдг рд▓рдХреНрд╖ рджрд┐рд▓реНрдпрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж!
рд╕реНрддреНрд░реЛрдд: www.habr.com