рдПрдХ рдЕрдиреНрдп рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ рдпрд╛ рдбреЗрдЯрд┐рдВрдЧ рдмреЙрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдореЗрд░рд╛ рдирд╛рдо рд╡реНрд▓рд╛рдж рд╣реИ, рдкреЗрд╢реЗ рд╕реЗ рдореИрдВ рдПрдХ рд╕реИрдиреНрдп рдЖрджрдореА рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдмрд┐рдЬрдиреЗрд╕ рдСрдЯреЛрдореЗрд╢рди рдХрдВрдкрдиреА рдореЗрдВ рдкрд╛рд░реНрдЯ-рдЯрд╛рдЗрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореИрдВ рдиреЗрдЯ рдкрд░ рдмреБрдХрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреГрд╖реНрдарднреВрдорд┐


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

рддреЛ рдЖрдкрдХреЗ рдмреЙрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛, рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рджреЛрд╕реНрддреЛрдВ рдпрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

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


рдПрдХ рдмреЙрдЯ рдмрдирд╛рдПрдВ рдЬрд╣рд╛рдВ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдЪреИрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╡рд╣ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдо рдЬрд╛рдирдХрд╛рд░реА рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд╕ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рд╡реЗ рдЙрд╕реЗ рд▓рд┐рдЦрддреЗ рдирд╣реАрдВ рд╣реИрдВред



рдХрд╛рдо рдХреА рддреИрдпрд╛рд░реА


рдмреЙрдЯрдлрд╝рд╛рджрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдмреЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╡рд╣реА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдЬреЛ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдирд╣реАрдВ рднрд░реВрдВрдЧрд╛ред

"рдкреНрд░реЛрдлрд╛рдЗрд▓" рдХрд╛ рд╕рдВрдЧреНрд░рд╣рдг


рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ рдХреНрд▓рд╛рд╕рд▓реИрдХреНрдЯреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред

рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ "рд╡рд░реНрдгрди" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

public class user { [Key] 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; }// ,    } 

рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП, 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);//  static void Main(string[] args) { var me = Bot.GetMeAsync().Result;//  ,    (  ,   ) Console.Title = me.Username; //   Bot.OnMessage += BotOnMessageReceived; Bot.OnCallbackQuery += BotOnCallbackQueryReceived; Bot.OnReceiveError += BotOnReceiveError; //   Bot.StartReceiving(Array.Empty<UpdateType>()); Console.WriteLine($"Start listening for @{me.Username}"); Console.ReadLine(); Bot.StopReceiving(); } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рдВрдЪ рд╢реБрд░реВ рдХрд░ рджреА рдФрд░ рд╣рдорд╛рд░реЗ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдПред
BotOnMessageReceived - "рдирд┐рдпрдорд┐рдд" рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░
BotOnCallbackQueryReceived - рд╕рдВрджреЗрд╢ рдХреЗ рддрд╣рдд рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ред

рдорд╛рдорд▓рд╛ рдЫреЛрдЯрд╛ рд╣реИ, рдПрдХ рдкреНрд░рд╢реНрдирд╛рд╡рд▓реА рдЫреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рдмрд╛рдХреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЛ рдмрдЯрди рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдЕрдЧрд▓рд╛ред рдПрдХ рдмрдЯрди рдПрдХ InlineKeyboardButton рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдмрдЯрди рдХреЛ рдЗрд╕рдореЗрдВ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

 IEnumerable<IEnumerable<InlineKeyboardButton>> 

рдЬрдм рдмреЙрдЯ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЯреЗрдХреНрд╕реНрдЯ / "рд╕реНрдЯрд╛рд░реНрдЯ" рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рддреБрд░рдВрдд рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ BotOnMessageReceived рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдорд╛рд░реЗ рдмрдЯрди рднреЗрдЬреЗрдВред

 if (message.Text == "/start") { var inlineKeyboard = new InlineKeyboardMarkup(new[] { new [] // first row { InlineKeyboardButton.WithCallbackData("!", "Next"), InlineKeyboardButton.WithCallbackData("", "Registration") } }); Bot.SendTextMessageAsync(message.Chat.Id, "   lovebot! \r\n   - /start\r\n       - /register\r\n     - /stats\r\n     - @hahah2016", replyMarkup: inlineKeyboard); return; } 

рдкрдВрдЬреАрдХрд░рдг


рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рдПрдХ рдмреЙрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рдбреЗрдЯрд╛ рднрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред

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);//    registrations.Add(message.From.Id.ToString(), form);//   "",    telegram_id . var t = form.StageText(form.tg_id); // ,   ,     . Bot.SendTextMessageAsync(message.Message.Chat.Id, t.Item1);//  . return; } 

рдФрд░ рдЗрд╕реА рддрд░рд╣, рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдлрд╝реЙрд░реНрдо рдХреЛ рднрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред
  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());//,     . return; } 

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


рдЕрдкрдиреА рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдЬрдирддрд╛ рдиреЗ рдмреЙрдЯ рдХреЛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ред

рдПрдХ рджрд┐рди рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ, 134 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдЕрдкрдиреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЫреЛрдбрд╝ рджреА, рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИред рдФрд░ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рдмрд┐рдирд╛ - рд╕рд╛рдЗрдЯ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдкреЛрд╕реНрдЯ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд▓рд╕рд╕ рд╕реНрдХреЛрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдмреЙрдЯреНрд╕ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рднреВрд▓реЗ рд╣реБрдП рдкреБрд░рд╛рдиреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдирдпрд╛ рдЬреАрд╡рди рдкрд╛рдпрд╛ рд╣реИред рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рджреЛрд╕реНрдд рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдореБрджреНрд░реАрдХрд░рдг рдбреЗрдЯрд┐рдВрдЧ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ред

рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд╕реМрднрд╛рдЧреНрдп, рдордЬрд╝рд╛ рд╣реИ, рди рдкреАрд▓реА рдмрд░реНрдл рдЦрд╛рддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi430314/


All Articles