Discord Bot Construction Kit ๐Ÿค–

์ข‹์•„์š”. ์ฐธ๊ณ ๋กœ ๋‹ค์‹œ ์ฝ”๋”ฉ์„ ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์œ ์šฉํ•œ ์ผ๋ฐ˜์ ์ธ ๊ฐœ์„  ์‚ฌํ•ญ์ด๋ผ๋ฉด ๊ธฐ๊บผ์ด ๊ฒ€ํ† ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :wink:

2๊ฐœ์˜ ์ข‹์•„์š”

์ž, ์ฒœ์ฒœํžˆ ์‹œ์ž‘ํ•ด ๋ณด์ž. ๋ฐฉ๊ธˆ ์ด ์ €์žฅ์†Œ์— ์ฒซ ๋ฒˆ์งธ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ–ˆ์–ด :smile:.

4๊ฐœ์˜ ์ข‹์•„์š”

๋ณ‘ํ•ฉ ์™„๋ฃŒ:slight_smile: ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

4๊ฐœ์˜ ์ข‹์•„์š”

์•ˆ๋…•ํ•˜์„ธ์š”! ๋””์Šค์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋””์Šค์ปค์Šค ํ”„๋กœํ•„์— ์žˆ๋Š” ๋ฐฐ์ง€์— ๋”ฐ๋ผ ์—ญํ• ์„ ๋ถ€์—ฌ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ฐพ๊ณ  ์žˆ์–ด์š”. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”? ๋งŒ์•ฝ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด, ์•„์˜ˆ ๊ทธ๋Ÿฐ ๊ธฐ๋Šฅ์ด ๊ฐ€๋Šฅํ•œ๊ฐ€์š”? ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

2๊ฐœ์˜ ์ข‹์•„์š”

ํ˜„์žฌ๋Š” ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ, ํฌํฌ๋ฅผ ํ•ด์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์ ์ ˆํ•œ ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ์—๋Š” ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค!

์ž˜ ๊ตฌํ˜„๋œ๋‹ค๋ฉด PR ๋ณ‘ํ•ฉ์„ ๊ณ ๋ คํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋ฐฐ์ง€ ์ด๋ฆ„์ด ์—ญํ•  ์ด๋ฆ„๊ณผ ๋™์ผํ•˜์ง€ ์•Š๋‹ค๋ฉด ์–ด๋–ค ์‹์˜ ๋งคํ•‘์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์ธ ์šฉ๋„๋กœ๋Š” ๋‹ค์†Œ ํŠน์ •์ ์ธ ๊ธฐ๋Šฅ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋Œ€๋ถ€๋ถ„์˜ ํ•ญ๋ชฉ์„ ํ•„ํ„ฐ๋งํ•ด์•ผ ํ•  ํ…๋ฐ, ๊ทธ๋Ÿฌ๋ฉด ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์—๊ฒŒ๋„ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ •๋ง ๊น”๋”ํ•œ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ฒŒ ๋œ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

ํ•˜์ง€๋งŒ ํฌํฌํ•ด์„œ ๋งˆ์Œ๊ป ๊ฐœ๋ฐœํ•ด ๋ณด์„ธ์š”!

2๊ฐœ์˜ ์ข‹์•„์š”

๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š”์ง€ ๊ผญ ํ™•์ธํ•ด ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋” ํฐ ๊ด€์‹ฌ์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :smiley:

1๊ฐœ์˜ ์ข‹์•„์š”

์ž‘์€ ์งˆ๋ฌธ ํ•˜๋‚˜๋งŒ ๋“œ๋ฆด๊ฒŒ์š”: ์—ญํ• ์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค !discsync๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋‚˜์š”, ์•„๋‹ˆ๋ฉด ์ž๋™์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋‚˜์š”?

2๊ฐœ์˜ ์ข‹์•„์š”

์•„์‰ฝ๊ฒŒ๋„ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. โ€˜x์‹œ๊ฐ„ ํ›„ ๋ฐ˜๋ณตโ€™์ด๋ผ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ๊ฐœ์„  ์‚ฌํ•ญ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(PR ํ™˜์˜ํ•˜๊ฑฐ๋‚˜ ๊ตฌํ˜„์„ ์œ„ํ•ด ์ €๋ฅผ ๊ณ ์šฉํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค). ํ•˜์ง€๋งŒ ์ด ํ† ํ”ฝ์—์„œ ์ด์ „์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ•ด๋‹น API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ์ž‘ํ•˜๊ณ  ์ •๊ธฐ์ ์ธ ์‚ฌ์ด๋“œํ‚ฅ(Sidekiq) ์ž‘์—…์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ด‡์€ ์žฌ๋ฏธ์žˆ๋Š” ํ•ด๊ฒฐ์ฑ…์ด์ง€๋งŒ, ์ •๊ธฐ์ ์ธ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ๊ฐ€์žฅ ์ข‹์€ ์•„ํ‚คํ…์ฒ˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

