VPS рд╕рд░реНрднрд░рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реА .NET Core рдорд╛ Discord рдмреЛрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

VPS рд╕рд░реНрднрд░рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реА .NET Core рдорд╛ Discord рдмреЛрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рдирдорд╕реНрддреЗ Khabrovites!

рдЖрдЬ рддрдкрд╛рдИрдВрд▓реЗ рдПрдЙрдЯрд╛ рд▓реЗрдЦ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ .NET Core рдорд╛ C# рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрд╕рд░реА рдмреЛрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рд░ рдпрд╕рд▓рд╛рдИ рд░рд┐рдореЛрдЯ рд╕рд░реНрднрд░рдорд╛ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдиреЗрдЫред

рд▓реЗрдЦрдорд╛ рдкреГрд╖реНрдарднреВрдорд┐, рддрдпрд╛рд░реА рдЪрд░рдг, рддрд░реНрдХ рд▓реЗрдЦреНрдиреЗ рд░ рдмрдЯрд▓рд╛рдИ рд░рд┐рдореЛрдЯ рд╕рд░реНрднрд░рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреЗ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫред

рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпрд╕ рд▓реЗрдЦрд▓реЗ рдзреЗрд░реИ рд╢реБрд░реБрдЖрддреАрд╣рд░реВрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕

рдпреЛ рд╕рдмреИ рдПрдХ рдирд┐рджреНрд░рд╛рд╡рд┐рд╣реАрди рд╢рд░рдж рдЛрддреБ рд░рд╛рддрдорд╛ рд╕реБрд░реБ рднрдпреЛ рдЬреБрди рдореИрд▓реЗ Discord рд╕рд░реНрднрд░рдорд╛ рдмрд┐рддрд╛рдПрдБред рднрд░реНрдЦрд░реИ рдЙрд╣рд╛рдБрд╕рдБрдЧ рдЬреЛрдбрд┐рдПрдкрдЫрд┐, рдореИрд▓реЗ рдЙрд╣рд╛рдБрд▓рд╛рдИ рдорд╛рдерд┐-рдорд╛рдерд┐ рдЕрдзреНрдпрдпрди рдЧрд░реНрди рдерд╛рд▓реЗрдВред рдкрд╛рда рдЪреНрдпрд╛рдирд▓ "рдЦрд╛рд▓реА рдкрджрд╣рд░реВ" рдлреЗрд▓рд╛ рдкрд╛рд░реЗрдкрдЫрд┐, рдо рдЪрд╛рд╕реЛ рд░рд╛рдЦреЗрдВ, рдпрд╕рд▓рд╛рдИ рдЦреЛрд▓реЗрдВ, рд░ рдорд▓рд╛рдИ рдЪрд╛рд╕реЛ рдирднрдПрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд╣рд░реВ рдордзреНрдпреЗ рдлреЗрд▓рд╛ рдкрд╛рд░реЗ, рдпреА рд╣реБрдиреН:

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рдмреЛрдЯ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛)
рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ:

  • рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рдЬреНрдЮрд╛рди;
  • рдЖрддреНрдо-рд╕рд┐рдХреНрдиреЗ рдХреНрд╖рдорддрд╛ред

рд╢реБрднрдХрд╛рдордирд╛:

  • рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐рдХреЛ рдХреЛрдб рдмреБрдЭреНрди рдХреНрд╖рдорддрд╛;
  • DISCORD рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреНрдЮрд╛рдиред

рдЙрджреНрджреЗрд╢реНрдпрд╣рд░реВ:

  • рдмреЛрдЯ рд╡рд┐рдХрд╛рд╕;
  • рдмреЛрдЯрдХреЛ рд╕рдорд░реНрдерди рд░ рд░рдЦрд░рдЦрд╛рд╡ред

рддрдкрд╛рдИрдВрдХреЛ рдлрд╛рдЗрджрд╛:

  • рддрдкрд╛рдИрдВрд▓рд╛рдИ рдордирдкрд░реНрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рд╕рдорд░реНрдерди рд░ рдкреНрд░рднрд╛рд╡ рдкрд╛рд░реНрдиреЗ рдЕрд╡рд╕рд░;
  • рдЯреЛрд▓реАрдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ;
  • рд╡рд┐рджреНрдпрдорд╛рди рд╕реАрдкрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рд░ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рдЕрд╡рд╕рд░ред


