Отказ от ответственности:
Я не создатель этой интеграции и не могу предоставлять поддержку, кроме как в рамках добросовестной помощи от сообщества. Я просто ещё один пользователь, который хотел настроить это на своём сайте, но не нашёл чёткого способа сделать это. В процессе я обнаружил ошибку, из-за чего создал PR для её исправления, однако мои знания в этой области довольно ограничены.
Как это работает (Архитектура)
Прежде чем приступать к настройке, важно понимать, что вам не нужно размещать отдельное приложение бота или запускать скрипт «бота» (например, на Node.js или Python) на вашем сервере.
Эта интеграция использует взаимодействия Discord (вебхуки) в сочетании с прогрессивным редактированием для имитации потокового опыта работы с ИИ:
- Действие пользователя: Пользователь вводит
/askв вашем сервере Discord. - Вебхук: Discord отправляет HTTP POST-запрос напрямую на ваш сервер Discourse.
- Мгновенное подтверждение: Discourse мгновенно отвечает статусом «Поиск…». Это предотвращает тайм-аут «Взаимодействие не удалось» в Discord.
- Потоковый ответ: Фоновая задача начинает генерировать ответ ИИ. По мере того как ИИ генерирует текст, Discourse отправляет частые HTTP PATCH-запросы для редактирования сообщения в Discord в реальном времени.
Результат: Пользователи видят, как ответ печатается в реальном времени, как в ChatGPT, вместо того чтобы ждать появления одного статичного блока текста.
Ключевое преимущество: Поскольку вся логика обрабатывается внутри Discourse, не требуется дополнительная инфраструктура для поддержки. Если ваш форум работает, ваш бот тоже работает.
Это руководство подробно описывает полный процесс интеграции бота Discourse AI с сервером Discord. Оно включает конкретные инструкции по ручной регистрации слэш-команд через API, что в настоящее время требуется для обхода проблем с автоматической синхронизацией в плагине.
Требования
- Доступ администратора Discourse: Вы должны быть администратором вашего саморазмещённого экземпляра Discourse.
- Доступ администратора Discord: У вас должны быть права «Управление сервером» на целевом сервере Discord.
- Discourse AI: Должен быть включён на вашем сервере Discourse.
- Доступ к терминалу: Вам понадобится терминал для выполнения команд
curl.
1. Создание приложения Discord
- Перейдите в Портал разработчика Discord.
- Нажмите Новое приложение в правом верхнем углу.
- Дайте приложению имя (например, «Discourse Helper») и нажмите Создать.
- Скопируйте учётные данные: На странице Основная информация найдите и сохраните следующее для последующего использования:
2. Настройка пользователя бота
-
В левом боковом меню нажмите Bot.
-
Нажмите Сбросить токен.
-
Включите привилегированные намерения:
- Прокрутите вниз до раздела «Privileged Gateway Intents».
- Переключите Message Content Intent в положение ВКЛ. (Это позволяет боту читать сообщения, на которые ему нужно отвечать).
-
Нажмите Сохранить изменения.
3. Настройка параметров Discourse
-
Войдите в панель администратора Discourse.
-
Перейдите в раздел Администрирование → Плагины → AI → Функции.
-
Найдите «discord» и нажмите на редактирование:
-
Заполните детали:
AI Discord app ID: Вставьте=ApplicationId=AI Discord app public key: Вставьте=PublicKey=
-
Разрешите ваш сервер Discord:
- Откройте приложение Discord и включите режим разработчика (Настройки пользователя → Дополнительно → Режим разработчика).
- Нажмите правой кнопкой мыши на иконку вашего сервера в боковом меню и выберите Копировать ID сервера.
- В настройках Discourse вставьте этот ID в поле
AI Discord allowed guilds.
4. Установка конечной точки взаимодействий
- Сформируйте URL конечной точки:
=ForumUrl=/discourse-ai/discord/interactions - Вернитесь в Портал разработчика Discord.
- На странице Основная информация прокрутите до раздела Interactions Endpoint URL.
- Вставьте ваш URL и нажмите Сохранить изменения.
- Успех: Discord отправит тестовый сигнал. Если сохранение прошло без ошибок, ваш экземпляр Discourse успешно проверил подпись.
- Ошибка: Если вы получили ошибку, убедитесь, что
AI Discord app IDиAI Discord app public keyправильно сохранены в настройках Discourse.
5. Приглашение бота
- В Портале разработчика нажмите Installation в боковом меню.
- Области доступа: Установите флажки для
botиapplications.commands. - Разрешения бота: Установите следующие флажки:
- Отправка сообщений
- Встраивание ссылок
- Прикрепление файлов
- Чтение истории сообщений
- Скопируйте Ссылку для установки в верхней части страницы.
- Откройте эту ссылку в новой вкладке браузера и авторизуйте бота для присоединения к вашему серверу.
6. Регистрация слэш-команды (Ручной вызов API)
Важно: Имя параметра команды должно быть query.
Для Mac / Linux (Bash)
curl -X POST "https://discord.com/api/v10/applications/=ApplicationId=/commands" \
-H "Authorization: Bot =BotToken=" \
-H "Content-Type: application/json" \
-d '{
"name": "ask",
"description": "Задать вопрос ИИ",
"options": [
{
"name": "query",
"description": "Ваш вопрос?",
"type": 3,
"required": true
}
]
}'
- Успешный ответ: Вы должны получить JSON-ответ, содержащий ID новой команды.
- Ошибка 401? Убедитесь, что вы сохранили слово
Bot(с пробелом) перед вашим токеном в заголовке Authorization.
7. Проверка
- Откройте ваш сервер Discord.
- Введите
/askв текстовом канале. - Должно появиться меню команды. Выберите
/askи введите вопрос в полеquery. - Ожидаемое поведение:
- Мгновенно: Бот отвечает «Поиск…"
- Через несколько секунд: Сообщение обновляется ответом ИИ.
Устранение неполадок
| Ошибка | Причина | Решение |
|---|---|---|
| 401 Unauthorized (в Curl) | Неверный формат токена | Убедитесь, что заголовок Authorization: Bot =BotToken=. Используйте токен со вкладки Bot, а не с вкладки General. |
| Job Exception: context must be an instance of BotContext | Неверная полезная нагрузка | Убедитесь, что вы используете актуальную версию; эта ошибка была исправлена в FIX: Discord Bot crash due to missing BotContext in PersonaReplier by devtekve · Pull Request #36429 · discourse/discourse · GitHub |




