рдореЗрд░рд╛ рдирд╛рдо рд╡реНрд▓рд╛рдж рд╣реИ, рдкреЗрд╢реЗ рд╕реЗ рдореИрдВ рдПрдХ рд╕реИрдиреНрдп рдЖрджрдореА рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдмрд┐рдЬрдиреЗрд╕ рдСрдЯреЛрдореЗрд╢рди рдХрдВрдкрдиреА рдореЗрдВ рдкрд╛рд░реНрдЯ-рдЯрд╛рдЗрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореИрдВ рдиреЗрдЯ рдкрд░ рдмреБрдХрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреГрд╖реНрдарднреВрдорд┐
рдореЗрд░реА рдкреВрд░реНрд╡ (рдирд┐рдпрдорд┐рдд) рджреБрд▓реНрд╣рди рдХреЗ рд╕рд╛рде рдЕрдЧрд▓реЗ рдЕрднрд┐рд╕рд░рдг-рд╡рд┐рд╕рдВрдЧрддрд┐ рдХреЗ рд╕рдордп, рдЙрд╕рдиреЗ рдХрд╣рд╛ рдХрд┐ рдмреЛрд░рд┐рдпрдд рд╕реЗ рд╡рд╣ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо-рдмреЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрд╛рд░реАрдЦреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реА рдереА, рдЬреЛ рдлрд╝реЛрдЯреЛ рдФрд░ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рднреЗрдЬ рд╕рдХрддреА рдереА рдФрд░ рдЖрдкрдХреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрдард╛ рд╕рдХрддреА рдереА рдЬреЛ рдкрд╛рд╕ рдереЗред рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдлрд┐рд░ рд╕реЗ рдмрд┐рдЦрд░реЗ рддреЛ рдореИрдВ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рд▓рд┐рдЦреВрдВрдЧрд╛ред
рдпрд╛рд░рд╛ рддреБрдореНрд╣рд╛рд░реЗ рд▓рд┐рдП рд╣реИредрдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рднреВрд▓ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реА рдЖрд▓рд╕реНрдп рдХреЗ рд╕рдордп, рдореИрдВрдиреЗ
рдПрдХ рд╣рд░реЗ рд░рдВрдЧ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдХрдкрдХреЗрдХ рдХреЗ рд╕рд╛рде рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдпрд╛, рдЬрд╣рд╛рдВ рдореИрдВ рдПрдХ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЖрдпрд╛, рдЬрд╣рд╛рдВ рд▓реЛрдЧреЛрдВ рдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛, рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдФрд░ рд╕рдВрдкрд░реНрдХреЛрдВ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ред
рддреЛ рдЖрдкрдХреЗ рдмреЙрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛, рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рджреЛрд╕реНрддреЛрдВ рдпрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдХрд╛рд░реНрдп
рдПрдХ рдмреЙрдЯ рдмрдирд╛рдПрдВ рдЬрд╣рд╛рдВ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдЪреИрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╡рд╣ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдо рдЬрд╛рдирдХрд╛рд░реА рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд╕ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рд╡реЗ рдЙрд╕реЗ рд▓рд┐рдЦрддреЗ рдирд╣реАрдВ рд╣реИрдВред