рдпреЛ рддреБрд░реБрдиреНрддреИ рдорд▓рд╛рдИ рдЪрд╛рд╕реЛ рдерд┐рдпреЛред рд╣реЛ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдпреЛ рдХрд╛рдордХреЛ рд▓рд╛рдЧрд┐ рднреБрдХреНрддрд╛рди рдЧрд░реЗрдирдиреН, рддрд░ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрдмрд╛рдЯ рдХреБрдиреИ рджрд╛рдпрд┐рддреНрд╡рдХреЛ рдорд╛рдЧ рдЧрд░реЗрдирдиреН, рд░ рдпреЛ рдкреЛрд░реНрдЯрдлреЛрд▓рд┐рдпреЛрдорд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫреИрдиред рддреНрдпрд╕рдХрд╛рд░рдг, рдореИрд▓реЗ рд╕рд░реНрднрд░ рдкреНрд░рд╢рд╛рд╕рдХрд▓рд╛рдИ рд▓реЗрдЦреЗрдБ, рд░ рдЙрдирд▓реЗ рдорд▓рд╛рдИ рдЯреНрдпрд╛рдЩреНрдХрдХреЛ рд╡рд┐рд╢реНрд╡рдорд╛ рдЦреЗрд▓рд╛рдбреАрдХреЛ рддрдереНрдпрд╛рдЩреНрдХ рджреЗрдЦрд╛рдЙрдиреЗ рдмреЛрдЯ рд▓реЗрдЦреНрди рднрдиреЗред

рддреИрдпрд╛рд░реА рдЪрд░рдг

VPS рд╕рд░реНрднрд░рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реА .NET Core рдорд╛ Discord рдмреЛрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ
рдбрд┐рд╕реНрдХреНрд░реЛрдб
рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдмреЛрдЯ рд▓реЗрдЦреНрди рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ Discord рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреНрдЫ:

  1. Discord рдЦрд╛рддрд╛рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд▓рд┐рдЩреНрдХ
  2. "рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рдЯреНрдпрд╛рдмрдорд╛, "рдирдпрд╛рдБ рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рдмрдЯрдирдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдмреЛрдЯрд▓рд╛рдИ рдирд╛рдо рджрд┐рдиреБрд╣реЛрд╕реН
  3. рдЖрдлреНрдиреЛ рдмреЛрдЯрдорд╛ рд▓рдЧ рдЗрди рдЧрд░реЗрд░ рд░ "рд╕реЗрдЯрд┐рдЩреНрд╕" рд╕реВрдЪреАрдорд╛ "рдмреЛрдЯ" рдЯреНрдпрд╛рдм рдлреЗрд▓рд╛ рдкрд╛рд░реЗрд░ рдмреЛрдЯ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  4. рдЯреЛрдХрди рдХрддреИ рдмрдЪрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН

рд╡рд╛рд░реНрдорд┐рдВрдЧ

рд╕рд╛рдереИ, рддрдкрд╛рдИрдВрд▓реЗ Wargaming API рдорд╛ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди Wargaming рдорд╛ рдПрдЙрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрд╣рд╛рдБ рдкрдирд┐, рд╕рдмреИ рдХреБрд░рд╛ рд╕рд░рд▓ рдЫ:

  1. рдЖрдлреНрдиреЛ Wargaming рдЦрд╛рддрд╛рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рдпреЛ рд▓рд┐рдЩреНрдХ рджреНрд╡рд╛рд░рд╛
  2. рд╣рд╛рдореА "My Applications" рдорд╛ рдЬрд╛рдиреНрдЫреМрдВ рд░ "Add a new application" рдмрдЯрдирдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдЫреМрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдирд╛рдо рджрд┐рдБрджреИ рд░ рдпрд╕рдХреЛ рдкреНрд░рдХрд╛рд░ рдЪрдпрди рдЧрд░реНрдЫреМрдВред
  3. рдЖрд╡реЗрджрди рдЖрдИрдбреА рдмрдЪрдд рдЧрд░реНрджреИ

рд╕рдлреНрдЯрд╡реЗрдпрд░

рддреНрдпрд╣рд╛рдБ рдкрд╣рд┐рд▓реЗ рдиреИ рдЫрдиреМрдЯрдХреЛ рд╕реНрд╡рддрдиреНрддреНрд░рддрд╛ рдЫред рдХрд╕реИрд▓реЗ рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдХреЛрд╣реА рд░рд╛рдЗрдбрд░, рдХреЛрд╣реА рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЫ, рд░ Vim рдорд╛ рдХреЛрдб рд▓реЗрдЦреНрдЫрдиреН (рдХреЗ рдкрдЫрд┐, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рдХрд┐рдмреЛрд░реНрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН, рд╕рд╣реА?) рдпрджреНрдпрдкрд┐, Discord API рд▓рд╛рдЧреВ рдирдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдЗрдБ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ C# рдкреБрд╕реНрддрдХрд╛рд▓рдп "DSharpPlus" рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрдкрд╛рдИрд▓реЗ рдпрд╕рд▓рд╛рдИ NuGet рдмрд╛рдЯ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛ рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рд╕реНрд░реЛрддрд╣рд░реВ рдЖрдлреИрдВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реЗрд░ред

