Melanjutkan eksperimen saya dengan rumah "pintar", demi kesenangan, saya memutuskan untuk menambahkan grup ke VK untuk mengendalikan beberapa karakteristiknya. Untuk artikel ini, kami menetapkan tugas: kami akan mencoba menulis dalam bahasa C # bot sederhana yang akan merespons atas nama komunitas di VK dan mempertimbangkan cara cepat meluncurkannya di arm32 (dalam kasus saya, oranye pi nol).

Pikirkan tentang penyebaranada banyak opsi lain (misalnya, put runtime), ini salah satunya
Jadi, letakkan di rak.
Buat aplikasi di VKBerikut ini dokumentasi terperinci- Untuk membuat bot, buka di sini
Klik "buat aplikasi" dan pilih "Aplikasi Mandiri". - Sekarang kita beralih ke manajemen dan di tab Application Id kita ingat ID-nya. Ini akan bermanfaat bagi kita lebih jauh.

Kami mendapat tanda untuk bekerja dengan kelompok- Kami mengirim permintaan hanya dengan memasukkannya ke dalam baris browser:
https://oauth.vk.com/authorize?client_id=YOURAPPID&group_ids=YOURGROUPID6&display=page&scope=messages,wall,manage&response_type=token&v=5.92
di mana YOURAPPID adalah id aplikasi yang kami temukan di spoiler sebelumnya, dan id YOURGROUPID adalah komunitas Anda.
- Kami memberikan akses ke aplikasi

- Dan kami mendapatkan jawaban ini
https://oauth.vk.com/blank.html#expires_in=0&access_token_YOURGROUPID=YOURTOKEN
Di mana token akan menjadi kombinasi huruf dan angka latin yang sangat panjang
Lebih mudah mendapatkan token- Pergi ke manajemen komunitas


Mendirikan komunitas untuk bekerja dengan polling panjang- Kami pergi ke tab manajemen komunitas kami.
- Api Penggunaan dan di dalamnya LongPoll Api

- Jenis acara (event), di dalamnya kami menandai perlu, untuk tes saya akan menandai semuanya.
Kami lolos ke bagian utama:Luncurkan ide favorit Anda, buat aplikasi konsol di net core

Tambahkan
VkNetspoilerSayangnya di wiki, dokumentasinya agak ketinggalan jaman. Salah satu alasan untuk membuat panduan ini.
Tetapi ada dukungan besar di
sini. 
Masuk menggunakan token kami:
var api = new VkApi(); api.Authorize(new ApiAuthParams(){AccessToken =MyAppToken });
Dan dalam satu lingkaran tanpa akhir kami akan menerima pembaruan
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}); }
Mari kita periksa apakah sesuatu datang kepada kita
if(poll?.Updates== null) continue;
Untuk semua data yang diterima, kami mencari tahu apakah semua ini adalah pesan, jika demikian, kemudian cetak isinya
foreach (var a in poll.Updates) { if (a.Type == GroupUpdateType.MessageNew) { Console.WriteLine(a.Message.Body); } }
Dan kami akan menjawab pengguna dengan teks yang sama
api.Messages.Send(new MessagesSendParams() { UserId = a.Message.UserId, Message = a.Message.Body });
Menerima kode 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); } } }
Mari kumpulkan kode yang diterima untuk papan kami
dotnet publish . -r linux-arm
Dan seret di papan direktori yang diinginkan

Kami pergi ssh dan lari
chmod +x ConsoleApp1 ./ConsoleApp1
HasilKirim pesan

Kami menerima pesan di konsol

Kami mendapat jawabannya

Dialog
