VPS рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╣ .NET Core рд╡рд░ Discord рдмреЙрдЯ рддрдпрд╛рд░ рдХрд░рдгреЗ

VPS рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╣ .NET Core рд╡рд░ Discord рдмреЙрдЯ рддрдпрд╛рд░ рдХрд░рдгреЗ

рд╣реЕрд▓реЛ рдЦрд╛рдмреНрд░реЛрд╡рд┐рдЯреНрд╕!

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

рд▓реЗрдЦрд╛рдд рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА, рддрдпрд╛рд░реАрдЪрд╛ рдЯрдкреНрдкрд╛, рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рд▓рд┐рд╣рд┐рдгреЗ рдЖрдгрд┐ рдмреЙрдЯрд▓рд╛ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕реЗрд▓.

рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣рд╛ рд▓реЗрдЦ рдЕрдиреЗрдХ рдирд╡рд╢рд┐рдХреНрдпрд╛рдВрдирд╛ рдорджрдд рдХрд░реЗрд▓.

prehistory

рд╣реЗ рд╕рд░реНрд╡ рдПрдХрд╛ рдирд┐рджреНрд░рд┐рд╕реНрдд рд╢рд░рдж рдЛрддреВрддреАрд▓ рд░рд╛рддреНрд░реА рд╕реБрд░реВ рдЭрд╛рд▓реЗ рдЬреЗ рдореА рдбрд┐рд╕рдХреЙрд░реНрдб рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдШрд╛рд▓рд╡рд▓реЗ. рдореА рдиреБрдХрддрд╛рдЪ рддреНрдпрд╛рд▓рд╛ рдЬреЙрдИрди рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ рдореА рддреНрдпрд╛рдЪрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реВ рд▓рд╛рдЧрд▓реЛ. рдордЬрдХреВрд░ рдЪреЕрдиреЗрд▓ "рд░рд┐рдХреНрдд рдЬрд╛рдЧрд╛" рд╕рд╛рдкрдбрд▓реНрдпрд╛рдирдВрддрд░, рдорд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рд╡рд╛рдЯрд▓реЗ, рддреЗ рдЙрдШрдбрд▓реЗ рдЖрдгрд┐ рдорд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рдирд╕рд▓реЗрд▓реНрдпрд╛ рдСрдлрд░рдордзреНрдпреЗ рд╕рд╛рдкрдбрд▓реЗ, рдпрд╛ рдЖрд╣реЗрдд:

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рдмреЙрдЯ рдбреЗрд╡реНрд╣рд▓рдкрд░)
рдЖрд╡рд╢реНрдпрдХрддрд╛:

  • рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдЪреЗ рдЬреНрдЮрд╛рди;
  • рд╕реНрд╡рдд: рдЪреА рд╢рд┐рдХрдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛.

╨Я╨╛╨╢╨╡╨╗╨░╨╜╨╕╤П:

  • рдЗрддрд░ рд▓реЛрдХрд╛рдВрдЪреЗ рдХреЛрдб рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛;
  • DISCORD рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдЬреНрдЮрд╛рди.

рдХрд╛рд░реНрдпреЗ

  • рдмреЙрдЯ рд╡рд┐рдХрд╛рд╕;
  • рдмреЙрдЯрдЪреЗ рд╕рдорд░реНрдерди рдЖрдгрд┐ рджреЗрдЦрднрд╛рд▓.

рддреБрдордЪрд╛ рдлрд╛рдпрджрд╛:

  • рдЖрдкрд▓реНрдпрд╛ рдЖрд╡рдбреАрдЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА;
  • рд╕рдВрдШрд╛рдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдорд┐рд│рд╡рдгреЗ;
  • рд╡рд┐рджреНрдпрдорд╛рди рдХреМрд╢рд▓реНрдпреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рд╕реБрдзрд╛рд░рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА.


