# Discord Bot Construction Kit 🤖

**URL:** https://meta.discourse.org/t/discord-bot-construction-kit/122530
**Category:** Plugin
**Tags:** pavilion
**Created:** [7월 10, 2019, 8:29오전 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530 "2019-07-10T08:29:26Z")
**Posts on this page:** 20
**Page:** 7

<div class="post-metadata">

### Author: ![Fma965](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fma965/32/259795_2.png) [@Fma965](https://meta.discourse.org/u/Fma965)
#### Post date: [5월 4, 2023, 6:23오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/129 "2023-05-04T18:23:35Z")

</div>

죄송합니다, 옛날 포럼 용어를 쓰게 되었네요. 여기서 말하는 Threads는 Discord의 Threads가 아니라 Discourse의 Topics를 의미합니다.

커스텀 기능에 대한 비용을 지불할 의향이 있지만, 토픽을 생성한 후에 이동하는 방식으로 우회 방법을 찾은 것 같습니다. 🤔 너무 단순한 방법인 것 같기도 하네요.

Discord의 Threads가 나온 게 2년 전이었나요? 아이고, 나이가 드는구나. 😆 시간이 어떻게 흘러가는지 잘 모르겠어요.

그래도 이미지와 멘션(Mention) 지원을 추가하는 게 쉬운 일일지 궁금하네요. 🤔 ?

견적 좀 주세요. 😉

