Poursuivant mes expériences avec une maison «intelligente», pour le plaisir, j'ai décidé d'ajouter un groupe à VK pour contrôler certaines de ses caractéristiques. Pour cet article, nous précisons la tâche: nous allons essayer d'écrire en langage C # un bot simple qui répondra au nom de la communauté en VK et réfléchira à la manière de le lancer rapidement sur arm32 (dans mon cas, orange pi zero).

Réflexion sur le déploiementil existe de nombreuses autres options (par exemple, mettre runtime), c'est l'une d'entre elles
Alors, mettez-le sur les étagères.
Créer une application dans VKVoici la documentation détaillée- Pour créer un bot, allez ici
Cliquez sur "créer une application" et sélectionnez "Application autonome". - Nous passons maintenant à la gestion et dans l'onglet Application Id, nous nous souvenons de son ID. Il nous sera utile davantage.

Nous obtenons un jeton pour travailler avec des groupes- Nous envoyons la demande en l'insérant simplement dans la ligne du navigateur:
https://oauth.vk.com/authorize?client_id=YOURAPPID&group_ids=YOURGROUPID6&display=page&scope=messages,wall,manage&response_type=token&v=5.92
où YOURAPPID est l'ID d'application que nous avons trouvé dans le spoiler précédent, et YOURGROUPID id est votre communauté.
- Nous donnons accès à l'application

- Et nous obtenons cette réponse
https://oauth.vk.com/blank.html#expires_in=0&access_token_YOURGROUPID=YOURTOKEN
Où le jeton sera une très longue combinaison de lettres et de chiffres latins
Il est plus facile d'obtenir un jeton- Aller à la gestion de communauté


Mettre en place une communauté pour travailler avec un long sondage- Nous allons dans l'onglet gestion de notre communauté.
- Utilisation d'API et en elle LongPoll Api

- Types d'événements (événements), en eux nous marquons nécessaires, pour les tests, je marquerais tout.
Nous passons à la partie principale:Lancez votre idée préférée, créez une application console sur net core

Ajouter
VkNetspoilerMalheureusement sur le wiki, la documentation est un peu dépassée. L'une des raisons de la création de ce guide.
Mais il y a un grand soutien
ici. 
Connectez-vous en utilisant notre token:
var api = new VkApi(); api.Authorize(new ApiAuthParams(){AccessToken =MyAppToken });
Et dans une boucle sans fin, nous recevrons des mises à jour
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}); }
Vérifions si quelque chose nous est arrivé
if(poll?.Updates== null) continue;
Pour toutes les données reçues, nous découvrons s'il s'agit d'un message, si oui, puis imprimons son contenu
foreach (var a in poll.Updates) { if (a.Type == GroupUpdateType.MessageNew) { Console.WriteLine(a.Message.Body); } }
Et nous répondrons à l'utilisateur avec le même texte
api.Messages.Send(new MessagesSendParams() { UserId = a.Message.UserId, Message = a.Message.Body });
Code reçu 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); } } }
Collectons le code reçu pour notre tableau
dotnet publish . -r linux-arm
Et faites glisser sur le tableau le répertoire souhaité

Nous allons par SSH et courons
chmod +x ConsoleApp1 ./ConsoleApp1
RésultatEnvoyer un message

Nous recevons le message dans la console

Nous obtenons la réponse

Dialogue