рд╣реЗ рдорд▓рд╛ рд▓рдЧреЗрдЪ рд░реБрдЪрд▓реЗ. рд╣реЛрдп, рддреНрдпрд╛рдВрдиреА рдпрд╛ рдХрд╛рдорд╛рд╕рд╛рдареА рдкреИрд╕реЗ рджрд┐рд▓реЗ рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдиреА рддреБрдордЪреНрдпрд╛рдХрдбреВрди рдХреЛрдгрддреЗрд╣реА рджрд╛рдпрд┐рддреНрд╡ рдорд╛рдЧрд┐рддрд▓реЗ рдирд╛рд╣реА рдЖрдгрд┐ рддреЗ рдкреЛрд░реНрдЯрдлреЛрд▓рд┐рдУрдордзреНрдпреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА. рдореНрд╣рдгреВрди, рдореА рд╕рд░реНрд╡реНрд╣рд░ рдкреНрд░рд╢рд╛рд╕рдХрд╛рд▓рд╛ рд▓рд┐рд╣рд┐рд▓реЗ рдЖрдгрд┐ рддреНрдпрд╛рдиреЗ рдорд▓рд╛ рдПрдХ рдмреЙрдЯ рд▓рд┐рд╣рд╛рдпрд▓рд╛ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдЬреЗ рд╡рд░реНрд▓реНрдб рдСрдл рдЯрдБрдХреНрд╕рдордзреНрдпреЗ рдЦреЗрд│рд╛рдбреВрдЪреА рдЖрдХрдбреЗрд╡рд╛рд░реА рджрд░реНрд╢рд╡реЗрд▓.

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдЯреЗрдЬ

VPS рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╣ .NET Core рд╡рд░ Discord рдмреЙрдЯ рддрдпрд╛рд░ рдХрд░рдгреЗ
рдбрд┐рд╕реНрдХреНрд░реЛрдб
рдЖрдореНрд╣реА рдЖрдордЪрд╛ рдмреЙрдЯ рд▓рд┐рд╣рд╛рдпрд▓рд╛ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдЖрдореНрд╣рд╛рд▓рд╛ рддреЗ Discord рд╕рд╛рдареА рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреБрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ:

  1. рдбрд┐рд╕рдХреЙрд░реНрдб рдЦрд╛рддреНрдпрд╛рдд рд▓реЙрдЧ рдЗрди рдХрд░рд╛ рджреБрд╡рд╛
  2. "рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рдЯреЕрдмрдордзреНрдпреЗ, "рдирд╡реАрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рдмрдЯрдгрд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛ рдЖрдгрд┐ рдмреЙрдЯрд▓рд╛ рдирд╛рд╡ рджреНрдпрд╛
  3. рддреБрдордЪреНрдпрд╛ рдмреЙрдЯрдордзреНрдпреЗ рд▓реЙрдЧ рдЗрди рдХрд░реВрди рдЖрдгрд┐ "рд╕реЗрдЯрд┐рдВрдЧреНрдЬ" рд╕реВрдЪреАрдордзреНрдпреЗ "рдмреЙрдЯ" рдЯреЕрдм рд╢реЛрдзреВрди рдмреЙрдЯ рдЯреЛрдХрди рдорд┐рд│рд╡рд╛
  4. рдЯреЛрдХрди рдХреБрдареЗрддрд░реА рд╕реЗрд╡реНрд╣ рдХрд░рд╛

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

рддрд╕реЗрдЪ, Wargaming API рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдорд┐рд│рд╡рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ Wargaming рдордзреНрдпреЗ рдПрдХ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпреЗрдереЗ рджреЗрдЦреАрд▓, рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реЛрдкреЗ рдЖрд╣реЗ:

  1. рддреБрдордЪреНрдпрд╛ Wargaming рдЦрд╛рддреНрдпрд╛рдд рд▓реЙрдЧ рдЗрди рдХрд░рд╛ рдпрд╛ рд▓рд┐рдВрдХрджреНрд╡рд╛рд░реЗ
  2. рдЖрдореНрд╣реА "рдорд╛рдЭреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рд╡рд░ рдЬрд╛рддреЛ рдЖрдгрд┐ "рдирд╡реАрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреЛрдбрд╛" рдмрдЯрдгрд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЛ, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреЗ рдирд╛рд╡ рджреЗрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдЪрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд╡рдбрддреЛ.
  3. рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдпрдбреА рд╕реЗрд╡реНрд╣ рдХрд░рдд рдЖрд╣реЗ

рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░

