рдПрдХ рд╡реАрдХреЗ рдмреЙрдЯ, рдПрдХ рд╕реА # рдФрд░ рдПрдХ рдирд╛рд░рдВрдЧреА

"рд╕реНрдорд╛рд░реНрдЯ" рдШрд░ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, рдордЬрд╝реЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реАрдХреЗ рдореЗрдВ рдПрдХ рд╕рдореВрд╣ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ: рд╣рдо рд╕реА # рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреЙрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╡реАрдХреЗ рдореЗрдВ рд╕рдореБрджрд╛рдп рдХреА рдУрд░ рд╕реЗ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдЖрд░реНрдо 32 рдкрд░ рдХреИрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдП (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд╛рд░рдВрдЧреА рдкреАрдЖрдИ рд╢реВрдиреНрдп)ред



рддреИрдирд╛рддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛
рдХрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рдирдЯрд╛рдЗрдо рд▓рдЧрд╛рдПрдВ), рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ

рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдЕрд▓рдорд╛рд░рд┐рдпреЛрдВ рдкрд░ рд░рдЦреЗрдВред

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


рд╣рдореЗрдВ рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЛрдХрди рдорд┐рд▓рддрд╛ рд╣реИ
  1. рд╣рдо рдЗрд╕реЗ рдХреЗрд╡рд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рд╛рдЗрди рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ:
    https://oauth.vk.com/authorize?client_id=YOURAPPID&group_ids=YOURGROUPID6&display=page&scope=messages,wall,manage&response_type=token&v=5.92 

    рдЬрд╣рд╛рдВ рдЖрдкрдХрд╛ рдПрдкреНтАНрд▓реАрдХреЗрд╢рди рдПрдкреНтАНрд▓реАрдХреЗрд╢рди рдЖрдИрдбреА рд╣реИ рдЬреЛ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рд╕реНрдкреЙрдЗрд▓рд░ рдореЗрдВ рдкрд╛рдпрд╛ рдерд╛, рдФрд░ рдЖрдкрдХрд╛ рдЧреНрд░реБрдк рдЖрдИрдбреА рдЖрдкрдХрд╛ рд╕рдореБрджрд╛рдп рд╣реИред
  2. рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХреНрд╕реЗрд╕ рджреЗрддреЗ рд╣реИрдВ
  3. рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рдорд┐рд▓рддрд╛ рд╣реИ
     https://oauth.vk.com/blank.html#expires_in=0&access_token_YOURGROUPID=YOURTOKEN 

    рдЬрд╣рд╛рдВ рдЯреЛрдХрди рд▓реИрдЯрд┐рди рдЕрдХреНрд╖рд░реЛрдВ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдВрдпреЛрдЬрди рд╣реЛрдЧрд╛


рдЯреЛрдХрди рд▓реЗрдирд╛ рдЖрд╕рд╛рди рд╣реИ
  1. рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкреНрд░рдмрдВрдзрди рдкрд░ рдЬрд╛рдПрдВ


рд▓рдВрдмреЗ рдорддрджрд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореБрджрд╛рдп рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░реЗрдВ
  1. рд╣рдо рдЕрдкрдиреЗ рд╕рдореБрджрд╛рдп рдХреЗ рдкреНрд░рдмрдВрдзрди рдЯреИрдм рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред
  2. рдЖрдкреА рдЙрдкрдпреЛрдЧ рдФрд░ рдЗрд╕рдореЗрдВ рд▓реЛрдВрдЧрдкреЙрд▓ рдЖрдкреА
  3. рдИрд╡реЗрдВрдЯ рдкреНрд░рдХрд╛рд░ (рдИрд╡реЗрдВрдЯ), рдЙрдирдореЗрдВ рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рдм рдХреБрдЫ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реВрдВред


рд╣рдо рдореБрдЦреНрдп рднрд╛рдЧ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ:

рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдиреЗрдЯ рдХреЛрд░ рдкрд░ рдПрдХ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ



VkNet рдЬреЛрдбрд╝реЗрдВ

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


рд╣рдорд╛рд░реЗ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ:

 var api = new VkApi(); api.Authorize(new ApiAuthParams(){AccessToken =MyAppToken }); 

рдФрд░ рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдореЗрдВ рд╣рдо рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ

 var s = api.Groups.GetLongPollServer(MyGroupId); while (true) { var poll = api.Groups.GetBotsLongPollHistory( new BotsLongPollHistoryParams() {Server = s.Server, Ts = s.Ts, Key = s.Key, Wait = 1}); } 

рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЖрдпрд╛ рддреЛ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ

 if(poll?.Updates== null) continue; 

рдкреНрд░рд╛рдкреНрдд рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИ, рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ

  foreach (var a in poll.Updates) { if (a.Type == GroupUpdateType.MessageNew) { Console.WriteLine(a.Message.Body); } } 

рдФрд░ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрд╕реА рдкрд╛рда рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рджреЗрдВрдЧреЗ

  api.Messages.Send(new MessagesSendParams() { UserId = a.Message.UserId, Message = a.Message.Body }); 


рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛
 class Program { public static string MyAppToken => "f6bf5e26*************************************************************"; public static ulong MyGroupId => 10******; static void Main(string[] args) { var api = new VkApi(); api.Authorize(new ApiAuthParams(){AccessToken =MyAppToken }); var s = api.Groups.GetLongPollServer(MyGroupId); while (true) { try { var poll = api.Groups.GetBotsLongPollHistory( new BotsLongPollHistoryParams() {Server = s.Server, Ts = s.Ts, Key = s.Key, Wait = 1}); if(poll?.Updates== null) continue; foreach (var a in poll.Updates) { if (a.Type == GroupUpdateType.MessageNew) { Console.WriteLine(a.Message.Body); api.Messages.Send(new MessagesSendParams() { UserId = a.Message.UserId, Message = a.Message.Body }); } } } } } catch (LongPollException exception) { if (exception is LongPollOutdateException outdateException) server.Ts = outdateException.Ts; else { s = api.Groups.GetLongPollServer(MyGroupId); } } catch (Exception e) { Console.WriteLine(e.Message); } } } 


рд╣рдорд╛рд░реЗ рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХреЛрдб рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ

 dotnet publish . -r linux-arm 

рдФрд░ рдмреЛрд░реНрдб рдкрд░ рд╡рд╛рдВрдЫрд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЦреАрдВрдЪреЗрдВ



рд╣рдо ssh рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ рдФрд░ рджреМрдбрд╝рддреЗ рд╣реИрдВ

 chmod +x ConsoleApp1 ./ConsoleApp1 

рдкрд░рд┐рдгрд╛рдо
рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВ



рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ



рд╣рдореЗрдВ рдЬрд╡рд╛рдм рдорд┐рд▓ рдЧрдпрд╛



рд╕рдВрд╡рд╛рдж


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


All Articles