Один Бот Вк, Один C# И Апельсин

Продолжая свои эксперименты с «умным» домом, ради интереса я решил добавить группу в ВК для управления некоторыми его характеристиками.

Для этой статьи поставим задачу: попробуем написать на C# простого бота, который будет отвечать от имени сообщества в ВК, и рассмотрим, как его быстро запустить на арм32 (в моем случае на Orange Pi Zero).



Один бот ВК, один C# и апельсин

Мысль о развертывании есть много других вариантов (например, установить рантайм), это один из них Итак, давайте разобьем его на разделы.

Создание приложения в ВК Вот подробная документация

  1. Для создания бота идем здесь Нажмите «Создать приложение» и выберите «Автономное приложение».

  2. Теперь зайдите в управление и во вкладке Application Id запомните его Id. Нам это пригодится позже.



    Один бот ВК, один C# и апельсин

Получаем токен за работу с группами
  1. Отправляем запрос, просто вставив в строку браузера:
      
      
      
      
      
      
      
      
      
       

    https://oauth.vk.com/authorizeЭclient_id=YOURAPPID&group_ids=YOURGROUPID6&display=page&scope=messages,wall,manage&response_type=token&v=5.92

    где YOURAPPID — это идентификатор приложения, который мы нашли в предыдущем спойлере, а YOURGROUPID — это идентификатор вашего сообщества.

  2. Предоставляем доступ к приложению

    Один бот ВК, один C# и апельсин

  3. И мы получаем этот ответ

    https://oauth.vk.com/blank.html#expires_in=0&access_token_YOURGROUPID=YOURTOKEN

    Где токен будет представлять собой очень длинную комбинацию латинских букв и цифр.

Получить токен проще
  1. Перейти к управлению сообществом


  2. Один бот ВК, один C# и апельсин



  3. Один бот ВК, один C# и апельсин

Настройка сообщества для работы с длинным опросом
  1. Перейдите на вкладку «Управление сообществом».

  2. Использование API и API LongPoll в нем

    Один бот ВК, один C# и апельсин

  3. Типы событий (события), отмечаем нужные, для тестов я бы отметил все.

Перейдем к основной части: Запустите свою любимую идею, создайте консольное приложение в сетевом ядре.



Один бот ВК, один C# и апельсин

Добавлять ВКонтакте спойлер К сожалению, документация на вики немного устарела.

Одна из причин создания этого руководства.

Но есть отличная поддержка Здесь.



Один бот ВК, один C# и апельсин

Мы разрешаем использовать наш токен:

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

И перетащим на доску нужный каталог

Один бот ВК, один C# и апельсин

Отправить по ssh и запустить

chmod +x ConsoleApp1 .

/ConsoleApp1

Результат Отправить сообщение

Один бот ВК, один C# и апельсин

Получаем сообщение в консоли

Один бот ВК, один C# и апельсин

Мы получаем ответ

Один бот ВК, один C# и апельсин

Диалог

Один бот ВК, один C# и апельсин

Теги: #Разработка на Raspberry Pi #vk #C++ #API ВКонтакте #.

NET #bot #core #vkapi

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.