์•„, ๊ทธ๋ž˜๋„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋„ค, ์ด๋ฏธ ๊ฐ€๋Šฅํ•œ ๋Œ€์•ˆ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด ๋ดค์Šต๋‹ˆ๋‹คโ€ฆ
Discourse ๊ทธ๋ฃน๊ณผ Discord ์—ญํ• ์„ ๋™๊ธฐํ™”ํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ, ์™„๋ฒฝํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์›นํ›…์„ ์ด์šฉํ•œๆŸ็ง ๋ด‡์„ ๋งŒ๋“ค ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์†ํ•œ ๊ทธ๋ฃน์ด ์—…๋ฐ์ดํŠธ๋˜๊ฑฐ๋‚˜(๋˜๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜๋ฉด) ์›นํ›…์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์—ฌ ์ปค์Šคํ…€ ์†”๋ฃจ์…˜์œผ๋กœ ์ „๋‹ฌํ•˜๊ณ , ์ด ์†”๋ฃจ์…˜์ด Discord์—์„œ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ธธ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด Discord OAuth ์„ ํƒ์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ฉฐ, ์ปค์Šคํ…€ Data Explorer ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด API๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๊ธธ๋“œ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋žต ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค:

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๋ฃน์ด๋‚˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ๋ณ€๊ฒฝ
  2. ์ปค์Šคํ…€ ์†”๋ฃจ์…˜์œผ๋กœ ์›นํ›… ํŠธ๋ฆฌ๊ฑฐ
  3. ์ปค์Šคํ…€ ์†”๋ฃจ์…˜์ด Data Explorer API์˜ ์ปค์Šคํ…€ ์ฟผ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๊ธธ๋“œ๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์Œ
  4. ํ•ด๋‹น ๊ธธ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Discord๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์—ญํ• ์„ ์—…๋ฐ์ดํŠธ
2๊ฐœ์˜ ์ข‹์•„์š”

์ผํšŒ์„ฑ ์ด๋ฒคํŠธ์˜ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์žƒ์ง€ ์•Š๋„๋ก, ์ ์ ˆํ•œ ๋ฐฐ์น˜ ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹ ๋ชจ๋‘ ์™„๋ฒฝํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

์Œ, ๊ทธ ๊ฒฝ๋กœ๋กœ๋Š” ์ง€๋‚˜๊ฐ€์ง€ ์•Š์•˜์–ด์š”โ€ฆ :sweat_smile:

๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํฌํฌํ•ด์„œ ์šฐ๋ฆฌ ํŒ€์— ๋งž๋Š” ์ƒˆ๋กœ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค:

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๊ทธ๋ฃน์„ ๋””์Šค์ฝ”๋“œ ์—ญํ• (Role)๊ณผ ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๋ฃน์— ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋˜๋ฉด ๋™๊ธฐํ™” ์ž‘์—…์ด ์‹คํ–‰๋˜์–ด ๊ณต๊ฐœ ๊ทธ๋ฃน์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž์˜ ์—ญํ• ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋””์Šค์ฝ”๋“œ ๊ณ„์ •์ด ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” "์ธ์ฆ ์—ญํ• (verified role)"์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์„ค์ •๋„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋™๊ธฐํ™”๋  ๋•Œ ๋ด‡์ด ๋ฌด์‹œํ•  ์•ˆ์ „ํ•œ ์—ญํ•  ๋ชฉ๋ก์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์„œ๋ฒ„์™€ ํฌ๋Ÿผ์—์„œ ๋‹ค๋ฅธ ๊ด€๋ฆฌ์ž/๋ชจ๋”๋ ˆ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค).

์ด๋ฆ„-๋‹‰๋„ค์ž„ ๋™๊ธฐํ™” ๊ธฐ๋Šฅ๋„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์„œ๋ฒ„ ๋‹‰๋„ค์ž„์ด ํฌ๋Ÿผ ์‚ฌ์šฉ์ž๋ช…๊ณผ ๋™์ผํ•˜๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์ •๋ฆฌ ์ž‘์—…์„ ๋งˆ์นœ ํ›„ Customization > Plugin ํ† ํ”ฝ์„ ์—ด ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ํ˜น์‹œ ๋‹ค๋ฅธ ๋ถ„๋“ค์—๊ฒŒ๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ์š”.