NuGet рдмрд╛рдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдХрд╕рд░реА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдерд╛рд╣рд╛ рдирднрдПрдХрд╛ рд╡рд╛ рдмрд┐рд░реНрд╕реЗрдХрд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐редрднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрджреЗрд╢рди

  1. рдЯреНрдпрд╛рдмрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рдкрд░рд┐рдпреЛрдЬрдирд╛ - NuGet рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  2. рд╕рдореАрдХреНрд╖рд╛рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЦреЛрдЬ рдХреНрд╖реЗрддреНрд░рдорд╛ "DSharpPlus" рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  3. рдлреНрд░реЗрдорд╡рд░реНрдХ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  4. рд▓рд╛рдн!

рддрдпрд╛рд░реАрдХреЛ рдЪрд░рдг рд╕рдХрд┐рдпреЛ, рддрдкрд╛рдИрдВ рдмреЛрдЯ рд▓реЗрдЦреНрди рдЕрдЧрд╛рдбрд┐ рдмрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рддрд░реНрдХ рд▓реЗрдЦрди

VPS рд╕рд░реНрднрд░рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реА .NET Core рдорд╛ Discord рдмреЛрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рд╣рд╛рдореА рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рд╕рдореНрдкреВрд░реНрдг рддрд░реНрдХрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрджреИрдиреМрдВ, рдо рдХреЗрд╡рд▓ рдмреЛрдЯрджреНрд╡рд╛рд░рд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВрдХреЛ рдЕрд╡рд░реЛрдзрд╕рдБрдЧ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗ рд░ 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 рдорд╛рд░реНрдлрдд, рд╣рд╛рдореА рдЖрд╡рд╢реНрдпрдХ рдЖрджреЗрд╢рд╣рд░реВ рд▓реЗрдЦреНрдЫреМрдВ рдЬреБрди рдмреЛрдЯрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБрдкрд░реНрдЫ:

discord.MessageCreated += async e =>
{
    string message = e.Message.Content;
    if (message.StartsWith("&"))
    {
        await e.Message.RespondAsync(тАЬHello, тАЭ + e.Author.Username);
    }
};

рдЬрд╣рд╛рдБ e.Author.Username рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдЙрдкрдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫред

рдпрд╕рд░реА, рдЬрдм рддрдкрд╛рдЗрдБ & рдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреЗ рдХреБрдиреИ рд╕рдиреНрджреЗрд╢ рдкрдард╛рдЙрдиреБрд╣реБрдиреНрдЫ, рдмреЛрдЯрд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдЕрднрд┐рд╡рд╛рджрди рдЧрд░реНрдиреЗрдЫред

рдпрд╕ рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рдЕрдиреНрддреНрдпрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ 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 - рд╕рд░реНрднрд░рдорд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреБрд╣реЛрд╕реН

VPS рд╕рд░реНрднрд░рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реА .NET Core рдорд╛ Discord рдмреЛрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдмреЛрдЯрдХреЛ рд╕рд╛рде рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рдпрд╕рд▓рд╛рдИ 24/7 рдирд┐рд░рдиреНрддрд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕рд░реНрднрд░рдорд╛ рд╣реЛрд╕реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рддрдереНрдпрдХреЛ рдХрд╛рд░рдг рд╣реЛ рдХрд┐ рдЬрдм рддрдкрд╛рдЗрдБрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ, рдмреЛрдЯ рдкрдирд┐ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫред рддрдкрд╛рдИрдВрд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдЕрдл рдЧрд░реНрдиреЗ рдмрд┐рддреНрддрд┐рдХреИ, рддрдкрд╛рдИрдВрдХреЛ рдмреЛрдЯ рдкрдирд┐ рд╕реБрддреНрдЫред

рдзреЗрд░реИ VPS рд╕рд░реНрднрд░рд╣рд░реВ рдпрд╕ рд╕рдВрд╕рд╛рд░рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреН, рджреБрдмреИ рд╡рд┐рдиреНрдбреЛрдЬ рд░ рд▓рд┐рдирдХреНрд╕рдорд╛, рддрдерд╛рдкрд┐, рдзреЗрд░реИ рдЬрд╕реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рд▓рд┐рдирдХреНрд╕рдорд╛ рд╣реЛрд╕реНрдЯ рдЧрд░реНрди рдзреЗрд░реИ рд╕рд╕реНрддреЛ рдЫред

Discord рд╕рд░реНрднрд░рдорд╛, рдорд▓рд╛рдИ vscale.io рд╕рд▓реНрд▓рд╛рд╣ рджрд┐рдЗрдпреЛ, рд░ рдореИрд▓реЗ рддреБрд░реБрдиреНрддреИ рдпрд╕рдорд╛ Ubuntu рдорд╛ рднрд░реНрдЪреБрдЕрд▓ рд╕рд░реНрднрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдВ рд░ рдмреЛрдЯ рдЕрдкрд▓реЛрдб рдЧрд░реЗрдВред рдо рдпреЛ рд╕рд╛рдЗрдЯрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рд╡рд░реНрдгрди рдЧрд░реНрджрд┐рди, рддрд░ рд╕реАрдзрд╛ рдмреЛрдЯ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рдЬрд╛рдиреНрдЫреБред