рдХрд╛рдо рдХреА рддреИрдпрд╛рд░реА
рдмреЙрдЯрдлрд╝рд╛рджрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдмреЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╡рд╣реА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдЬреЛ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдирд╣реАрдВ рднрд░реВрдВрдЧрд╛ред"рдкреНрд░реЛрдлрд╛рдЗрд▓" рдХрд╛ рд╕рдВрдЧреНрд░рд╣рдг
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ рдХреНрд▓рд╛рд╕рд▓реИрдХреНрдЯреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ "рд╡рд░реНрдгрди" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
public class user { [Key] public string tg_id { get; set; }
рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП, PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдПрдХ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, NuGet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ EntityFramework рд╕реЗрдЯ рдХрд░реЗрдВред рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
NpgSQL.EntityFrameworkCore.PostgreSQL
рдФрд░ рдкрд▓рд╛рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
Microsoft.EntityFrameworkCore.Tools
рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд┐рдпрдорд┐рдд рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рд╣рдо рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рд╕реНрд╡рдпрдВ (рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдКрдкрд░) рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
public DbSet<user> user { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseNpgsql(connectionString); }
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рдкреНрд░рд╡рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХрдВрд╕реЛрд▓ рдореЗрдВ, рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
enable-migrations
рдорд╛рдЗрдЧреНрд░реЗрд╢рди рддрдВрддреНрд░ рдЪрд╛рд▓реВ рдХрд░реЗрдВ
Add-migration * *
рдПрдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдмрдирд╛рдПрдВ
update-database
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛
рдЕрдм рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЛ рддрд╛рд▓рд┐рдХрд╛рдПрдБ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА: рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕реНрд╡рдпрдВред

рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдмреЙрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рд╣реИрдВрдбрд▓рд░ рдмреЙрдЯ
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕реНрд╡рдпрдВ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рд╡реЗрдмрд╣реВрдХ рдпрд╛ рд▓рдЧрд╛рддрд╛рд░ рд╕рд░реНрд╡рд░ рдХреЛ рдЦреАрдВрдЪрдирд╛, рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдирд╛ред рд╡реЗрдмрд╣реВрдХ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ
рд╕рд╛рдЗрдХрд┐рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ (рдХрднреА-рдХрднреА рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ), рдПрдХ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ:
рдЯреЗрд▓реАрдЧреНрд░рд╛рдоред MrRoundRobin рджреНрд╡рд╛рд░рд╛ рдмреЙрдЯ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ, рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред
рд╣рдо рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдПрдХ рдирдпрд╛ рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
private static readonly TelegramBotClient Bot = new TelegramBotClient(token);
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рдВрдЪ рд╢реБрд░реВ рдХрд░ рджреА рдФрд░ рд╣рдорд╛рд░реЗ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдПред
BotOnMessageReceived
- "рдирд┐рдпрдорд┐рдд" рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░
BotOnCallbackQueryReceived
- рд╕рдВрджреЗрд╢ рдХреЗ рддрд╣рдд рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ред
рдорд╛рдорд▓рд╛ рдЫреЛрдЯрд╛ рд╣реИ, рдПрдХ рдкреНрд░рд╢реНрдирд╛рд╡рд▓реА рдЫреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рдмрд╛рдХреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЛ рдмрдЯрди рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдЕрдЧрд▓рд╛ред рдПрдХ рдмрдЯрди рдПрдХ
InlineKeyboardButton
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдмрдЯрди рдХреЛ рдЗрд╕рдореЗрдВ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
IEnumerable<IEnumerable<InlineKeyboardButton>>
рдЬрдм рдмреЙрдЯ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЯреЗрдХреНрд╕реНрдЯ / "рд╕реНрдЯрд╛рд░реНрдЯ" рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рддреБрд░рдВрдд рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ
BotOnMessageReceived
рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдорд╛рд░реЗ рдмрдЯрди рднреЗрдЬреЗрдВред
if (message.Text == "/start") { var inlineKeyboard = new InlineKeyboardMarkup(new[] { new []
рдкрдВрдЬреАрдХрд░рдг
рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рдПрдХ рдмреЙрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рдбреЗрдЯрд╛ рднрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред
RegForm.cs public class RegForm { public string tg_id { get; set; } public string name { get; set; } public string age { get; set; } public string country { get; set; } public string city { get; set; } public string gender { get; set; } public string photo { get; set; } public string tg_username { get; set; } public string tg_chat_id { get; set; } public int stage; public RegForm(string id, string chat_id, string username) { stage = 1; tg_id = id; tg_username = username; } public (string, int) StageText(string id) { if (stage == 1) return (" :", stage); if (stage == 2) return (" :", stage); if (stage == 3) return (" :", stage); if (stage == 4) return (" :", stage); if (stage == 5) return (" :", stage); else return (" :", stage); } public bool SetParam(string param) { if (stage == 1) name = param; if (stage == 2) age = param; if (stage == 3) country = param; if (stage == 4) city = param; if (stage == 5) gender = param; if (stage == 6) photo = param; stage++; return true; } }
рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ, рдЖрдк рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдореНрд░ рдХреЛ рдпрд╛рдж рди рдХрд░реЗрдВ, рдЖрджрд┐ред
рдФрд░ рд╕реНрдореГрддрд┐ рд╕реНрд╡рдпрдВ
static Dictionary<string, RegForm> registrations = new Dictionary<string, RegForm>();
рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рдкрд░ рдПрдХ рдирдпрд╛ KeyValuePair рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдмреЙрдЯ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд╛ рдЬрд╡рд╛рдм рдХреИрд╕реЗ рджреЗрдирд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
BotOnCallbackQueryReceived
рдореЗрдВ
BotOnCallbackQueryReceived
var message = e.CallbackQuery; if (message.Data == "Registration") { RegForm form = new RegForm(message.From.Id.ToString(), message.Message.Chat.Id.ToString(), message.From.Username);
рдФрд░ рдЗрд╕реА рддрд░рд╣, рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдлрд╝реЙрд░реНрдо рдХреЛ рднрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред
using (Context db = new Context()) { IMapper mapper = new MapperConfiguration(cfg => cfg.CreateMap<RegForm, User>()).CreateMapper(); if (db.user.Where(x => x.tg_id == message.From.Id.ToString()).Count() != 0) db.user.Update(mapper.Map<RegForm, tgbot_base.classes.user>(u)); else { db.user.Add(mapper.Map<RegForm, tgbot_base.classes.user>(u)); } db.SaveChanges(); }
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╣реИ, рддреЛ рдмрд╕ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реЛрдЯреЛ рд╕рд╣реЗрдЬ рд░рд╣рд╛ рд╣реИ if (message.Type == MessageType.Photo) { string file = Bot.GetFileAsync(message.Photo[message.Photo.Count() - 1].FileId).Result.FilePath; string filepath = message.From.Id + "." + file.Split('.').Last(); using (FileStream fileStream = new FileStream("C:\\images\\" + filepath, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { var st = Bot.DownloadFileAsync(file).Result; st.Position = 0; st.CopyTo(fileStream); } u.SetParam("C:\\images\\" + filepath); }
рдЕрдиреНрдп рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рдПрдВ
рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдПрдЧрд╛:
public static User GetRandom() { Stopwatch s = new Stopwatch(); s.Start(); User u; using (Context db = new Context()) { Random r = new Random(); int count = db.user.Count(); if (count > 1) count = count - 1; List<User> users = mapper.Map<List<tgbot_base.classes.user>, List<User>>(db.user.ToList()); u = users.ElementAt(r.Next(0, count)); } Console.WriteLine("[" + DateTime.Now + "] For finding " + s.ElapsedMilliseconds + " ms"); s = null; return u; }
рдЕрдЧрд▓рд╛ рдмрдЯрди рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░:
if (message.Data == "Next") { if (searchForms.Count != 0) { searchForms.Remove(message.From.Id.ToString()); } IMapper mapper = new MapperConfiguration(cfg => cfg.CreateMap<RegForm, User>()).CreateMapper(); User user = BaseWorker.GetRandom(); SendAnket(user, message.Message.Chat.Id.ToString());
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдкрдиреА рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдЬрдирддрд╛ рдиреЗ рдмреЙрдЯ рдХреЛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ред
рдПрдХ рджрд┐рди рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ, 134 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдЕрдкрдиреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЫреЛрдбрд╝ рджреА, рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИред рдФрд░ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рдмрд┐рдирд╛ - рд╕рд╛рдЗрдЯ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдкреЛрд╕реНрдЯ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд▓рд╕рд╕ рд╕реНрдХреЛрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдмреЙрдЯреНрд╕ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рднреВрд▓реЗ рд╣реБрдП рдкреБрд░рд╛рдиреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдирдпрд╛ рдЬреАрд╡рди рдкрд╛рдпрд╛ рд╣реИред рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рджреЛрд╕реНрдд рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдореБрджреНрд░реАрдХрд░рдг рдбреЗрдЯрд┐рдВрдЧ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ред
рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╕реМрднрд╛рдЧреНрдп, рдордЬрд╝рд╛ рд╣реИ, рди рдкреАрд▓реА рдмрд░реНрдл рдЦрд╛рддреЗ рд╣реИрдВред