7๊ฐœ์˜ ์ข‹์•„์š”

@barreeeiroo ๋‹˜์˜ ํฌํฌ์—์„œ ์ •๋ง ํฅ๋ฏธ๋กœ์› ๋˜ ์ ์€ DiscourseEvents ํ›…์„ ํ™œ์šฉํ–ˆ๋‹ค๋Š” ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋ด‡์ด ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ด๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹˜์ด ๋ฐœ๊ฒฌํ•˜์‹  ๊ฒƒ์ฒ˜๋Ÿผ, ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋ด‡์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ํ†ต์ฐฐ์„ ์•Œ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด์ œ ๋ฉ”์ธ ์ €์žฅ์†Œ์—์„œ ์ด ๊ธฐ๋ฒ•์„ ๋„์ž…ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ, ์ฒ˜์Œ์—๋Š” ์ƒˆ ๊ฒŒ์‹œ๋ฌผ์ด๋‚˜ ํ† ํ”ฝ์— ๊ฐ์‹œ๋ฅผ ์„ค์ •ํ•˜์—ฌ Discord์˜ ๊ด€๋ฆฌ์ž ์ฑ„๋„์— ๊ณต์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ๋กœ์„œ๋Š” ์ด ๊ธฐ๋Šฅ์ด ํฐ ์‹ค์šฉ์„ฑ์ด ์—†์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ๋…์„ ์‹œ์—ฐํ•˜๋Š” ๋ฐ๋Š” ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

5๊ฐœ์˜ ์ข‹์•„์š”

OK, ์ด์ œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์กฐ๊ธˆ ๋” ๊ฐœ๋ฐœํ•ด์„œ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์— ๋Œ€ํ•œ POC(๊ฐœ๋… ์ฆ๋ช…)์„ ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค:

์ƒˆ๋กœ์šด ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์—์„œ Discord์˜ ๊ณต์ง€ ์ฑ„๋„(Announcements Channel)์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด์ œ ์ง€์ •๋œ Discord ๊ณต์ง€ ์ฑ„๋„์— ๋ฉ”์‹œ์ง€๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์— ์ง€์ •๋œ Discourse ํ† ํ”ฝ์— ํ•ด๋‹น ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค.

  • Discourse์˜ ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก์„ ์„ค์ •ํ•˜์—ฌ, ๋ˆ„๊ตฐ๊ฐ€ ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์— ๊ฒŒ์‹œ๋ฌผ์„ ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜ ์ƒˆ ํ† ํ”ฝ์„ ์ถ”๊ฐ€ํ•  ๋•Œ(๋‘˜ ์ค‘ ํ•˜๋‚˜ ๋˜๋Š” ๋‘˜ ๋‹ค) Discord์˜ ๊ณต์ง€ ์ฑ„๋„์— ๊ฒŒ์‹œ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ discordrb API๊ฐ€ ์ง€์›ํ•˜๋Š” Discord ์ด๋ฒคํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณต์ง€(Announcements) ๋กœ์ง์ด ์ฒซ ๋ฒˆ์งธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค(์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ์šฉํ•˜๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  PR์„ ๋ณด๋‚ด ์ฃผ์„ธ์š”).

๋˜ํ•œ ํ˜„์žฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ(์Œ์„ฑ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š” ์—†์Œ) ์ข…์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ libsodium-dev ์„ค์น˜๋ฅผ ์œ„ํ•œ app.yml ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ _์ œ๊ฑฐ_ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์„ค์น˜๋ฅผ ํ›จ์”ฌ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

9๊ฐœ์˜ ์ข‹์•„์š”

์„ค์น˜ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ผ ์ง„ํ–‰ํ–ˆ๊ณ , ์žฌ์‹œ์ž‘๊นŒ์ง€ ๋ชจ๋“  ๊ณผ์ •์ด ์ˆœ์กฐ๋กœ์› ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ด‡์ด ๋ฐฉ์— ์ฐธ์—ฌํ•˜์ง€ ์•Š์•„ /logs๋ฅผ ํ™•์ธํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค:

