Discord Bot Construction Kit πŸ€–

Discourseμ—μ„œ μ½˜μ†”μ„ μ‚¬μš©ν•  λ•Œ 슀폰 없이 μ‚¬μš©ν•  수 μžˆλ‚˜μš”?

리맡을 μ‹œλ„ν•  λ•Œ 봇이 였λ₯˜λ₯Ό μ•Œλ €μ£ΌλŠ” κ±Έ λ³Ό 수 μžˆμ–΄μš” :smiling_face_with_tear:

κ·Έ 말씀이 μ •ν™•νžˆ 무슨 λœ»μΈμ§€ μ™„μ „νžˆ 확신은 μ—†μŠ΅λ‹ˆλ‹€. μƒν˜Έμž‘μš©μ€ λ””μŠ€μ½”λ“œμ—μ„œ μΌμ–΄λ‚˜λ„λ‘ λ˜μ–΄ μžˆκ±°λ“ μš”.

κ·Έλž˜λ„ μ–΄λ–€ 였λ₯˜κ°€ λ°œμƒν•˜κ³  μžˆλ‚˜μš”? λ‚˜μ€‘μ— ν•œλ²ˆ 확인해 λ³Όκ²Œμš”.

1개의 μ’‹μ•„μš”

저도 같은 문제λ₯Ό κ²ͺκ³  μžˆμŠ΅λ‹ˆλ‹€. discourse μ»¨ν…Œμ΄λ„ˆμ— μ§„μž…ν•œ ν›„ rails c ν”„λ‘¬ν”„νŠΈλ₯Ό μ‹œμž‘ν•˜λ©΄ λ΄‡μ˜ λ‹€λ₯Έ μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ©λ‹ˆλ‹€. κ·Έ κ²°κ³Ό Ping! 같은 λͺ…령에 λŒ€ν•΄ Pong!이 두 번 λ°˜ν™˜λ˜κ³ , discordrbλ₯Ό 톡해 μ‚¬μš©μž μ΄λ¦„μ΄λ‚˜ λ‹‰λ„€μž„μ„ λ³€κ²½ν•  수 μ—†λŠ” λ“±μ˜ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.

::DiscordBot::Bot.discord_bot.stop λͺ…령을 μ‹€ν–‰ν•˜λ©΄ rails cμ—μ„œ μƒμ„±λœ μΈμŠ€ν„΄μŠ€λŠ” μ’…λ£Œλ˜μ§€λ§Œ, Discourse μ‹œμž‘ μ‹œ μƒμ„±λœ 봇 μΈμŠ€ν„΄μŠ€μ—λŠ” 영ν–₯을 쀄 수 μ—†μŠ΅λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”

리포트 κ°μ‚¬ν•©λ‹ˆλ‹€. 이 문제λ₯Ό μ•Œλ €μ§„ 문제둜 κΈ°λ‘ν•˜κ² μŠ΅λ‹ˆλ‹€. (νŽΈμ§‘: μ™„λ£Œ - OP의 β€œμ•Œλ €μ§„ λ¬Έμ œβ€ μ„Ήμ…˜μ— μΆ”κ°€). λ‹€λ§Œ 이 λ¬Έμ œλŠ” μ²˜μŒλΆ€ν„° μ΄λ ‡κ²Œ λ™μž‘ν•΄ 온 κ²ƒμœΌλ‘œ 보이며, 보고가 맀우 μ΅œκ·Όμ—λ§Œ λͺ‡ μ°¨λ‘€ μ΄λ£¨μ–΄μ‘Œμ„ 뿐이라 일반적으둜 큰 문제둜 여겨지지 μ•ŠλŠ” κ²ƒμœΌλ‘œ μƒκ°λ©λ‹ˆλ‹€. μ΄λŠ” μ—£μ§€ μΌ€μ΄μŠ€μ΄κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

기술적으둜 λŠ₯μˆ™ν•΄ λ³΄μ΄μ‹œλ‹ˆ, ν•΄κ²°ν•˜μ‹€ 수 μžˆλ‹€λ©΄ PR을 ν™˜μ˜ν•©λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”

μ†”μ§νžˆ λ§ν•˜λ©΄, Discordrb 자체의 핡심 문제일 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμ„œμ—μ„œ λ‹€λ₯Έ μ‹€ν–‰ 쀑인 봇을 λͺ©λ‘μœΌλ‘œ ν‘œμ‹œν•˜κ±°λ‚˜ μ„ νƒν•˜λŠ” 방법을 찾을 수 μ—†κ±°λ“ μš”. μ•Œμ•„λ‚΄λ©΄ μ•Œλ €λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€. 이 봇에 κ΄€ν•΄μ„œλŠ” ν”„λ‘œμ νŠΈλ₯Ό ν¬ν¬ν•΄μ„œ 제 λŠ₯λ ₯껏 μ±„νŒ… λΈŒλ¦¬μ§€λ‘œ λ™μž‘ν•˜λ„λ‘ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.


1개의 μ’‹μ•„μš”

λ„€, μš°λ¦¬κ°€ ν•΄μ•Ό ν•  일은 μΈμŠ€ν„΄μŠ€κ°€ μ‹€ν–‰ 쀑인지 ν…ŒμŠ€νŠΈν•  수 μžˆμ–΄μ•Ό ν•˜κ³ , 이미 μ‘΄μž¬ν•˜λŠ” μΈμŠ€ν„΄μŠ€κ°€ 있으면 μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό μ‹€ν–‰ν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€.

μ΄λŠ” 레이슀 μ»¨λ””μ…˜(경쟁 μƒνƒœ)이 λ°œμƒν•  수 μžˆλŠ” μœ„ν—˜ν•œ μ˜μ—­μ΄μ§€λ§Œ, 정말 ν›Œλ₯­ν•œ κ°œμ„  사항이 될 κ²ƒμž…λ‹ˆλ‹€.

더 λ§Žμ€ μ‹œκ°„μ΄ μžˆμ—ˆλ‹€λ©΄ 더 일찍 μ‚΄νŽ΄λ³΄μ•˜μ„ 텐데, 직접 μ‹œλ„ν•΄ 보고 μ‹Άλ‹€λ©΄ 자유둭게 ν•΄ μ£Όμ„Έμš”.

레일즈 μ½˜μ†”μ΄ μ‹œμž‘λ  λ•Œ @@DiscordBot λ³€μˆ˜κ°€ λ‹€λ₯Έ μŠ€λ ˆλ“œμ˜ λ‹€λ₯Έ 봇에 λ°”μΈλ”©λ˜κ³ , μ›λž˜ 봇은 κ·ΈλŒ€λ‘œ 남아 μžˆλŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. 레일즈 μ½˜μ†”μ΄ μ‹œμž‘λ˜λŠ” 것을 κ°μ§€ν•˜μ—¬ 두 번째 λ΄‡μ˜ μ‹œμž‘μ„ λ°©μ§€ν•  수 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€λŠ” μ•Šμ§€λ§Œ, 이것이 레일즈λ₯Ό 톡해 봇에 쀑지 λͺ…령을 싀행해도 Discourse와 ν•¨κ»˜ μ‹œμž‘λœ λ΄‡μ—λŠ” 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ” 이유λ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”

μ•ˆλ…•ν•˜μ„Έμš”,

잘 λ΄€μŠ΅λ‹ˆλ‹€. 이걸 μ‚¬μš©ν•΄λ³΄κ³  싢은데, λ¨Όμ € 관련이 μžˆλŠ” 질문이 ν•˜λ‚˜ μžˆμŠ΅λ‹ˆλ‹€. 약간…

μ €λŠ” Discourse WP-Connectλ₯Ό μ‚¬μš©ν•˜μ—¬ WordPressλ₯Ό SSO의 "λ§ˆμŠ€ν„°"둜 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ (이것은 Discord λ‘œκ·ΈμΈλ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€). 이 ν”ŒλŸ¬κ·ΈμΈμ΄ Discord μ‚¬μš©μžμ™€ λ§€μΉ­λ˜λ„λ‘ SSO μš”μ²­μ— μ–΄λ–€ "μ‚¬μš©μž λ³€μˆ˜"λ₯Ό 전달해야 ν•˜λŠ”μ§€ μ•„μ‹œλ‚˜μš”? μ•„λ‹ˆλ©΄ μ΄λ©”μΌλ§Œ ν•„μš”ν•œ κ±΄κ°€μš”? (μ•„λ‹ˆλΌκ³  μƒκ°ν•˜μ§€λ§Œ)

이미 λͺ‡ κ°€μ§€ μΆ”κ°€ 값을 보내고 μžˆμ–΄μ„œ, μΆ”κ°€λ‘œ ν•˜λ‚˜λ§Œ 더 보내면 될 것 κ°™μ•„μ„œμš”?

OP(원글)에 λ”°λ₯΄λ©΄, 관계 섀정을 μœ„ν•΄ Discordλ₯Ό ν†΅ν•œ 인증(λ‚΄μž₯된 μ½”μ–΄ 둜직 μ‚¬μš©)이 ν•„μš”ν•©λ‹ˆλ‹€.

Wordpressμ—μ„œ ν•˜λ“œμ½”λ”©λœ SSOλ₯Ό μ‚¬μš©ν•˜λ©΄ 특히 μ‹ κ·œ μ‚¬μš©μžμ˜ 경우 이λ₯Ό λ°©ν•΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν•΄κ²° 방법을 μ°ΎμœΌμ…¨λ‹€λ©΄ PR λ˜λŠ” μΆ”κ°€ λ¬Έμ„œ μž‘μ„±μ„ ν™˜μ˜ν•©λ‹ˆλ‹€.

쒋은 μž‘μ—…μ΄λ„€μš”, μž˜ν–ˆμ–΄μš”. μœ μš©ν•œ 톡찰λ ₯μž…λ‹ˆλ‹€.

λ§žμ•„, λ‚΄κ°€ μ‹€μ œλ‘œ λ¬Όμ–΄λ³Έ 건 μ’€ μ•„λ‹ˆκΈ΄ ν•œλ°, 이제 Discourse에 Discord 둜그인이 기본으둜 λ‚΄μž₯λ˜μ–΄ μžˆμœΌλ‹ˆ 지원에 λ¬Έμ˜ν•˜λŠ” 게 κ°€μž₯ 쒋을 것 κ°™μ•„.

1개의 μ’‹μ•„μš”

λ„€, 이 ν”ŒλŸ¬κ·ΈμΈμ˜ λ²”μœ„λ₯Ό λ„˜μ–΄ μ›Œλ“œν”„λ ˆμŠ€ SSOλ₯Ό μ§€μ›ν•˜λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μ˜¬λ°”λ₯Έ λ°©ν–₯으둜 μ•ˆλ‚΄ν•΄ λ“œλ¦¬μžλ©΄, 이 ν…Œμ΄λΈ”μ— ν•­λͺ©μ΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€:

이것은 λ””μŠ€μ½”λ“œλ‘œ λ‘œκ·ΈμΈν•  λ•Œ μžλ™μœΌλ‘œ μ²˜λ¦¬λ©λ‹ˆλ‹€.

μ›Œλ“œν”„λ ˆμŠ€ SSOκ°€ λ””μŠ€μ½”λ“œλ₯Ό λŒ€μ‹ ν•΄ 이 ν•­λͺ©μ„ μ±„μšΈ 수 μžˆμ„μ§€λŠ” 의문이 λ“€μ§€λ§Œ, ν‹€λ Έλ‹€λŠ” 것을 μž…μ¦ν•΄ μ£Όμ‹ λ‹€λ©΄ λ°˜κ°‘κ² μŠ΅λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”

λ˜ν•œ λ””μŠ€μ½”λ“œ λŒ€μ‹  μ‚¬μš©μžκ°€ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” OAuth μ†ŒμŠ€κ°€ μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μš°νšŒν•˜κΈ° μœ„ν•΄ OPμ—μ„œ μ–ΈκΈ‰λœ λ””μŠ€μ½”λ“œ OAuthλ₯Ό κ·ΈλŒ€λ‘œ λ‘λ˜, display: none; CSS μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬ λ‚΄κ°€ μ‚¬μš©μžμ—κ²Œ μ‚¬μš©ν•˜κ²Œ ν•˜κ³  싢은 둜그인 μ†ŒμŠ€ ν•˜λ‚˜λ₯Ό μ œμ™Έν•œ λͺ¨λ“  λ‹€λ₯Έ 둜그인 μ†ŒμŠ€λ₯Ό μˆ¨κ²ΌμŠ΅λ‹ˆλ‹€. λ””μŠ€μ½”λ“œμ™€μ˜ OAuth κΈ°λŠ₯은 HTML에 β€œκΈ°μˆ μ μœΌλ‘œβ€ μ—¬μ „νžˆ 남아 μžˆμ§€λ§Œ, 일반적인 μ΅œμ’… μ‚¬μš©μžλŠ” 이λ₯Ό λ°œκ²¬ν•  κ°€λŠ₯성이 μ—†μŠ΅λ‹ˆλ‹€.

μ‚¬μš©μžλŠ” μžμ‹ μ˜ μ‚¬μš©μž μ„€μ •μ—μ„œ λ‹€λ₯Έ OAuth μ†ŒμŠ€κ°€ μƒμ„±ν•œ 계정에 λ””μŠ€μ½”λ“œλ₯Ό "μ—°κ²°"ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


image

μ’‹λ„€μš”, κ·Έκ±Έ 우회 λ°©λ²•μœΌλ‘œ μ‚¬μš©ν•  수 μžˆκ² λ„€μš”. ν•˜μ§€λ§Œ μ‹€μ œ μ½”λ“œ 해결책을 쑰사해볼 μˆ˜λ„ μžˆμ„ 것 κ°™μ•„μš”. 그러면 이 λ‚΄μš©μ΄ λ””μŠ€μ½”urse 섀정에 ν‘œμ‹œλ˜λ‚˜μš”? 이 주제λ₯Ό λ„ˆλ¬΄ 길게 λ§Œλ“€μ§€ μ•Šλ„λ‘ DM으둜 μ΄μ•ΌκΈ°ν•˜λŠ” 게 μ’‹μ„κΉŒμš”?

μ™œ Discord 채널을 Discourse의 주제(Topics)κ°€ μ•„λ‹ˆλΌ μΉ΄ν…Œκ³ λ¦¬(Categories)와 λ§€μΉ­ν•˜λ‚˜μš”? μ€‘λ³΅λœ μ΄λ¦„μ˜ μ£Όμ œκ°€ μžˆμ„ 수 있기 λ•Œλ¬ΈμΈκ°€μš”? 5개의 채널을 3개 μΉ΄ν…Œκ³ λ¦¬μ˜ κ΄€λ ¨ μ£Όμ œμ— μ—°κ²°ν•˜κ³  싢은데, 이것이 λΆˆκ°€λŠ₯ν•œ 것 κ°™λ„€μš”?

단일 μ£Όμ œμ— λŒ€ν•œ κ³΅μ§€λ§Œ κ³„μ†λ˜λ©΄ κ½€ μ§€λ£¨ν•΄μ§ˆ 것 κ°™μ•„μ„œ?

μ˜λ„μ μœΌλ‘œ 높은 μˆ˜μ€€μœΌλ‘œ μ„€κ³„λ˜μ–΄ μžˆμ–΄, νŠΉμ • μΉ΄ν…Œκ³ λ¦¬μ—μ„œ μƒˆ 주제λ₯Ό 곡지할 수 μžˆμŠ΅λ‹ˆλ‹€.

2개의 μ’‹μ•„μš”

λ―Έμ•ˆν•˜μ§€λ§Œ, 이건에 λŒ€ν•΄ λ§ν•œ κ±°μ˜ˆμš”
image

2개의 μ’‹μ•„μš”

그건 ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ΄μ—ˆμ–΄μš” :money_bag:

기얡이 λ§žλ‹€λ©΄, λͺ¨λ“  μ±„νŒ…μ€ μΉ΄ν…Œκ³ λ¦¬λ‹Ή ν•˜λ‚˜μ˜ Topic으둜 λͺ¨μ•„μ Έμ„œ λ„ˆλ¬΄ λ§Žμ€ Topic으둜 인해 ν˜Όλž€μ΄ μƒκΈ°λŠ” 것을 λ°©μ§€ν•©λ‹ˆλ‹€.

2개의 μ’‹μ•„μš”

μ•Œκ² μŠ΅λ‹ˆλ‹€

물둠이죠. ν•˜μ§€λ§Œ μΉ΄ν…Œκ³ λ¦¬λ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ—, 예λ₯Ό λ“€μ–΄ Discord의 #ford-support μ±„λ„μ—μ„œ λ™κΈ°ν™”λ˜λŠ” 제 β€œFord” μΉ΄ν…Œκ³ λ¦¬ μ•ˆμ— β€œ#ford-support” μŠ€λ ˆλ“œλ₯Ό λ§Œλ“€ 수 μ—†μŠ΅λ‹ˆλ‹€. RubyλŠ” μ œκ°€ μ„ ν˜Έν•˜λŠ” μ–Έμ–΄κ°€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ—, Rubyκ°€ μ•„λ‹Œ λ‹€λ₯Έ λ§Žμ€ 것듀과 달리 ν¬ν¬ν•˜μ—¬ μˆ˜μ •ν•˜λŠ” 것은 μ–΄λ €μšΈ 것 κ°™μŠ΅λ‹ˆλ‹€.

ν† ν”½/μŠ€λ ˆλ“œ 이름 기반으둜 λ™μž‘ν•˜λ„λ‘ λ§Œλ“œλŠ” 것이 μ‰¬μš΄ μΌμΌκΉŒμš”? μ•„λ‹ˆλ©΄ μ–΄λ–€ μ œν•œ 사항이 μžˆλŠ” κ±ΈκΉŒμš”?

참고둜 이미지(ν₯λ―Έλ‘­κ²Œλ„ GIFλŠ”)κ°€ ν† ν”½μœΌλ‘œ λ™κΈ°ν™”λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것이 μ•Œλ €μ§„ λ¬Έμ œμΈμ§€ λͺ¨λ₯΄κ² λ„€μš”.

μˆ˜μ •: μ•„, 잠깐. μƒμ„±λœ 후에 토픽을 이동할 수 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ ν™•μΈν–ˆμ„ λ•Œ Ruby Discord APIμ—λŠ” Threads κΈ°λŠ₯이 μ œκ³΅λ˜μ§€ μ•Šμ•˜μ§€λ§Œ, "개발 쀑"이라고 λ“€μ—ˆμŠ΅λ‹ˆλ‹€(그것도 2λ…„ μ „ μ΄μ•ΌκΈ°μž…λ‹ˆλ‹€!)

Threads 지원이 κ°€λŠ₯ν•΄μ§€λ©΄ ν•΄λ‹Ή κΈ°λŠ₯을 μΆ”κ°€ν•˜λŠ” PR을 ν™˜μ˜ν•©λ‹ˆλ‹€.

μš”μ¦˜ 개인 μž‘μ—… μ™Έμ—λŠ” 유료 ν”„λ‘œμ νŠΈμ—λ§Œ μ§‘μ€‘ν•˜κ³  μžˆμ–΄ ν”ŒλŸ¬κ·ΈμΈ κΈ°λŠ₯ κ°œλ°œμ— λ§Žμ€ μ‹œκ°„μ„ ν• μ• ν•˜κΈ°λŠ” μ–΄λ ΅μ§€λ§Œ, PR λ¦¬λ·°λŠ” 기꺼이 λ„μ™€λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”