![image](https://global.discourse-cdn.com/meta/original/4X/1/b/3/1b3baac046ceb01c827b07e5d315e4354f46c637.png)

 ![image](https://global.discourse-cdn.com/meta/original/4X/b/5/f/b5f9d4d6b0a767c16a4e9850e6ab2644859748f3.png)  
 ![image](https://global.discourse-cdn.com/meta/original/4X/0/f/3/0f34bb42deaf4b707ece63a1c47dc0344970dc5f.png)

---

<div class="post-metadata">

### Author: ![denvergeeks](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/denvergeeks/32/327671_2.png) [@denvergeeks](https://meta.discourse.org/u/denvergeeks)
#### Post date: [5월 5, 2023, 11:21오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/130 "2023-05-05T23:21:30Z")

</div>

네, 이 대화는 여기 Discourse에서 계속해 주세요!

저도 Discord 서버와 동기화하기 위해 이 플러그인을 구현하고 있습니다!

---

<div class="post-metadata">

### Author: ![Justman10000](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/justman10000/32/252913_2.png) [@Justman10000](https://meta.discourse.org/u/Justman10000)
#### Post date: [5월 6, 2023, 6:42오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/131 "2023-05-06T18:42:45Z")

</div>

> [@merefield](#):
>
> ## !discsync \<clean up: 기본값 false, min\_visibility: 기본값 0, include automated groups: 기본값 false\>
> 
> 이 명령어는 제공된 기준(또는 기준이 제공되지 않으면 기본값)에 일치하는 모든 그룹을 Discord의 역할(Roles)로 복사하는 것을 시도합니다. 그런 다음 Discourse의 그룹 구성원 자격에 따라 역할을 채우도록 시도합니다. 이는 일방향 동기화만 수행합니다. Discourse 데이터는 절대 변경되지 않습니다.

이것은 Discord의 역할이 Discourse로 복사된다는 뜻인가요? 아니면 그 반대인가요? 궁극적으로는 두 옵션 모두를 허용하는 것이 더 나을 것입니다.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [5월 6, 2023, 6:59오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/132 "2023-05-06T18:59:21Z")

</div>

PR 기다리고 있습니다.

---

<div class="post-metadata">

### Author: ![Justman10000](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/justman10000/32/252913_2.png) [@Justman10000](https://meta.discourse.org/u/Justman10000)
#### Post date: [5월 6, 2023, 7:01오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/133 "2023-05-06T19:01:25Z")

</div>

내 것처럼? PR? 무슨 PR?

---

<div class="post-metadata">

### Author: ![carrotcypher](https://avatars.discourse-cdn.com/v4/letter/c/8e8cbc/32.png) [@carrotcypher](https://meta.discourse.org/u/carrotcypher)
#### Post date: [5월 7, 2023, 11:34오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/134 "2023-05-07T23:34:13Z")

</div>

@merefield 안녕하세요! 훌륭한 작업이네요. 많은 분들이 그러셨을 것 같지만, 저도 Discourse와 Discord를 어떤 식으로든 연결해 줄 플러그인이나 봇을 검색하다가 이 글을 찾게 되었습니다.

이 시점에서는 거의 포기하고 개발자를 고용해서 처리하려 했었는데요, 오픈소스를 믿는 사람으로서 이 주제를 먼저 발견하게 되어 정말 감사했습니다.

제가 도움으로 관리하는 Discord 커뮤니티 중 하나에는 서로 다른 저자의 여러 라이브러리가 있으며, 이들의 커뮤니티가 겹치기 때문에 해당 Discord와 관련 채널을 그 라이브러리의 기술 지원용으로 사용하고 있습니다.

SEO, 지식 베이스 구축, 그리고 편의성 측면에서 이상적인 해결책은 모두가 Discourse 포럼을 사용하는 것이겠지만, 모든 조건이 동일하다면 사람들은 여전히 질문을 Discord에 올리는 것을 선호합니다. 그 결과 응답하는 쪽은 해당 대화를 Discourse에 재현하기 위해 수동적인 해결책을 찾아야 하는 상황이 됩니다.

이 비효율성을 해결하되, 사용자에게 나쁜 UX를 강요하지 않기 위해 _(예: “Discord에 오신 것을 환영합니다. 이제 Discourse를 가서 같은 질문을 다시 올려 주세요”)_, 각 라이브러리 채널의 메인 댓글이 Discourse 포럼에서 새로운 주제를 자동으로 생성할 수 있기를 원합니다. 이렇게 하면 스팸이 빠르게 증가할 것이므로, 다음과 같은 조건에서만 트리거되도록 설정하고 싶습니다:

1. 스레드로 전환된 경우 _(실제로 답변이 달린 질문이었다는 것을 의미합니다)_

2. 승인된 역할 \*(기술 지원, 관리자, 어드민 등)\*이 지정된 이모지로 응답한 경우

그 후, 해당 Discord 스레드 내의 모든 후속 댓글은 자동으로 추적되어 동일한 상위 Discourse 주제에 답변으로 게시되도록 하고 싶습니다. _(참고: 사용자 계정이 존재할 필요는 없습니다 – 게시글 본문에 출처인 사용자명을 언급하기만 한다면 “system” 또는 지정된 봇으로 전송하는 것도 허용됩니다)_

이러한 요구 사항에 기반하여 몇 가지 질문이 있습니다:

1. 이 주제에서 언급된 봇은 이 기능에 대비되어 있나요?

2. 만약 그렇지 않다면, 어떤 부분이 아직 준비되지 않았거나 계획에 없나요? ("threads"는 "개발 중"인 것으로 보이는데, 만약 재정적 우선순위 문제라면 현실화하기 위해 충분한 보상을 게시할 수 있습니다)

3. 개발을 위해 해당 보상을 게시해야 하는 상황이 오면, 적절한 위임 방식은 무엇인가요? 요구 사항과 기대치 \*(비용, 일정 등)\*는 어떻게 되나요?

지금까지 여러분(그리고 모든 분들!)이 해 주신 작업에 감사드리며, 신속한 답변을 기다리겠습니다.

~carrot

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [5월 8, 2023, 6:08오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/135 "2023-05-08T18:08:52Z")

</div>

안녕하세요 @carrotcypher,

이 무료 플러그인은 제가 (Pavilion의 일부로) 최선을 다해 유지 관리하고 있습니다.

로드맵은 없으며, 기능 개발은 외부 스폰서가 있을 때만 진행됩니다.

귀하의 사용 사례는 흥미로운 주제입니다.

이 '봇’은 [이 Ruby gem](https://github.com/shardlab/discordrb)에 의존하며, 이는 핵심 의존성입니다.

아직 공식 릴리스에서 Threading을 지원하지 않지만, 메인 브랜치에 일부 지원이 추가된 것으로 보입니다. 그러나 그 범위가 어느 정도인지 정확히 파악하려면 상당한 노력이 필요하며, 그들이 언젠가 릴리스를 계획하고 있는지 그들과 논의해 볼 수도 있습니다. ~~문서는 각 릴리스 시점에 최신으로 업데이트됩니다~~. 메인 브랜치에 지원이 있는 것만으로는 충분하지 않으며, 이상적으로는 gem이 업데이트되어야 합니다.

이 프로젝트에 진심이시라면, 우선 Pavilion의 프로젝트 관리 팀과 프로젝트를 논의하시는 것을 권장합니다. 물론 #Marketplace 채널에 게시하는 것도 자유롭습니다.

여기서 contact를 클릭하고 지시에 따르세요: [https://pavilion.tech/solutions/](https://pavilion.tech/solutions/)

---

<div class="post-metadata">

### Author: ![wander1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/wander1/32/308836_2.png) [@wander1](https://meta.discourse.org/u/wander1)
#### Post date: [5월 27, 2023, 10:36오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/136 "2023-05-27T22:36:19Z")

</div>

@merefield 안녕하세요, 플러그인을 설치했는데 서버에서 봇이 명령어에 반응하지 않습니다.

“The Discourse admin bot has started his shift!” 메시지는 정상적으로 표시되지만, 그 이후에는 아무것도 반응하지 않습니다.

이상하게도, 디스코드에서 봇에게 다이렉트 메시지를 보내면 정상적으로 작동합니다. 서버의 권한을 확인해 봤는데 설정은 올바르게 되어 있는 것 같습니다 (봇에게 관리자 권한을 부여했습니다).

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [5월 28, 2023, 2:39오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/137 "2023-05-28T14:39:19Z")

</div>

이상하네요. 최신 버전의 Discourse에서 확인해봤는데 정상적으로 동작하더라고요.

Discord에서 `Ping!`을 입력하면(대소문자 구분) 어떤 일이 일어나나요?

로그를 확인해 보시고, 오류 메시지가 있는지 살펴보세요.

---

<div class="post-metadata">

### Author: ![wander1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/wander1/32/308836_2.png) [@wander1](https://meta.discourse.org/u/wander1)
#### Post date: [5월 28, 2023, 3:49오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/138 "2023-05-28T15:49:05Z")

</div>

핑(Ping)에 반응이 없어요! (하지만 다이렉트 메시지에서는 작동합니다)

로그

 ![Screenshot from 2023-05-28 17-46-57](https://global.discourse-cdn.com/meta/original/4X/c/8/7/c87204946b8b499beaf964d3794b094ced3e90cb.png)

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [5월 30, 2023, 11:23오전 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/139 "2023-05-30T11:23:02Z")

</div>

글쎄, 설정에서 토큰 관련해서 뭔가 문제가 있는 것 같습니다.

토큰에 이상한 문자를 넣었거나, 아예 입력을 안 했나요?

![image](https://global.discourse-cdn.com/meta/original/4X/b/4/8/b4890118e6e87f2fdef38164a8bcc74fbbc7609e.png)

---

<div class="post-metadata">

### Author: ![wander1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/wander1/32/308836_2.png) [@wander1](https://meta.discourse.org/u/wander1)
#### Post date: [5월 30, 2023, 11:37오전 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/140 "2023-05-30T11:37:33Z")

</div>

포기했어요. 어차피 제 용도에 맞는 도구가 아니었던 것 같아요.  
왜 안 됐는지는 모르겠어요. 여러 번 조심스럽게 해봤는데도요.  
아마 디스코드가 이상한 거겠죠?  
어쨌든 도와주려고 해줘서 고마워요.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [5월 30, 2023, 11:51오전 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/141 "2023-05-30T11:51:32Z")

</div>

기능적으로 무엇을 하려 했나요?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [5월 30, 2023, 11:53오전 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/142 "2023-05-30T11:53:18Z")

</div>

네, 좋은 해결책이네요. 필요한 명령은 다음과 같습니다:

`::DiscordBot::Bot.discord_bot.stop`

이 명령을 실행하면 rails 콘솔 세션에서 추가된 봇이 중지되고, 현재 메인 서버의 봇은 계속 실행됩니다.

@satonotdead 이 해결책이 마음에 드실 것 같습니다.

OP에 이 정보를 추가해 두었습니다.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [6월 28, 2023, 4:55오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/143 "2023-06-28T16:55:20Z")

</div>

죄송합니다. 이곳의 게시글을 다시 확인하다가 제가 잘못된 조언을 드린 것을 발견했습니다. 이후로 Discord에서 작동할 수 있는 Discourse 이벤트에 응답하는 훅(hooks)을 구현했습니다. 이 중 일부는 이미 유용하게 사용하실 수 있으며, 이 기법은 다른 이벤트로도 확장할 수 있습니다:

> [@Discord Bot Construction Kit robot](https://meta.discourse.org/t/discord-bot-construction-kit/122530/79?u=merefield):
>
> OK I’ve developed the plugin a little further now and have POC for two way communication working: Here are the new settings You can designate an Announcements Channel on Discord in the plugin settings. You can now type into the assigned Discord Announcements Channel and this will post your message to your assigned Discourse Topic in the plugin settings You can set up a list of Categories in Discourse to post to the Announcements channel on your Discord if someone Posts there …

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [7월 26, 2023, 7:35오전 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/144 "2023-07-26T07:35:06Z")

</div>

스폰서님께 감사드리며, @RGJ 님의 추가 도움 덕분에 몇 가지 중요한 업데이트를 가져왔습니다:

> <https://github.com/merefield/discourse-discord-bot/pull/7>
>
> \* FEATURE; Adds ability to easily copy Discord Threads to Discourse, by extendin…g and improving the existing \`!disccopy\` command
> \* IMPROVE: Brings the plugin up to date with the latest \`discordrb\` code
> \* FEATURE: Adds multisite support (thanks @o7n !!)
> \* FEATURE: Restarts the bot on any settings change (thanks again @o7n !!)

> <https://github.com/merefield/discourse-discord-bot/pull/9>
>
> \* COMPATIBILITY: Gem version increased to 3.5.0
> \* COMPATIBILITY: Vendor code re…moved as now the gem includes Thread support.

- 기능 추가: 기존 `!disccopy` 명령어를 확장하고 개선하여 Discord 스레드를 Discourse로 쉽게 복사할 수 있는 기능을 추가했습니다
- 개선: 플러그인을 최신 `discordrb` 코드(3.5.0)에 맞게 업데이트했습니다
- 기능 추가: 멀티사이트 지원 추가 (감사합니다 @RGJ !!)
- 기능 추가: 토큰이 변경되거나 활성화되면 봇 스레드를 재시작합니다 (이로 인해 호스트 서버를 재시작할 필요가 없습니다) (다시 한번 감사합니다 @RGJ !!)

@klausagnoletti, @Fma965 이 API 업데이트로 드디어 Discord 스레드와 API를 통해 상호작용할 수 있게 되었습니다. 이는 기본적으로 추가적인 "채널"과 같습니다.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [9월 5, 2023, 9:36오전 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/145 "2023-09-05T09:36:47Z")

</div>

> <https://github.com/merefield/discourse-discord-bot/pull/11>
>
> \* Checks if "running in rack" ie an active web process before spawning bot threa…d.
> \* This will prevent bot being spawned too often, e.g. in a migration or console process.
> 
> thanks to @o7n for this suggestion 🙏

아, 드디어!

프로세스 중 부적절한 시점에 봇이 생성되는 것을 방지하는 작동하는 체크가 추가되었습니다!\*

다음과 같은 상황에서 더 이상 새 봇이 생성되지 않습니다:

- 데이터베이스 마이그레이션 실행 시
- Rails 콘솔을 열 때 (이제는 이를 위해 봇을 정지할 필요가 없습니다).

그 결과 봇 재빌드 시 발생하는 채팅 알림이 최소 50% 감소하여, 이제 봇은 두 번만 자신을 알리게 됩니다 😅

이 최신 변경 사항에 문제가 있으면 알려주세요.

제안해 주신 @RGJ님께 감사드립니다! 🙏

\*대부분 그렇습니다! 🙂

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [6월 10, 2024, 1:33오후 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/146 "2024-06-10T13:33:51Z")

</div>

단순히 알려드리고 싶은 것은 최근 제가 다음 작업을 수행했다는 것입니다:

- FIX: Discord → Discourse 메시지 자동 동기화 기능이 지난 업데이트 이후로 깨져 있던 것으로 보이며, 이를 수정했습니다!!
- FEATURE: Discord 임베드 자동 동기화에 대한 지원 수준을 하나 추가했습니다.

즐겁게 사용하세요!

---

<div class="post-metadata">

### Author: ![rustyneedles](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rustyneedles/32/424155_2.png) [@rustyneedles](https://meta.discourse.org/u/rustyneedles)
#### Post date: [6월 13, 2024, 3:26오전 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/147 "2024-06-13T03:26:49Z")

</div>

안녕하세요, 스크립트 잘 만들었어요! 이걸 만들어주셔서 감사합니다. 몇 가지 질문이 있습니다… 봇은 역할에 있는 멤버들을 얼마나 자주 동기화하나요? 저는 방금 디스코스를 설정했는데, 이 플러그인이 제가 설치한 첫 번째 플러그인 중 하나였습니다. 웹에서 그룹을 만들고 제 자신을 추가했는데, 디스코드에서 !discsync를 수동으로 입력하면 제 닉네임에 디스코드 태그가 정상적으로 추가됩니다. 그런데 웹에서 그룹에서 제 자신을 제거하거나 다른 사람을 추가하면… 디스코드에서 !discsync를 수동으로 입력하지 않는 한 아무 일도 일어나지 않습니다. 이게 의도된 동작인가요, 아니면 몇 분마다(예: 10분마다) 동기화되어야 하는 건가요?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [6월 13, 2024, 5:16오전 UTC](https://meta.discourse.org/t/discord-bot-construction-kit/122530/148 "2024-06-13T05:16:38Z")

</div>

수동으로 처리해야 합니다.

다음 포크를 참고할 수 있습니다: [Discord Sync: sync a Discourse forum with a Discord server](https://meta.discourse.org/t/discord-sync-sync-a-discourse-forum-with-a-discord-server/175864?u=merefield) 하지만 유지보수가 중단되어 깨져 있을 것이라고 생각합니다(해당 개발자에게 PR을 요청하기도 했지만, 어쩔 수 없죠!).

더 자동화된 솔루션을 PR로 제출하거나, 저를 고용하여 작업을 맡기거나, #Marketplace 채널을 이용해 보세요.

도무지 '건설 키트’이니까요 🙂

[이전 페이지](https://meta.discourse.org/t/discord-bot-construction-kit/122530.md?page=6)