์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ๊ฒƒ์ด discord_bot_token์ธ๊ฐ€์š”? ๊ฐ’์€ ์ž…๋ ฅ๋˜์–ด ์žˆ๊ณ , ๋‚ด์šฉ๋„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ ์›์ธ์ด ๋  ๋งŒํ•œ ๋‹จ์„œ๊ฐ€ ์žˆ์„๊นŒ์š”?

3๊ฐœ์˜ ์ข‹์•„์š”

๋งˆํฌ, ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ์‹ค์ˆ˜๋ฅผ ํ–ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”.

๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜์…จ๋‚˜์š”?

์—…๋ฐ์ดํŠธ ํ›„ ์ƒˆ ๋ฒ„์ „์„ ์‹œ๋„ํ•ด ์ฃผ์‹œ๋ฉด, ์ดํ›„ ์ง„ํ–‰์„ ํ•จ๊ป˜ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

Discourse ํŒ€์˜ ์ง€์›์„ ๋ฐ›์•„ ์ด๋ฃจ์–ด์ง„ ์ฃผ์š” ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค :tada:

FEATURES: new message auto-copy and history copy command by merefield ยท Pull Request #4 ยท
merefield/discourse-discord-bot (github.com)

  1. Discord ์ฑ„ํŒ… ๋‚ด์—์„œ ํ•ด๋‹น ์ฑ„๋„์˜ ๋ฉ”์‹œ์ง€ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ Discourse ์ธ์Šคํ„ด์Šค๋กœ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋ช…๋ น์–ด !disccopy <number-of-messages> <optional-target-category-name> <optional-target-topic-name>๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ํ•œ ๋ฒˆ์— ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•ด๋‹น ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ์—๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ์ฑ„๋„๋ณ„ ๋ฉ”์‹œ์ง€ ์ž๋™ ๋ณต์‚ฌ: ์ฑ„๋„ ์ด๋ฆ„์ด Discourse์˜ ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ, ์•„๋ž˜ ์„ค์ •์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์ž๋™์œผ๋กœ Discourse๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค:
    image

  3. Discord์—์„œ Discourse๋กœ ๋ณต์‚ฌ๋œ ๋ชจ๋“  ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด, ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ Discord ๋กœ๊ทธ์ธ์œผ๋กœ Discourse์— ๋กœ๊ทธ์ธํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ์ด์ œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค (์ด๋กœ์จ Discord ๋ด‡์€ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋งค์นญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

  4. ๋งŽ์€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋กœ์ปฌ๋ผ์ด์ œ์ด์…˜(์ง€์—ญํ™”) ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ๋ช…์„ธํ•˜๊ณ  ํ›„์›ํ•ด ์ฃผ์‹  @erlend_sh ๋‹˜๊ณผ Discourse ํŒ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!! :pray:

๋ด‡ ๊ด€๋ จ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๋„ ๊ณง ์ฐพ์•„์˜ฌ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค :wink: :robot:

5๊ฐœ์˜ ์ข‹์•„์š”

๋งŒ์•ฝ ์‚ฌ์šฉ์ž๊ฐ€ Discord OAuth๊ฐ€ ์•„๋‹Œ Discourse ์ธ์ฆ์ด๋‚˜ ๊ธฐํƒ€ ์ธ์ฆ ๋ฐฉ์‹์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๋ฉด, ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹จ์ˆœํžˆ ๊ทธ๋“ค์„ ๋ฌด์‹œํ•˜๋Š” ๊ฑด๊ฐ€์š”?

1๊ฐœ์˜ ์ข‹์•„์š”

๊ทธ๋“ค์„ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์˜ ์‚ฌ์šฉ์ž์™€ ์ผ์น˜์‹œํ‚ฌ ์ˆ˜ ์—†์„ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ๋ณต์‚ฌ๋œ ๋ฉ”์‹œ์ง€๋Š” "system"์—์„œ ์˜จ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

์Šค๋ ˆ๋“œ๊ฐ€ ์ง€์›๋˜๋‚˜์š”?

4๊ฐœ์˜ ์ข‹์•„์š”

์•„์ง์€ ์•„๋‹ˆ์ง€๋งŒ, ํด๋ผ์šฐ์Šค, ์ž ์žฌ์ ์œผ๋กœ ๊ฐœ๋ฐœ ์ค‘์ด์•ผ. Ruby API๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๊ธธ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์–ด(๋ธ”๋กœ์ปค) ๊ทธ๋ฆฌ๊ณ  ํ›„์›์ด ๊ทธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ๊ธธ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์–ด.

2๊ฐœ์˜ ์ข‹์•„์š”