Continuando mis experimentos con una casa "inteligente", por diversión, decidí agregar un grupo a VK para controlar algunas de sus características. Para este artículo, especificamos la tarea: intentaremos escribir en el lenguaje C # un bot simple que responda en nombre de la comunidad en VK y considere cómo iniciarlo rápidamente en arm32 (en mi caso, naranja pi cero).

Pensado en el desplieguehay muchas otras opciones (por ejemplo, poner tiempo de ejecución), esta es una de ellas
 Entonces, póngalo en los estantes.
Crea una aplicación en VKAquí está la documentación detallada.- Para crear un bot, ve aquí
 Haga clic en "crear aplicación" y seleccione "Aplicación independiente".
- Ahora pasamos a la administración y en la pestaña Id. De la aplicación recordamos su Id. Será más útil para nosotros.  
  Obtenemos un token por trabajar con grupos- Enviamos la solicitud simplemente insertándola en la línea del navegador:
 https://oauth.vk.com/authorize?client_id=YOURAPPID&group_ids=YOURGROUPID6&display=page&scope=messages,wall,manage&response_type=token&v=5.92
 
 donde YOURAPPID es la identificación de la aplicación que encontramos en el spoiler anterior, y YOURGROUPID id es su comunidad.
 
- Le damos acceso a la aplicación.  
- Y obtenemos esta respuesta
  https://oauth.vk.com/blank.html#expires_in=0&access_token_YOURGROUPID=YOURTOKEN
 
 Donde el token será una combinación muy larga de letras y números latinos
 
 Es más fácil obtener un token- Ir a gestión comunitaria
 
 
 Establecer una comunidad para trabajar con encuestas largas- Vamos a la pestaña de administración de nuestra comunidad.
- Uso de la API y en ella LongPoll Api  
- Tipos de eventos (eventos), en ellos marcamos lo necesario, para las pruebas marcaría todo.
 Pasamos a la parte principal:Inicie su ide favorito, cree una aplicación de consola en net core

Añadir 
VkNetspoilerDesafortunadamente en la wiki, la documentación está un poco desactualizada. Una de las razones para crear esta guía.
Pero hay un gran apoyo 
aquí. 
Inicie sesión con nuestro token:
 var api = new VkApi(); api.Authorize(new ApiAuthParams(){AccessToken =MyAppToken }); 
Y en un bucle sin fin recibiremos actualizaciones
 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}); } 
Vamos a ver si nos vino algo
 if(poll?.Updates== null) continue; 
Para todos los datos recibidos, descubrimos si algo de esto es un mensaje, si es así, imprimimos su contenido
  foreach (var a in poll.Updates) { if (a.Type == GroupUpdateType.MessageNew) { Console.WriteLine(a.Message.Body); } } 
Y responderemos al usuario con el mismo texto.
  api.Messages.Send(new MessagesSendParams() { UserId = a.Message.UserId, Message = a.Message.Body }); 
Código recibido 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); } } } 
 Recojamos el código recibido para nuestro foro
 dotnet publish . -r linux-arm 
Y arrastre en el tablero el directorio deseado

Vamos por ssh y corremos
 chmod +x ConsoleApp1 ./ConsoleApp1 
ResultadoEnviar mensaje

Recibimos el mensaje en la consola.

Obtenemos la respuesta

Diálogo
