Discourse에서 내가 만든 여러 Discord 봇처럼 명령에 응답하는 봇을 만들 수 있는 방법이 있을까요?
기본적으로 설치할 수 있는 다양한 플러그인이 있다는 것은 알고 있지만, 내 생각에는 플러그인을 설치하는 것보다 댓글의 텍스트를 듣고 반응하는 봇을 하나만 두는 것이 훨씬 유지보수가 쉬울 것 같습니다. 특히 플러그인은 문제를 일으킬 가능성이 높고, 유지보수자가 더 이상 플러그인을 관리하지 않기로 결정하는 경우에도 마찬가지입니다.
Discourse에서 내가 만든 여러 Discord 봇처럼 명령에 응답하는 봇을 만들 수 있는 방법이 있을까요?
기본적으로 설치할 수 있는 다양한 플러그인이 있다는 것은 알고 있지만, 내 생각에는 플러그인을 설치하는 것보다 댓글의 텍스트를 듣고 반응하는 봇을 하나만 두는 것이 훨씬 유지보수가 쉬울 것 같습니다. 특히 플러그인은 문제를 일으킬 가능성이 높고, 유지보수자가 더 이상 플러그인을 관리하지 않기로 결정하는 경우에도 마찬가지입니다.
플러그인이 필요합니다.
예시나 출발점으로 삼을 수 있도록 제 Frotz 플러그인을 참고해 보세요.
이런 방식의 API 전용 플러그인은 시간이 지나도 더 안정적일 가능성이 높으므로 불안정성에 대해 걱정하지 않아도 됩니다. 어쨌든 모든 코드에는 유지보수가 필요합니다. 저는 그동안 Frotz-bot에 최소한의 변경 사항만 적용했습니다.
새 게시물과 같은 이벤트에 대해 코드를 작성하는 방법을 확인하려면 제 Discord 봇 플러그인을 참고해 보세요:
아래 플러그인으로 요구 사항이 충족될 수 있습니다:
코드의 운명을 더 직접적으로 관리하고 싶다면, 포크나 저장소를 직접 유지보수하세요.
완전히 독립적으로 구성하기를 원하신다면, 웹훅(webhooks)을 사용하여 이벤트를 봇으로 전달하고, HTTP 요청 API를 통해 봇이 Discourse 내에서 변경 사항을 수행하는 방식을 조합하여 사용할 수 있습니다.
@merefield 님이 언급했듯이, 코어 기능을 오버라이드하지 않고 대신 이벤트를 수신하여 코어 API와 상호작용하는 플러그인을 만들 수도 있습니다. 이러한 방식은 유지보수가 더 쉽고 원치 않는 부수 효과가 발생할 가능성이 적습니다.
웹훅/API 방식을 선택할 경우, 봇을 실행할 스택을 설정하고 Discourse가 사용 가능한 동안 봇이 항상 가용하도록 보장해야 합니다. Discourse에 로드된 플러그인의 경우 이러한 모든 것이 무료로 제공됩니다.
플러그인을 작성하려면 Ruby를 배우고 Discourse 클래스에 대한 익숙함이 필요하지만, 이미 다른 언어로 봇을 작성하고 유지보수할 수 있는 능력이 있다면 필요한 내용을 빠르게 배울 수 있을 것입니다.
아, 맞다. 그 부분도 있네요. 좋은 지적입니다, 시몬!
모두의 제안에 감사드립니다 — 모든 제안을 꼭 확인해 보겠습니다. ![]()
이것은 게시글/댓글에서 수행할 수 있습니다.
그룹 채팅에 봇을 사용할 수 있을까요?
그룹 채팅으로 메시지를 전달할 수 있는 수신 웹훅이 있는 것 같지만, 채팅 메시지를 듣고 그에 따라 조치를 취하는 봇 계정을 만드는 방법은 없는 것 같습니다…?
예, 다음과 같은 경우입니다:
그룹 채팅(그리고 토픽, 개인 메시지 등)을 지원합니다.
(이것은 명령어가 없는 순수 AI 봇입니다. 인터페이스가 100% 자연어이므로 명령어는 필요하지 않지만, 구조는 동일할 것입니다)
감사합니다 @merefield
플러그인을 사용하면 그룹 채팅 메시지에 대한 이벤트 핸들러/리스너를 추가할 수 있습니다. 웹훅 이벤트를 처리하는 REST 엔드포인트 서버가 있어서, 게시물/댓글에 봇을 추가하는 데는 잘 작동합니다.
하지만 안타깝게도 그룹 채팅 메시지에 대한 이벤트가 발생하지 않아서, 그렇게는 안 되는 것 같습니다… :-("}