рдирд┐рд╡рдбреАрдЪреЗ рд╕реНрд╡рд╛рддрдВрддреНрд░реНрдп рдЖрдзреАрдЪ рдЖрд╣реЗ. рдХреЛрдгреАрддрд░реА рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУ рд╡рд╛рдкрд░рддреЛ, рдХреЛрдгреА рд░рд╛рдпрдбрд░, рдХреЛрдгреАрддрд░реА рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЕрд╕рддреЛ рдЖрдгрд┐ рд╡рд┐рдордордзреНрдпреЗ рдХреЛрдб рд▓рд┐рд╣рд┐рддреЛ (рдЕрдЦреЗрд░, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдлрдХреНрдд рдХреАрдмреЛрд░реНрдб рд╡рд╛рдкрд░рддрд╛рдд, рдмрд░реЛрдмрд░?). рддрдерд╛рдкрд┐, Discord API рд▓рд╛рдЧреВ рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдЕрдирдзрд┐рдХреГрдд C# рд▓рд╛рдпрдмреНрд░рд░реА тАЬDSharpPlusтАЭ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛. рд╣реЗ рдПрдХрддрд░ NuGet рд╡рд░реВрди рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдХрд┐рдВрд╡рд╛ рд╕реНрд╡рддрдГ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рд╕реНрд░реЛрдд рддрдпрд╛рд░ рдХрд░реВрди.

рдЬреНрдпрд╛рдВрдирд╛ NuGet рд╡рд░реВрди рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдХрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рд╛рдпрдЪреЗ рд╣реЗ рдорд╛рд╣рд┐рдд рдирд╛рд╣реА рдХрд┐рдВрд╡рд╛ рд╡рд┐рд╕рд░рд▓реЗ рдЖрд╣реЗрдд рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА.рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУрд╕рд╛рдареА рд╕реВрдЪрдирд╛

  1. рдЯреЕрдмрд╡рд░ рдЬрд╛ рдкреНрд░рдХрд▓реНрдк - NuGet рдкреЕрдХреЗрдЬреЗрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛;
  2. рдкреБрдирд░рд╛рд╡рд▓реЛрдХрдирд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛ рдЖрдгрд┐ рд╢реЛрдз рдлреАрд▓реНрдбрдордзреНрдпреЗ "DSharpPlus" рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛;
  3. рдлреНрд░реЗрдорд╡рд░реНрдХ рдирд┐рд╡рдбрд╛ рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛;
  4. рд▓рд╛рдн!

рддрдпрд╛рд░реАрдЪрд╛ рдЯрдкреНрдкрд╛ рд╕рдВрдкрд▓рд╛ рдЖрд╣реЗ, рддреБрдореНрд╣реА рдмреЙрдЯ рд▓рд┐рд╣рд╛рдпрд▓рд╛ рдкреБрдвреЗ рдЬрд╛рдК рд╢рдХрддрд╛.

рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рд▓реЗрдЦрди

VPS рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╣ .NET Core рд╡рд░ Discord рдмреЙрдЯ рддрдпрд╛рд░ рдХрд░рдгреЗ

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

VPS рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╣ .NET Core рд╡рд░ Discord рдмреЙрдЯ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдПрдХрджрд╛ рддреБрдореНрд╣реА рдмреЙрдЯ рдкреВрд░реНрдг рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреЗ рд╕рддрдд 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 рд╕рд╣ рдХрд╛рдо рдХреЗрд▓реЗ.

рдбрд┐рд╕реНрдХреЙрд░реНрдб рд╕рд░реНрд╡реНрд╣рд░рд╢реА рджреБрд╡рд╛. рдЬреЗ рд╡реЙрд░рдЧреЗрдорд┐рдВрдЧ рдЦреЗрд│ рдЦреЗрд│рддрд╛рдд рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА.
рдбрд┐рд╕рдХреЙрд░реНрдб рдмреЙрдЯ рд╕реНрдерд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрд╢реА рд▓рд┐рдВрдХ рдХрд░рд╛.
DSharpPlus рднрд╛рдВрдбрд╛рд░рд╛рдЪрд╛ рджреБрд╡рд╛.
рдЖрдкрдг рд▓рдХреНрд╖ рджрд┐рд▓реНрдпрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж!

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