Как стать автором
Обновить

Активности в Discord

Уровень сложностиПростой

Итак, возможно я слепой и не умею пользоваться интернетом (а так же читать официальную вики по этой шляпе), но у меня были сложности по запуску discord активности с собственным контентом (ту штуку, в которой можно смотреть youtube, а не статус у человека), потому для людей как я пишу очень "сложный" гайд.

Итак, что нам потребуются:

  • Язык программирования для бота (или сервис который предоставляет оного)

  • Бот

  • (опционально) Discord Сервер

  • Домен/Обратный прокси

  • И что-то на чем живет бот (если только не первый пункт)

Язык

Ну, я думаю тут с выбором любимого справятся все сами, но в моём случае используется Python

Бот

Стандартный бот в котором необходимо задать путь до целевой точки обращения сервера.
Для тех кто знает спускаемся ниже, для остальных:

  1. Переходим на Discord Developer Portal

  2. Нажимаем New Application и даём название нашему приложению/боту

image
image 1
image
image 2
  1. После создания приложения перейдите на вкладку OAuth2

image
image 3

Сохраняем ID приложения, понадобится далее


4. Переходим в Activities, где необходимо включить саму функцию активности

image
image 4

Далее должны появится его настройки, которые можно менять по необходимости

  1. Необходим домен куда будут отправляться запросы для взаимодействий

  2. Далее, мы возвращаемся с ссылкой и переходим в вкладку URL Mappings и вставляем ссылку в TARGET

image
image 5
  1. Далее несколько вариантов:

  • (уже есть функционал в боте)Добавить приложение (будет кнопка на боте, в канале или при личном обращении)

  • Либо же, в настройках, включить режим разработчика в вкладке Расширенные, (так же можно включить Тестирование приложения, где уже будет необходимо указать ID приложения для тестирования)

Домен/Обратный прокси

Из названия понятно, что нужно место обращений нашей активности.
В самой вики приводят как простые варианты NGROK и CLOUDFLARE, ну или любой другой обратный прокси, или свой домен.


Оба варианта работают, но:

  • ngrok:

  • +Заводится и настраивается за полторы минуты

  • -Не получится использовать в бесплатной версии (При переходе по ссылке будет появляться предупреждение (серверное от ngrok), что вы стучитесь туда-то туда-то ... переходите только если доверяете, но в активности его не увидеть и будет только белое окно)

  • cloudflare:

  • +Работает бесплатно (если перейти до момента ввода карты и просто уйти с сайта на какое-то время, потом не потребуется вводит её)

  • -Длительная конфигурация(вообще, это плюс, но мы в простоту)

Обработчик

Итак, всё сделали, домен есть, бот есть, осталось обрабатывать запросы от него, да и туннель до домена было бы неплохо организовать.
В моём варианте использовался VPS (но, тут уже у кого как, но суть примерна одинакова должна быть)

  • Необходимо установить приложения обратного прокси (ngrok, cloudflare, etc)

  • Использовать заглушку для приема данных (можно использовать и уже имеющиеся продукты или что-то более адекватное, ниже простая заглушка для примера работы)

    import logging
    from flask import Flask, request
    
    app = Flask(__name__)
    
    # Configure logging
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    logger = logging.getLogger(__name__)
    
    @app.route('/', defaults={'path': ''}, methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD'])
    @app.route('/<path:path>', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD'])
    def catch_all(path):
        logger.info(f"Received request: {request.method} {request.url}")
        logger.info(f"Headers: {request.headers}")
        logger.info(f"Body: {request.get_data(as_text=True)}")
        return "<html><body><h1>Hello, World!</h1><p>This is a test.</p></body></html>"
    
    if __name__ == '__main__':
        app.run(port=5000)
    

Поздравляю

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

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.