Si realmente quieres que esté completamente separado, podrías usar una combinación de webhooks para entregar eventos a tu bot y la API de solicitudes HTTP para que tu bot realice cambios en Discourse.
Documentación de la API de Discourse
Sin embargo, como alude @merefield, es posible crear plugins que no anulen la funcionalidad principal, sino que sean notificados de eventos e interactúen con las API principales, que son más fáciles de mantener y menos propensas a tener efectos secundarios no deseados.
Ir por la ruta de webhooks/API también requiere configurar una pila para ejecutar tu bot y asegurarte de que siempre esté disponible mientras Discourse está disponible, todo lo cual viene gratis con un plugin cargado en Discourse.
Escribir un plugin requeriría aprender Ruby y familiarizarse con las clases de Discourse, pero si ya eres capaz de escribir y mantener un bot en otra cosa, estoy seguro de que podrías aprender lo necesario bastante rápido.