展開についての考え
他の多くのオプションがあります(たとえば、ランタイムを置く)、これはそれらの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を追加
トークンを使用してログインします。
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
結果
メッセージを送る
コンソールでメッセージを受け取ります
答えを得る
対話
コンソールでメッセージを受け取ります
答えを得る
対話