рдирдорд╕реНрддреЗ Khabrovites!
рдЖрдЬ рддрдкрд╛рдИрдВрд▓реЗ рдПрдЙрдЯрд╛ рд▓реЗрдЦ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ .NET Core рдорд╛ C# рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрд╕рд░реА рдмреЛрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рд░ рдпрд╕рд▓рд╛рдИ рд░рд┐рдореЛрдЯ рд╕рд░реНрднрд░рдорд╛ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдиреЗрдЫред
рд▓реЗрдЦрдорд╛ рдкреГрд╖реНрдарднреВрдорд┐, рддрдпрд╛рд░реА рдЪрд░рдг, рддрд░реНрдХ рд▓реЗрдЦреНрдиреЗ рд░ рдмрдЯрд▓рд╛рдИ рд░рд┐рдореЛрдЯ рд╕рд░реНрднрд░рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреЗ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫред
рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпрд╕ рд▓реЗрдЦрд▓реЗ рдзреЗрд░реИ рд╢реБрд░реБрдЖрддреАрд╣рд░реВрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред
рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕
рдпреЛ рд╕рдмреИ рдПрдХ рдирд┐рджреНрд░рд╛рд╡рд┐рд╣реАрди рд╢рд░рдж рдЛрддреБ рд░рд╛рддрдорд╛ рд╕реБрд░реБ рднрдпреЛ рдЬреБрди рдореИрд▓реЗ Discord рд╕рд░реНрднрд░рдорд╛ рдмрд┐рддрд╛рдПрдБред рднрд░реНрдЦрд░реИ рдЙрд╣рд╛рдБрд╕рдБрдЧ рдЬреЛрдбрд┐рдПрдкрдЫрд┐, рдореИрд▓реЗ рдЙрд╣рд╛рдБрд▓рд╛рдИ рдорд╛рдерд┐-рдорд╛рдерд┐ рдЕрдзреНрдпрдпрди рдЧрд░реНрди рдерд╛рд▓реЗрдВред рдкрд╛рда рдЪреНрдпрд╛рдирд▓ "рдЦрд╛рд▓реА рдкрджрд╣рд░реВ" рдлреЗрд▓рд╛ рдкрд╛рд░реЗрдкрдЫрд┐, рдо рдЪрд╛рд╕реЛ рд░рд╛рдЦреЗрдВ, рдпрд╕рд▓рд╛рдИ рдЦреЛрд▓реЗрдВ, рд░ рдорд▓рд╛рдИ рдЪрд╛рд╕реЛ рдирднрдПрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд╣рд░реВ рдордзреНрдпреЗ рдлреЗрд▓рд╛ рдкрд╛рд░реЗ, рдпреА рд╣реБрдиреН:
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рдмреЛрдЯ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛)
рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ:
- рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рдЬреНрдЮрд╛рди;
- рдЖрддреНрдо-рд╕рд┐рдХреНрдиреЗ рдХреНрд╖рдорддрд╛ред
рд╢реБрднрдХрд╛рдордирд╛:
- рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐рдХреЛ рдХреЛрдб рдмреБрдЭреНрди рдХреНрд╖рдорддрд╛;
- DISCORD рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреНрдЮрд╛рдиред
рдЙрджреНрджреЗрд╢реНрдпрд╣рд░реВ:
- рдмреЛрдЯ рд╡рд┐рдХрд╛рд╕;
- рдмреЛрдЯрдХреЛ рд╕рдорд░реНрдерди рд░ рд░рдЦрд░рдЦрд╛рд╡ред
рддрдкрд╛рдИрдВрдХреЛ рдлрд╛рдЗрджрд╛:
- рддрдкрд╛рдИрдВрд▓рд╛рдИ рдордирдкрд░реНрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рд╕рдорд░реНрдерди рд░ рдкреНрд░рднрд╛рд╡ рдкрд╛рд░реНрдиреЗ рдЕрд╡рд╕рд░;
- рдЯреЛрд▓реАрдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ;
- рд╡рд┐рджреНрдпрдорд╛рди рд╕реАрдкрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рд░ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рдЕрд╡рд╕рд░ред
рдпреЛ рддреБрд░реБрдиреНрддреИ рдорд▓рд╛рдИ рдЪрд╛рд╕реЛ рдерд┐рдпреЛред рд╣реЛ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдпреЛ рдХрд╛рдордХреЛ рд▓рд╛рдЧрд┐ рднреБрдХреНрддрд╛рди рдЧрд░реЗрдирдиреН, рддрд░ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрдмрд╛рдЯ рдХреБрдиреИ рджрд╛рдпрд┐рддреНрд╡рдХреЛ рдорд╛рдЧ рдЧрд░реЗрдирдиреН, рд░ рдпреЛ рдкреЛрд░реНрдЯрдлреЛрд▓рд┐рдпреЛрдорд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫреИрдиред рддреНрдпрд╕рдХрд╛рд░рдг, рдореИрд▓реЗ рд╕рд░реНрднрд░ рдкреНрд░рд╢рд╛рд╕рдХрд▓рд╛рдИ рд▓реЗрдЦреЗрдБ, рд░ рдЙрдирд▓реЗ рдорд▓рд╛рдИ рдЯреНрдпрд╛рдЩреНрдХрдХреЛ рд╡рд┐рд╢реНрд╡рдорд╛ рдЦреЗрд▓рд╛рдбреАрдХреЛ рддрдереНрдпрд╛рдЩреНрдХ рджреЗрдЦрд╛рдЙрдиреЗ рдмреЛрдЯ рд▓реЗрдЦреНрди рднрдиреЗред
рддреИрдпрд╛рд░реА рдЪрд░рдг
рдбрд┐рд╕реНрдХреНрд░реЛрдб
рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдмреЛрдЯ рд▓реЗрдЦреНрди рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ Discord рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреНрдЫ:
- Discord рдЦрд╛рддрд╛рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН
рд▓рд┐рдЩреНрдХ - "рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рдЯреНрдпрд╛рдмрдорд╛, "рдирдпрд╛рдБ рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рдмрдЯрдирдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдмреЛрдЯрд▓рд╛рдИ рдирд╛рдо рджрд┐рдиреБрд╣реЛрд╕реН
- рдЖрдлреНрдиреЛ рдмреЛрдЯрдорд╛ рд▓рдЧ рдЗрди рдЧрд░реЗрд░ рд░ "рд╕реЗрдЯрд┐рдЩреНрд╕" рд╕реВрдЪреАрдорд╛ "рдмреЛрдЯ" рдЯреНрдпрд╛рдм рдлреЗрд▓рд╛ рдкрд╛рд░реЗрд░ рдмреЛрдЯ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдЯреЛрдХрди рдХрддреИ рдмрдЪрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
рд╡рд╛рд░реНрдорд┐рдВрдЧ
рд╕рд╛рдереИ, рддрдкрд╛рдИрдВрд▓реЗ Wargaming API рдорд╛ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди Wargaming рдорд╛ рдПрдЙрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрд╣рд╛рдБ рдкрдирд┐, рд╕рдмреИ рдХреБрд░рд╛ рд╕рд░рд▓ рдЫ:
- рдЖрдлреНрдиреЛ Wargaming рдЦрд╛рддрд╛рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдпреЛ рд▓рд┐рдЩреНрдХ рджреНрд╡рд╛рд░рд╛ - рд╣рд╛рдореА "My Applications" рдорд╛ рдЬрд╛рдиреНрдЫреМрдВ рд░ "Add a new application" рдмрдЯрдирдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдЫреМрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдирд╛рдо рджрд┐рдБрджреИ рд░ рдпрд╕рдХреЛ рдкреНрд░рдХрд╛рд░ рдЪрдпрди рдЧрд░реНрдЫреМрдВред
- рдЖрд╡реЗрджрди рдЖрдИрдбреА рдмрдЪрдд рдЧрд░реНрджреИ
рд╕рдлреНрдЯрд╡реЗрдпрд░
рддреНрдпрд╣рд╛рдБ рдкрд╣рд┐рд▓реЗ рдиреИ рдЫрдиреМрдЯрдХреЛ рд╕реНрд╡рддрдиреНрддреНрд░рддрд╛ рдЫред рдХрд╕реИрд▓реЗ рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдХреЛрд╣реА рд░рд╛рдЗрдбрд░, рдХреЛрд╣реА рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЫ, рд░ Vim рдорд╛ рдХреЛрдб рд▓реЗрдЦреНрдЫрдиреН (рдХреЗ рдкрдЫрд┐, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рдХрд┐рдмреЛрд░реНрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН, рд╕рд╣реА?) рдпрджреНрдпрдкрд┐, Discord API рд▓рд╛рдЧреВ рдирдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдЗрдБ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ C# рдкреБрд╕реНрддрдХрд╛рд▓рдп "DSharpPlus" рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрдкрд╛рдИрд▓реЗ рдпрд╕рд▓рд╛рдИ NuGet рдмрд╛рдЯ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛ рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рд╕реНрд░реЛрддрд╣рд░реВ рдЖрдлреИрдВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реЗрд░ред
NuGet рдмрд╛рдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдХрд╕рд░реА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдерд╛рд╣рд╛ рдирднрдПрдХрд╛ рд╡рд╛ рдмрд┐рд░реНрд╕реЗрдХрд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐редрднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрджреЗрд╢рди
- рдЯреНрдпрд╛рдмрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рдкрд░рд┐рдпреЛрдЬрдирд╛ - NuGet рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрдиреБрд╣реЛрд╕реН;
- рд╕рдореАрдХреНрд╖рд╛рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЦреЛрдЬ рдХреНрд╖реЗрддреНрд░рдорд╛ "DSharpPlus" рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
- рдлреНрд░реЗрдорд╡рд░реНрдХ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
- рд▓рд╛рдн!
рддрдпрд╛рд░реАрдХреЛ рдЪрд░рдг рд╕рдХрд┐рдпреЛ, рддрдкрд╛рдИрдВ рдмреЛрдЯ рд▓реЗрдЦреНрди рдЕрдЧрд╛рдбрд┐ рдмрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рддрд░реНрдХ рд▓реЗрдЦрди
рд╣рд╛рдореА рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рд╕рдореНрдкреВрд░реНрдг рддрд░реНрдХрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрджреИрдиреМрдВ, рдо рдХреЗрд╡рд▓ рдмреЛрдЯрджреНрд╡рд╛рд░рд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВрдХреЛ рдЕрд╡рд░реЛрдзрд╕рдБрдЧ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗ рд░ 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 - рд╕рд░реНрднрд░рдорд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдмреЛрдЯрдХреЛ рд╕рд╛рде рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рдпрд╕рд▓рд╛рдИ 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 рд╕рд░реНрднрд░рдорд╛ рд▓рд┐рдЩреНрдХред
рддрдкрд╛рдИрдВрдХреЛ рдзреНрдпрд╛рдирдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрдмрд╛рдж!
рд╕реНрд░реЛрдд: www.habr.com