Загрузка...

Отправляем события в группе ВК через вебхук Discord’а

Тема в разделе Социальные сети создана пользователем Esteem 21 дек 2022. 958 просмотров

  1. Esteem
    Esteem Автор темы 21 дек 2022 My tg channel: @esteemlolz 10 761 1 июл 2020
    В данной теме я расскажу, как использовать вебхук Дискорда для отправки событий группы в ВК.

    Приступим:

    Для того чтобы присылать события группы ВК через вебхук Discord, следует выполнить следующие шаги:
    1. Создайте группу ВК и настройте ее так, как вам нужно.
    2. Создайте сервер Discord и найдите в нем настройки вебхуков.
    3. Создайте новый вебхук Discord, указав нужный канал и назначив ему имя.
    4. Перейдите в настройки группы ВК и найдите раздел "Работа с API". Включите доступ к API и создайте токен для работы с API.
    5. Установите библиотеку vk_api для Python и напишите скрипт (будет предоставлен ниже), который будет отслеживать события группы ВК и отправлять их в Discord через вебхук. Для этого вам нужно будет использовать Long Poll API ВК и метод send библиотеки vk_api.

      И так, приступим к написанию самого скрипта:

      1: Импортируем нужные библиотеки:

      Python
      import vk_api
      import requests
      2: Настраиваем в этом же коде всю нужную для нас конфигурацию:

      Python
      # ID группы ВК

      GROUP_ID = ваш_айди

      # Токен доступа к API ВК
      VK_ACCESS_TOKEN = 'ваш_токен'

      # URL вебхука Discord
      DISCORD_WEBHOOK_URL = 'адрес_вебхука'
      3: Теперь приступим к настройке самого скрипта:
      Python
      # Авторизуемся в ВК
      vk_session = vk_api.VkApi(token=VK_ACCESS_TOKEN)
      vk = vk_session.get_api()

      # Получаем список участников группы
      members = vk.groups.getMembers(group_id=GROUP_ID)['items']

      # Устанавливаем соединение с сервером ВК через Long Poll API
      long_poll = vk_api.longpoll.VkLongPoll(vk_session)
      4: Также не забываем, что нам нужно проверку событий зациклить, чтобы она происходила постоянно:
      Python
      # Бесконечный цикл ожидания событий
      for event in long_poll.listen():
      # Если это событие нового поста в группе
      if event.type == vk_api.longpoll.VkEventType.WALL_POST_NEW:
      Считайте, что мы уже написали скрипт, осталось всего лишь обрабатывать события и присылать их через вебхук.

      5: Обрабатываем событие о новом посте:
      Python
              # Получаем информацию о посте
      post = vk.wall.getById(posts=f'{GROUP_ID}_{event.object.id}')[0]

      # Получаем информацию об авторе поста
      user_id = post['from_id']
      user = vk.users.get(user_ids=user_id)[0]

      # Формируем сообщение, которое будем отправлять в Discord
      message = f'Новый пост in {post["owner_id"]} by {user["first_name"]} {user["last_name"]}: {post["text"]}'

      6: Ну и заключительная часть - отправим само уведомление о событии:
      Python
      requests.post(DISCORD_WEBHOOK_URL, json={'content': message})


      Если тема наберет достаточное количество просмотров, заинтересованности и прочих факторов - добавлю сюда примеры кода с оповещением о новых лайках, подписчиках и так далее (можете и сами разобраться в документации Long Poll)

      Примечание:
      Дабы вам не хостить этот скрипт на вашем компьютере, вы можете залить скрипт на Heroku:

      Для этого вам нужно будет создать аккаунт на Heroku, создать новое веб-приложение и загрузить туда скрипт с помощью Git. После этого вы сможете запустить скрипт, используя команду heroku run python main.py

      Надеюсь тема кому-нибудь будет полезной. Нашли недочет или хотите что-то добавить? - пишите в комментарии под тему и я все учту!
     
    Этот материал оказался полезным?
    Вы можете отблагодарить автора темы путем перевода средств на баланс
    Отблагодарить автора
Загрузка...
Top