Создание бота для Discourse

Есть ли способ создать бота для Discourse, который бы отвечал на мои команды, подобно тому, как я создавал множество своих ботов для Discord?

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

Вам понадобится плагин.

Посмотрите мой плагин Frotz как пример и отправную точку:

Плагины, работающие только через API, как этот, со временем обычно оказываются более стабильными, так что не беспокойтесь о нестабильности. В любом случае любой код требует обслуживания. В плагин Frotz-bot я со временем вносил минимальные изменения.

Посмотрите мой плагин для бота Discord, чтобы узнать, как писать код, реагирующий на такие события, как новые сообщения:

Возможно, ваши потребности будут удовлетворены следующим решением:

Если вы хотите больше контроля над судьбой кода, поддерживайте свой собственный форк/репозиторий.

Если вы действительно хотите, чтобы всё было полностью разделено, вы можете использовать комбинацию вебхуков для отправки событий вашему боту и API HTTP-запросов, чтобы ваш бот мог вносить изменения в Discourse.

Документация по API Discourse

Однако, как отмечает @merefield, возможно создание плагинов, которые не переопределяют основную функциональность, а вместо этого получают уведомления о событиях и взаимодействуют с основными API. Такие плагины проще поддерживать и реже вызывают нежелательные побочные эффекты.

Выбор пути с использованием вебхуков и API также требует настройки стека для запуска вашего бота и обеспечения его постоянной доступности, пока работает Discourse. Оба этих преимущества предоставляются бесплатно при загрузке плагина в Discourse.

Написание плагина потребует изучения Ruby и ознакомления с классами Discourse, но если вы уже умеете создавать и поддерживать бота на другом языке, я уверен, что вы быстро освоите необходимое.

Ах да, и это тоже, отличная мысль, Саймон!

Спасибо всем за ваши предложения — я обязательно посмотрю на все из них. :smiley:

Это можно сделать в посте или комментарии.

Возможно ли наличие бота в групповом чате?
Я вижу, что есть входящий веб-хук, который может доставлять сообщения в групповой чат, но, похоже, нет способа создать аккаунт бота, который слушал бы сообщения чата и реагировал на них соответствующим образом…?

Да, например:

поддерживает групповые чаты (а также темы, личные сообщения и т. д.).

(Это чисто ИИ-бот без команд (интерфейс на 100% основан на естественном языке, поэтому команды не требуются), но структура будет такой же).

Спасибо, @merefield.

С помощью плагина можно было бы добавить обработчик событий/слушателя для сообщений в групповом чате.
У меня есть сервер с REST-эндпоинтом, который обрабатывает события вебхуков, и это отлично работает для добавления бота к посту или комментарию.
К сожалению, для сообщений в групповом чате события не генерируются, так что такой подход не сработает… :frowning: