「スマート」ホームでの実験を続けるために、楽しみのために、VKにいくつかの特性を制御するグループを追加することにしました。 この記事では、タスクを指定します:VKのコミュニティに代わって応答する単純なボットをC#言語で記述し、arm32(私の場合はオレンジのpiゼロ)ですばやく起動する方法を検討します。

展開についての考え他の多くのオプションがあります(たとえば、ランタイムを置く)、これはそれらの1つです
それで、棚に置いてください。
VKでアプリケーションを作成する詳細なドキュメントはこちら- ボットを作成するには、 こちらにアクセスしてください
[アプリケーションの作成]をクリックし、[スタンドアロンアプリケーション]を選択します。 - ここで、管理に移り、[アプリケーションID]タブでそのIDを記憶します。 さらに役立つでしょう。

グループで作業するためのトークンを取得します- ブラウザの行に挿入するだけでリクエストを送信します。
https://oauth.vk.com/authorize?client_id=YOURAPPID&group_ids=YOURGROUPID6&display=page&scope=messages,wall,manage&response_type=token&v=5.92
YOURAPPIDは前のスポイラーで見つかったアプリケーションIDであり、YOURGROUPID IDはコミュニティです。
- アプリケーションへのアクセスを許可します

- そして、私たちはこの答えを得ます
https://oauth.vk.com/blank.html#expires_in=0&access_token_YOURGROUPID=YOURTOKEN
トークンがラテン文字と数字の非常に長い組み合わせになる場合
トークンを取得する方が簡単です- コミュニティ管理に移動


長期投票で作業するためのコミュニティを設定する- コミュニティの管理タブに移動します。
- APIの使用法とその中のLongPoll API

- イベントの種類(イベント)で、必要なものをマークします。テストにはすべてをマークします。
主要部分に進みます。お気に入りのIDEを起動し、ネットコアにコンソールアプリケーションを作成します
VkNetを追加
ネタバレ残念ながら、ウィキでは、ドキュメントは少し古くなっています。 このガイドを作成する理由の1つ。
しかし、
ここには大きなサポートがあり
ます。 
トークンを使用してログインします。
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
結果メッセージを送る

コンソールでメッセージを受け取ります

答えを得る

対話
