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