Aus Spaß setzte ich meine Experimente mit einem „intelligenten“ Zuhause fort und beschloss, VK eine Gruppe hinzuzufügen, um einige seiner Eigenschaften zu kontrollieren. In diesem Artikel geben wir die Aufgabe an: Wir werden versuchen, in der C # -Sprache einen einfachen Bot zu schreiben, der im Namen der Community in VK antwortet, und überlegen, wie er schnell auf arm32 gestartet werden kann (in meinem Fall orange pi zero).

Ich dachte über den Einsatz nachEs gibt viele andere Optionen (z. B. Put Runtime), dies ist eine davon
 Stellen Sie es also in die Regale.
Erstellen Sie eine Anwendung in VKHier ist die detaillierte Dokumentation- Um einen Bot zu erstellen, klicken Sie hier
 Klicken Sie auf "Anwendung erstellen" und wählen Sie "Eigenständige Anwendung".
- Jetzt gehen wir zum Management und auf der Registerkarte Anwendungs-ID merken wir uns die ID. Es wird uns weiter nützlich sein.  
  Wir bekommen ein Zeichen für die Arbeit mit Gruppen- Wir senden die Anfrage, indem wir sie einfach in die Browserzeile einfügen:
 https://oauth.vk.com/authorize?client_id=YOURAPPID&group_ids=YOURGROUPID6&display=page&scope=messages,wall,manage&response_type=token&v=5.92
 
 Dabei ist YOURAPPID die Anwendungs-ID, die wir im vorherigen Spoiler gefunden haben, und YOURGROUPID-ID ist Ihre Community.
 
- Wir geben Zugriff auf die Anwendung  
- Und wir bekommen diese Antwort
  https://oauth.vk.com/blank.html#expires_in=0&access_token_YOURGROUPID=YOURTOKEN
 
 Wobei der Token eine sehr lange Kombination aus lateinischen Buchstaben und Zahlen sein wird
 
 Es ist einfacher, einen Token zu bekommen- Gehen Sie zum Community-Management
 
 
 Richten Sie eine Community für die Arbeit mit langen Umfragen ein- Wir gehen zur Registerkarte "Verwaltung" unserer Community.
- Api Usage und darin LongPoll Api  
- Ereignistypen (Ereignisse), in denen wir als notwendig markieren, für Tests würde ich alles markieren.
 Wir gehen zum Hauptteil über:Starten Sie Ihre Lieblingsidee und erstellen Sie eine Konsolenanwendung auf Net Core

Fügen Sie 
VkNet hinzuSpoilerLeider ist die Dokumentation im Wiki etwas veraltet. Einer der Gründe für die Erstellung dieses Handbuchs.
Aber hier gibt es große Unterstützung 
. 
Melden Sie sich mit unserem Token an:
 var api = new VkApi(); api.Authorize(new ApiAuthParams(){AccessToken =MyAppToken }); 
Und in einer Endlosschleife erhalten wir Updates
 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}); } 
Lassen Sie uns überprüfen, ob etwas zu uns gekommen ist
 if(poll?.Updates== null) continue; 
Bei allen empfangenen Daten stellen wir fest, ob es sich um eine Nachricht handelt. Wenn ja, drucken Sie den Inhalt aus
  foreach (var a in poll.Updates) { if (a.Type == GroupUpdateType.MessageNew) { Console.WriteLine(a.Message.Body); } } 
Und wir werden dem Benutzer mit dem gleichen Text antworten
  api.Messages.Send(new MessagesSendParams() { UserId = a.Message.UserId, Message = a.Message.Body }); 
Erhaltener Code 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); } } } 
 Sammeln wir den erhaltenen Code für unser Board
 dotnet publish . -r linux-arm 
Und ziehen Sie das gewünschte Verzeichnis auf die Tafel

Wir fahren mit SSH und rennen
 chmod +x ConsoleApp1 ./ConsoleApp1 
ErgebnisNachricht senden

Wir erhalten die Nachricht in der Konsole

Wir bekommen die Antwort

Dialog
