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
