์ข์์. ์ฐธ๊ณ ๋ก ๋ค์ ์ฝ๋ฉ์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ฒ ๋๋ค๋ฉด, ์ด ํ๋ฌ๊ทธ์ธ์ ์ ์ฉํ ์ผ๋ฐ์ ์ธ ๊ฐ์ ์ฌํญ์ด๋ผ๋ฉด ๊ธฐ๊บผ์ด ๊ฒํ ํ๊ฒ ์ต๋๋ค ![]()
์, ์ฒ์ฒํ ์์ํด ๋ณด์. ๋ฐฉ๊ธ ์ด ์ ์ฅ์์ ์ฒซ ๋ฒ์งธ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ด
.
๋ณํฉ ์๋ฃ:slight_smile: ๊ฐ์ฌํฉ๋๋ค!
์๋ ํ์ธ์! ๋์ค์ฝ๋์์ ์ฌ์ฉ์๊ฐ ์์ ์ ๋์ค์ปค์ค ํ๋กํ์ ์๋ ๋ฐฐ์ง์ ๋ฐ๋ผ ์ญํ ์ ๋ถ์ฌ๋ฐ์ ์ ์๋ ํ๋ฌ๊ทธ์ธ์ ์ฐพ๊ณ ์์ด์. ์ด ํ๋ฌ๊ทธ์ธ์ผ๋ก ๊ฐ๋ฅํ๊ฐ์? ๋ง์ฝ ๋ถ๊ฐ๋ฅํ๋ค๋ฉด, ์์ ๊ทธ๋ฐ ๊ธฐ๋ฅ์ด ๊ฐ๋ฅํ๊ฐ์? ๊ฐ์ฌํฉ๋๋ค!
ํ์ฌ๋ ์ง์ํ์ง ์์ง๋ง, ํฌํฌ๋ฅผ ํด์ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ ์ ํ ๋ช ๋ น์ด๋ฅผ ์ถ๊ฐํ๋ ๋ฐ์๋ ์๋ฌด ๋ฌธ์ ๊ฐ ์์ต๋๋ค!
์ ๊ตฌํ๋๋ค๋ฉด PR ๋ณํฉ์ ๊ณ ๋ คํด ๋ณผ ์ ์์ต๋๋ค. ๋ค๋ง, ๋ฐฐ์ง ์ด๋ฆ์ด ์ญํ ์ด๋ฆ๊ณผ ๋์ผํ์ง ์๋ค๋ฉด ์ด๋ค ์์ ๋งคํ์ ์ ์งํด์ผ ํ๋ฏ๋ก ์ผ๋ฐ์ ์ธ ์ฉ๋๋ก๋ ๋ค์ ํน์ ์ ์ธ ๊ธฐ๋ฅ์ผ ์ ์์ต๋๋ค. ์ด์จ๋ ๋๋ถ๋ถ์ ํญ๋ชฉ์ ํํฐ๋งํด์ผ ํ ํ ๋ฐ, ๊ทธ๋ฌ๋ฉด ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์์๊ฒ๋ ๋ณต์กํด์ง ์ ์์ต๋๋ค. ํ๋ฌ๊ทธ์ธ์ ์ผ๋ฐ ์ฌ์ฉ์์๊ฒ๋ ์ ์ฉ๋ ์ ์๋ ์ ๋ง ๊น๋ํ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ์ฐพ๊ฒ ๋๋ค๋ฉด ์๋ ค์ฃผ์ธ์.
ํ์ง๋ง ํฌํฌํด์ ๋ง์๊ป ๊ฐ๋ฐํด ๋ณด์ธ์!
๊ฐ๋ฅ์ฑ์ด ์๋์ง ๊ผญ ํ์ธํด ๋ณด๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ํ๋ฌ๊ทธ์ธ์ ๋ ํฐ ๊ด์ฌ์ ๊ฐ๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ![]()
์์ ์ง๋ฌธ ํ๋๋ง ๋๋ฆด๊ฒ์: ์ญํ ์ ์
๋ฐ์ดํธํ ๋๋ง๋ค !discsync๋ฅผ ์๋์ผ๋ก ์คํํด์ผ ํ๋์, ์๋๋ฉด ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋์?
์์ฝ๊ฒ๋ ๊ทธ๋ ์ต๋๋ค. โx์๊ฐ ํ ๋ฐ๋ณตโ์ด๋ผ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ ๊ฐ์ ์ฌํญ์ผ ์ ์์ต๋๋ค(PR ํ์ํ๊ฑฐ๋ ๊ตฌํ์ ์ํด ์ ๋ฅผ ๊ณ ์ฉํ์ ๋ ๋ฉ๋๋ค). ํ์ง๋ง ์ด ํ ํฝ์์ ์ด์ ์ ์ธ๊ธํ๋ฏ์ด, ๋๊ตฐ๊ฐ๊ฐ ํด๋น API๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฌ๊ทธ์ธ์ ์ ์ํ๊ณ ์ ๊ธฐ์ ์ธ ์ฌ์ด๋ํฅ(Sidekiq) ์์ ์ ์์ฑํ๋ ๊ฒ์ด ๋ ๋์ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ด์ ์ฌ๋ฏธ์๋ ํด๊ฒฐ์ฑ ์ด์ง๋ง, ์ ๊ธฐ์ ์ธ ๋๊ธฐํ๋ฅผ ์ํ ๊ฐ์ฅ ์ข์ ์ํคํ ์ฒ๋ ์๋๋๋ค.
์, ๊ทธ๋๋ ๊ฐ์ฌํฉ๋๋ค. ๋ค, ์ด๋ฏธ ๊ฐ๋ฅํ ๋์์ ๋ํด ์๊ฐํด ๋ดค์ต๋๋คโฆ
Discourse ๊ทธ๋ฃน๊ณผ Discord ์ญํ ์ ๋๊ธฐํํ๊ณ ์ถ์๋๋ฐ, ์๋ฒฝํ ํด๊ฒฐ์ฑ
์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ง๊ธ์ ์นํ ์ ์ด์ฉํๆ็ง ๋ด์ ๋ง๋ค ์์ ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ์ํ ๊ทธ๋ฃน์ด ์ ๋ฐ์ดํธ๋๊ฑฐ๋(๋๋ ์ฌ์ฉ์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋๋ฉด) ์นํ ์ ํธ๋ฆฌ๊ฑฐํ์ฌ ์ปค์คํ ์๋ฃจ์ ์ผ๋ก ์ ๋ฌํ๊ณ , ์ด ์๋ฃจ์ ์ด Discord์์ ์ญํ ์ ๋ถ์ฌํ๋ ๋ฐฉ์์ ๋๋ค. ๊ธธ๋๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด Discord OAuth ์ ํ์ ๊ณ์ ์ฌ์ฉํ๋ฉฐ, ์ปค์คํ Data Explorer ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค์ด API๋ฅผ ํตํด ํด๋น ๊ธธ๋๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
๋๋ต ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ์ ๋๋ค:
- ์ฌ์ฉ์๊ฐ ๊ทธ๋ฃน์ด๋ ์ฌ์ฉ์ ์ด๋ฆ์ ๋ณ๊ฒฝ
- ์ปค์คํ ์๋ฃจ์ ์ผ๋ก ์นํ ํธ๋ฆฌ๊ฑฐ
- ์ปค์คํ ์๋ฃจ์ ์ด Data Explorer API์ ์ปค์คํ ์ฟผ๋ฆฌ๋ฅผ ํธ์ถํ์ฌ ํด๋น ์ฌ์ฉ์์ ๊ธธ๋๋ฅผ ๋ฐํ๋ฐ์
- ํด๋น ๊ธธ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Discord๋ฅผ ํธ์ถํ์ฌ ์ญํ ์ ์ ๋ฐ์ดํธ
์ผํ์ฑ ์ด๋ฒคํธ์ ์ค๋ฅ๋ก ์ธํด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์์ง ์๋๋ก, ์ ์ ํ ๋ฐฐ์น ์์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. ๋ ๊ฐ์ง ๋ฐฉ์ ๋ชจ๋ ์๋ฒฝํ ๊ฒ์ ๋๋ค.
์, ๊ทธ ๊ฒฝ๋ก๋ก๋ ์ง๋๊ฐ์ง ์์์ด์โฆ ![]()
๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํฌํฌํด์ ์ฐ๋ฆฌ ํ์ ๋ง๋ ์๋ก์ด ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค์์ต๋๋ค:
์ด ํ๋ฌ๊ทธ์ธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๊ทธ๋ฃน์ ๋์ค์ฝ๋ ์ญํ (Role)๊ณผ ์๋์ผ๋ก ๋๊ธฐํํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๊ทธ๋ฃน์ ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋๋ฉด ๋๊ธฐํ ์์ ์ด ์คํ๋์ด ๊ณต๊ฐ ๊ทธ๋ฃน์ ๋ฐ๋ผ ์ฌ์ฉ์์ ์ญํ ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ๋ํ, ๋์ค์ฝ๋ ๊ณ์ ์ด ์๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์๋์ผ๋ก ์ถ๊ฐ๋๋ "์ธ์ฆ ์ญํ (verified role)"์ ์ง์ ํ ์ ์๋ ์ค์ ๋ ์ถ๊ฐํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๊ฐ ๋๊ธฐํ๋ ๋ ๋ด์ด ๋ฌด์ํ ์์ ํ ์ญํ ๋ชฉ๋ก์ ์ง์ ํ ์๋ ์์ต๋๋ค(์: ์๋ฒ์ ํฌ๋ผ์์ ๋ค๋ฅธ ๊ด๋ฆฌ์/๋ชจ๋๋ ์ดํฐ๋ฅผ ์ค์ ํ๊ณ ์ถ์ ๋ ์ ์ฉํฉ๋๋ค).
์ด๋ฆ-๋๋ค์ ๋๊ธฐํ ๊ธฐ๋ฅ๋ ์ถ๊ฐํ์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์์ ์๋ฒ ๋๋ค์์ด ํฌ๋ผ ์ฌ์ฉ์๋ช ๊ณผ ๋์ผํ๋๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค.
๋ช ๊ฐ์ง ์ ๋ฆฌ ์์ ์ ๋ง์น ํ Customization > Plugin ํ ํฝ์ ์ด ์์ ์ ๋๋ค. ํน์ ๋ค๋ฅธ ๋ถ๋ค์๊ฒ๋ ์ ์ฉํ ์ ์์ ๊ฒ ๊ฐ์์์.
@barreeeiroo ๋์ ํฌํฌ์์ ์ ๋ง ํฅ๋ฏธ๋ก์ ๋ ์ ์ DiscourseEvents ํ
์ ํ์ฉํ๋ค๋ ์ ์ด์์ต๋๋ค.
๋ด์ด ๋ณ๋์ ์ค๋ ๋์์ ์คํ๋๋ฏ๋ก ์ด๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ํ์ง๋ง ๋์ด ๋ฐ๊ฒฌํ์ ๊ฒ์ฒ๋ผ, ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ณ ๋ด์ ์ํฅ์ ์ค ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์ผ๋ก ๋ฐ์ ์ํฌ ์ ์๋ ๋งค์ฐ ์ค์ํ ํต์ฐฐ์ ์๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ทธ๋์ ์ด์ ๋ฉ์ธ ์ ์ฅ์์์ ์ด ๊ธฐ๋ฒ์ ๋์ ํ๊ธฐ ์์ํ๋๋ฐ, ์ฒ์์๋ ์ ๊ฒ์๋ฌผ์ด๋ ํ ํฝ์ ๊ฐ์๋ฅผ ์ค์ ํ์ฌ Discord์ ๊ด๋ฆฌ์ ์ฑ๋์ ๊ณต์งํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค.
ํ์ฌ๋ก์๋ ์ด ๊ธฐ๋ฅ์ด ํฐ ์ค์ฉ์ฑ์ด ์์ ์ ์์ง๋ง, ๋ค๋ฅธ ์ฌ๋๋ค์ด ํ์ฉํ ์ ์๋๋ก ๊ฐ๋ ์ ์์ฐํ๋ ๋ฐ๋ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
OK, ์ด์ ํ๋ฌ๊ทธ์ธ์ ์กฐ๊ธ ๋ ๊ฐ๋ฐํด์ ์๋ฐฉํฅ ํต์ ์ ๋ํ POC(๊ฐ๋ ์ฆ๋ช )์ ์๋ํ๊ฒ ๋ง๋ค์์ต๋๋ค:
์๋ก์ด ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
-
ํ๋ฌ๊ทธ์ธ ์ค์ ์์ Discord์ ๊ณต์ง ์ฑ๋(Announcements Channel)์ ์ง์ ํ ์ ์์ต๋๋ค.
-
์ด์ ์ง์ ๋ Discord ๊ณต์ง ์ฑ๋์ ๋ฉ์์ง๋ฅผ ์ ๋ ฅํ๋ฉด, ํ๋ฌ๊ทธ์ธ ์ค์ ์ ์ง์ ๋ Discourse ํ ํฝ์ ํด๋น ๋ฉ์์ง๊ฐ ๊ฒ์๋ฉ๋๋ค.
-
Discourse์ ์นดํ ๊ณ ๋ฆฌ ๋ชฉ๋ก์ ์ค์ ํ์ฌ, ๋๊ตฐ๊ฐ ํด๋น ์นดํ ๊ณ ๋ฆฌ์ ๊ฒ์๋ฌผ์ ์ฌ๋ฆฌ๊ฑฐ๋ ์ ํ ํฝ์ ์ถ๊ฐํ ๋(๋ ์ค ํ๋ ๋๋ ๋ ๋ค) Discord์ ๊ณต์ง ์ฑ๋์ ๊ฒ์๋๋๋ก ํ ์ ์์ต๋๋ค.
๋ํ discordrb API๊ฐ ์ง์ํ๋ Discord ์ด๋ฒคํธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ ํ์ผ์ ์ถ๊ฐํ์ต๋๋ค. ๊ณต์ง(Announcements) ๋ก์ง์ด ์ฒซ ๋ฒ์งธ ์์์
๋๋ค(์ปค๋ฎค๋ํฐ์ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉํ๋ค๋ฉด ์๋ก์ด ์ด๋ฒคํธ๋ฅผ ๊ฐ๋ฐํ๊ณ PR์ ๋ณด๋ด ์ฃผ์ธ์).
๋ํ ํ์ฌ ํ๋ฌ๊ทธ์ธ์ ๋ ์ด์ ํ์ํ์ง ์์ผ๋ฏ๋ก(์์ฑ ์ฒ๋ฆฌ๊ฐ ํ์ ์์) ์ข
์์ฑ์ ์
๋ฐ์ดํธํ์ฌ libsodium-dev ์ค์น๋ฅผ ์ํ app.yml ๋ณ๊ฒฝ ์ฌํญ์ _์ ๊ฑฐ_ํ์ต๋๋ค. ์ด๋ ์ค์น๋ฅผ ํจ์ฌ ๋ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด ์ค ๊ฒ์
๋๋ค.
์ค์น ์๋ด๋ฅผ ๋ฐ๋ผ ์งํํ๊ณ , ์ฌ์์๊น์ง ๋ชจ๋ ๊ณผ์ ์ด ์์กฐ๋ก์ ์ต๋๋ค. ํ์ง๋ง ๋ด์ด ๋ฐฉ์ ์ฐธ์ฌํ์ง ์์ /logs๋ฅผ ํ์ธํด ๋ณด์์ต๋๋ค:
์ฌ๊ธฐ์ ๋งํ๋ ๊ฒ์ด discord_bot_token์ธ๊ฐ์? ๊ฐ์ ์
๋ ฅ๋์ด ์๊ณ , ๋ด์ฉ๋ ํ์ธํ์ต๋๋ค. ํน์ ์์ธ์ด ๋ ๋งํ ๋จ์๊ฐ ์์๊น์?
๋งํฌ, ์ฃ์กํฉ๋๋ค. ์ด๋ป๊ฒ ์ด๋ฐ ์ค์๋ฅผ ํ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค์.
๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ์ จ๋์?
์ ๋ฐ์ดํธ ํ ์ ๋ฒ์ ์ ์๋ํด ์ฃผ์๋ฉด, ์ดํ ์งํ์ ํจ๊ป ํ๊ฒ ์ต๋๋ค.
Discourse ํ์ ์ง์์ ๋ฐ์ ์ด๋ฃจ์ด์ง ์ฃผ์ ์
๋ฐ์ดํธ์
๋๋ค ![]()
-
Discord ์ฑํ ๋ด์์ ํด๋น ์ฑ๋์ ๋ฉ์์ง ํ์คํ ๋ฆฌ๋ฅผ Discourse ์ธ์คํด์ค๋ก ๋ณต์ฌํ ์ ์๋ ์๋ก์ด ๋ช ๋ น์ด
!disccopy <number-of-messages> <optional-target-category-name> <optional-target-topic-name>๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. ์ด ๋ช ๋ น์ด๋ ํ ๋ฒ์ ์์ฒ ๊ฐ์ ๋ฉ์์ง๋ฅผ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ํด๋น ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ์๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. -
์ฑ๋๋ณ ๋ฉ์์ง ์๋ ๋ณต์ฌ: ์ฑ๋ ์ด๋ฆ์ด Discourse์ ์นดํ ๊ณ ๋ฆฌ ์ด๋ฆ๊ณผ ์ผ์นํ๋ ๊ฒฝ์ฐ, ์๋ ์ค์ ์ด ํ์ฑํ๋์ด ์์ผ๋ฉด ๋ฉ์์ง๋ฅผ ์๋์ผ๋ก Discourse๋ก ๋ณต์ฌํฉ๋๋ค:

-
Discord์์ Discourse๋ก ๋ณต์ฌ๋ ๋ชจ๋ ๋ฉ์์ง์ ๋ํด, ํด๋น ์ฌ์ฉ์๊ฐ Discord ๋ก๊ทธ์ธ์ผ๋ก Discourse์ ๋ก๊ทธ์ธํ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ด๋ฆ์ด ์ด์ ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋ฉ๋๋ค (์ด๋ก์จ Discord ๋ด์ ์ฌ์ฉ์ ๊ณ์ ์ ๋งค์นญํ ์ ์์ต๋๋ค).
-
๋ง์ ๊ธฐ๋ฅ์ ๋ํ ๋ก์ปฌ๋ผ์ด์ ์ด์ (์ง์ญํ) ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ด ์์
์ ๋ช
์ธํ๊ณ ํ์ํด ์ฃผ์ @erlend_sh ๋๊ณผ Discourse ํ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!! ![]()
๋ด ๊ด๋ จ ์ถ๊ฐ ๊ธฐ๋ฅ๋ ๊ณง ์ฐพ์์ฌ ์์ ์
๋๋ค
![]()
๋ง์ฝ ์ฌ์ฉ์๊ฐ Discord OAuth๊ฐ ์๋ Discourse ์ธ์ฆ์ด๋ ๊ธฐํ ์ธ์ฆ ๋ฐฉ์์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด, ์ด ํ๋ฌ๊ทธ์ธ์ ๋จ์ํ ๊ทธ๋ค์ ๋ฌด์ํ๋ ๊ฑด๊ฐ์?
๊ทธ๋ค์ ๋ฌด์ํ๋ ๊ฒ์ด ์๋๋ผ, ๋ค๋ฅธ ์์คํ ์ ์ฌ์ฉ์์ ์ผ์น์ํฌ ์ ์์ ๋ฟ์ ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ๋ณต์ฌ๋ ๋ฉ์์ง๋ "system"์์ ์จ ๊ฒ์ผ๋ก ํ์๋ฉ๋๋ค.
์ค๋ ๋๊ฐ ์ง์๋๋์?
์์ง์ ์๋์ง๋ง, ํด๋ผ์ฐ์ค, ์ ์ฌ์ ์ผ๋ก ๊ฐ๋ฐ ์ค์ด์ผ. Ruby API๊ฐ ์ ๋ฐ์ดํธ๋๊ธธ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ด(๋ธ๋ก์ปค) ๊ทธ๋ฆฌ๊ณ ํ์์ด ๊ทธ ๊ธฐ๋ฅ์ ์ถ๊ฐํด ์ฃผ๊ธธ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ด.