рд╕рд░реНрд╡рдкреНрд░рдердо, рддрдкрд╛рдИрдВрд▓реЗ .NET Core рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рд╣рд╛рдореНрд░реЛ рдмрдЯ рдЪрд▓рд╛рдЙрдиреЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдХрд╕рд░реА рдЧрд░реНрдиреЗ рдпрд╣рд╛рдБ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ.

рдЕрд░реНрдХреЛ, рддрдкрд╛рдИрд▓реЗ рдмрдЯрд▓рд╛рдИ Git рд╕реЗрд╡рд╛рдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬрд╕реНрддреИ GitHub рд░ рдЬрд╕реНрддреИ, рд░ рдпрд╕рд▓рд╛рдИ VPS рд╕рд░реНрднрд░рдорд╛ рдХреНрд▓реЛрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╡рд╛ рдЕрдиреНрдп рддрд░рд┐рдХрд╛рдорд╛ рдЖрдлреНрдиреЛ рдмреЛрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдХрдиреНрд╕реЛрд▓ рдорд╛рддреНрд░ рд╣реБрдиреЗрдЫ, рдХреБрдиреИ GUI рдЫреИрдиред рдмрд┐рд▓реНрдХреБрд▓ред

рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдмреЛрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реЗрдкрдЫрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЫ:

  • рд╕рдмреИ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН: dotnet рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛
  • рдмрд┐рд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╕рди: dotnet build name_project.sln -c рд░рд┐рд▓реАрдЬ
  • рдирд┐рд░реНрдорд┐рдд DLL рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН;
  • dotnet name_of_file.dll

рдмрдзрд╛рдИ рдЫ! рддрдкрд╛рдИрдВрдХреЛ рдмреЛрдЯ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫред рдпрджреНрдпрдкрд┐, рдмреЛрдЯ, рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдХрдиреНрд╕реЛрд▓ рдУрдЧрдЯреЗрдХреЛ рдЫ, рд░ VPS рд╕рд░реНрднрд░рдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрди рд╕рдЬрд┐рд▓реЛ рдЫреИрдиред рд╕рд╛рдереИ, рд╕рд░реНрднрд░ рдкреБрди: рд╕реБрд░реБ рднрдПрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдмреЛрдЯрд▓рд╛рдИ рдирдпрд╛рдБ рддрд░рд┐рдХрд╛рдорд╛ рд╕реБрд░реБ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреЗ рдЙрдкрд╛рдпрд╣рд░реВ рдЫрдиреНред рддреА рд╕рдмреИ рд╕рд░реНрднрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдорд╛ рд╕реБрд░реБрд╡рд╛рддрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреН:

  • /etc/init.d рдорд╛ рд░рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдердкреНрдиреБрд╣реЛрд╕реН
  • рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдорд╛ рдЪрд▓реНрдиреЗ рд╕реЗрд╡рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдо рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рдмрд╕реНрдиреЗ рдмрд┐рдиреНрджреБ рджреЗрдЦреНрджрд┐рди, рд╕рдмреИ рдХреБрд░рд╛ рдЗрдиреНрдЯрд░рдиреЗрдЯрдорд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╡рд░рдгрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред

рдирд┐рд╖реНрдХрд░реНрд╖

рдо рдпреЛ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА рд▓рд┐рдПрд░ рдЦреБрд╢реА рдЫреБред рдпреЛ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдмреЛрдЯ рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡ рдерд┐рдпреЛ, рд░ рдо рдЦреБрд╕реА рдЫреБ рдХрд┐ рдореИрд▓реЗ C # рдорд╛ рдирдпрд╛рдБ рдЬреНрдЮрд╛рди рдкрд╛рдПрдХреЛ рдЫреБ, рд░ рд▓рд┐рдирдХреНрд╕рд╕рдБрдЧ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫреБред

Discord рд╕рд░реНрднрд░рдорд╛ рд▓рд┐рдЩреНрдХред Wargaming рдЦреЗрд▓ рдЦреЗрд▓реНрдиреЗрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ред
рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рд▓рд┐рдЩреНрдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ Discord рдмреЛрдЯ рдЕрд╡рд╕реНрдерд┐рдд рдЫред
DSharpPlus рднрдгреНрдбрд╛рд░рдорд╛ рд▓рд┐рдЩреНрдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рддрдкрд╛рдИрдВрдХреЛ рдзреНрдпрд╛рдирдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрдмрд╛рдж!

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди