๐ก irc bot ์กฐ์ฌ ๋ฐ ๊ธฐ๋ณธ ํ ์ค๊ณ ๊ตฌํํ๊ธฐ
Yudongwoo opened this issue ยท 4 comments
Yudongwoo commented
๐ How
-
irc bot ์กฐ์ฌํ๊ธฐ
- irc bot์ ์ ์
- irc bot์ ํน์ง, ๊ธฐ๋ฅ
- irc bot ์ข ๋ฅ
-
irc bot ์ค๊ณํ๊ธฐ
- ์ ์กฐ์ฌํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ค๊ณํ ์์
- bot์ ๊ธฐ๋ณธ ๋ผ๋๋ง ์ค๊ณํ ์์
- bot์ ๊ธฐ๋ฅ๋ค ์ค ํ์์ ์ธ ๊ฒ๋ง ์ถ๋ ค์ ์ค๊ณ
โ To-dos
- irc bot ์กฐ์ฌํ๊ธฐ
- irc bot ์ ์
- irc bot ํน์ง
- irc bot์ ์ฌ๋ฌ ๊ธฐ๋ฅ
- irc bot์ ์ข ๋ฅ
- irc bot ์ค๊ณํ๊ธฐ
- irc bot ๊ตฌํํ๊ธฐ
๐ ETC
Yudongwoo commented
irc bot ์กฐ์ฌ
-
irc bot์ ์ ์
- ํด๋ผ์ด์ธํธ๋ก irc์ ์ฐ๊ฒฐํ์ฌ ๋ค๋ฅธ irc ์ฌ์ฉ์์๊ฒ
๋ค๋ฅธ ์ฌ์ฉ์๋ก ๋ํ๋๋ ์คํฌ๋ฆฝํธ ๋๋ ๋ ๋ฆฝ ํ๋ก๊ทธ๋จ์ ์งํฉ - IRC ๋ด์ ์ธ๊ฐ ์ฌ์ฉ์์๊ฒ IRC์ ๋ํ ๋ํํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ๋์
์๋ํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค๋ ์ ์์ ์ผ๋ฐ ํด๋ผ์ด์ธํธ์ ๋ค๋ฆ
- ํด๋ผ์ด์ธํธ๋ก irc์ ์ฐ๊ฒฐํ์ฌ ๋ค๋ฅธ irc ์ฌ์ฉ์์๊ฒ
-
irc bot์ ํน์ง
- ์ฑ๋ ๋ฑ๋ก ์๋น์ค๊ฐ ์๋ EFnet ๋ฐ IRCnet๊ณผ ๊ฐ์ IRC ๋คํธ์ํฌ์
์ฑ๋์ ๋ฑ๋กํ๊ธฐ ์ ์ ์ถฉ์กฑ๋์ด์ผ ํ๋ ์กฐ๊ฑด(์ต์ ์ฌ์ฉ์ ์ ๋ฑ)์ด
ํ์ํ Undernet ๋๋ QuakeNet๊ณผ ๊ฐ์ ๋คํธ์ํฌ์์ ํนํ ์ ์ฉํจ - ๋ด์ด ์ด์ ๊ฐ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
- ์ผ๋ฐ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์์ ํ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ก์ธ์ค ๊ถํ์ด ํ์ํ ์ ์์
- irc์ ์ผ๋ถ ๋ฒ์ ์๋ ์ด๋ฌํ ์ถ๊ฐ ๊ถํ์ ๊ฐ์ง ํด๋ผ์ด์ธํธ๋ฅผ ํ์ฉํ๋ "์๋น์ค" ํ๋กํ ์ฝ์ด ์์
- ์ด๋ฌํ ์๋ฒ ์น์ธ ๋ด์ irc service๋ผ๊ณ ํจ
- ์ผ๋ถ irc ๋คํธ์ํฌ๋ ๋ด ์ฌ์ฉ์ ๊ธ์งํจ
- ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ๊ฐ ๋๋ค์์ด ๋ชจ๋ ์๋ฒ์์ ๋๊ธฐํ๋ ์ํ๋ก ์ ์ง๋๋
๋คํธ์ํฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ์ํค๊ธฐ ๋๋ฌธ - ๋๊ท๋ชจ ๋คํธ์ํฌ์์ ๋ด์ ํ์ฉํ๋ฉด ์๊ธ์ ์กฐ๋ฌํด์ผ ํ๋
์๋นํ ์์ ๋คํธ์ํฌ ํธ๋ํฝ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ netsplit์ด ๋ฐ์ํ ์๋ ์์
- ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ๊ฐ ๋๋ค์์ด ๋ชจ๋ ์๋ฒ์์ ๋๊ธฐํ๋ ์ํ๋ก ์ ์ง๋๋
- ์ฑ๋ ๋ฑ๋ก ์๋น์ค๊ฐ ์๋ EFnet ๋ฐ IRCnet๊ณผ ๊ฐ์ IRC ๋คํธ์ํฌ์
-
irc bot์ ์ฌ๋ฌ ๊ธฐ๋ฅ
- ์ฑ๋ ๊ถํ ๊ด๋ฆฌ
- ์ฑ๋์ ๊ฒ์๋ ๋ด์ฉ ๋ก๊น
- ์์ฒญ ์ ์ ๋ณด ์ ๊ณต
- ์ค๋์ ๋ ์จ
- ํ์ฌ ์๊ฐ
- ์์ ๊ณ์ฐ
- ๊ตฌ๊ธ๋ง ๊ฒฐ๊ณผ ํ์ ๋ฑ
- ์ฑ๋์ ์์ ํฌ์คํฐ์ ๊ฐ์ฅ ์ค๋ ์ด์์๋ lurkers๋ฅผ ์ถ์ ํ๋ ํต๊ณ ์์ฑ
- ํด์ฆ, Uno ๋ฐ ๊ธฐํ ๊ฒ์ ํธ์คํ
- ํ์ผ ๋ฐฐํฌ
-
irc bot ํ๋ก๊ทธ๋จ ์ข ๋ฅ
- eggdrop, sopel, irccd, cardinal ๋ฑ
-
์ฐธ๊ณ
Yudongwoo commented
๊ตฌํ ์ฌํญ
- Bot ํด๋์ค
- bot๋ ํด๋ผ์ด์ธํธ์ ํ ์ข
๋ฅ์ด๋ฏ๋ก
client ํด๋์ค๋ฅผ ์์๋ฐ๋ Bot ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ฒ๋ฆฌ - client ํด๋์ค ๋ฉค๋ฒ ์ค ํ์ํ ๊ฒ๋ค์ protected
- bot๋ ํด๋ผ์ด์ธํธ์ ํ ์ข
๋ฅ์ด๋ฏ๋ก
- ์ผ๋ฐ ํด๋ผ์ด์ธํธ์ฒ๋ผ ์์ผ์ ์ ์ํ๋ ์ ์ฐจ๋ฅผ ๊ฑฐ์น์ง ์๊ณ
irc ์๋ฒ ํ๋ก๊ทธ๋จ ๋ด์์ ๋์๊ฐ๊ฒ ๋ง๋ค ์์ - bot ๋ช
๋ น์ด ์ญ์ map์๋ค string๊ณผ ๋ฌถ์ด ์ ์ฅ.
- bot ๋ช
๋ น์ด(์์ ์ถ๊ฐ)
- help
- bot ์ฌ์ฉ๋ฒ ์๊ฐ
- bot์ด ์ํํ ์ ์๋ ๋ช ๋ น์ด ๋ฆฌ์คํธ
- time
- ํ์ฌ ์๊ฐ ์ถ๋ ฅ
- date
- ํ์ฌ ๋ ์ง ์ถ๋ ฅ
- coin
- ๋์ ๋์ง๊ธฐ
- help
- bot ๋ช
๋ น์ด(์์ ์ถ๊ฐ)
์ค๊ณ
- server.run while๋ฌธ ๋ค์ด๊ฐ๊ธฐ ์ bot ๊ฐ์ฒด ์์ฑ
- ์ฌ๊ธฐ์ ๋ฐ๋ก nickname์ ์ง์
- rpl_welcome ๋ฉ์์ง ๋ณด๋ผ ๋ bot ์๋ฆผ ๋ฉ์์ง๋ ๋ณด๋.
- server.run kqueue ์ด๋ฒคํธ ์ฒ๋ฆฌ for๋ฌธ ๋ฐ์์ bot ๋ฉ์์ง ์ฒ๋ฆฌ
- bot์ m_send_buffer๋ฅผ \r\n ๊ธฐ์ค์ผ๋ก ํ ์ค์ฉ ์ฝ์ด๋ค์ฌ ์ฒ๋ฆฌ
- server ํด๋์ค์ m_handle_message ํจ์๋ก ์ฒ๋ฆฌ
- ํด๋น ๋ด์ m_send_buffer๋ฅผ \r\n ๊ธฐ์ค์ผ๋ก ์ฝ์ด
get_commands()์๋ค Message ๊ฐ์ฒด๋ฅผ pushํด์ ๋ฃ์ด์ค.
- ํด๋น ๋ด์ m_send_buffer๋ฅผ \r\n ๊ธฐ์ค์ผ๋ก ์ฝ์ด
- message ํด๋์ค์ parse_message ํจ์๋ฅผ ํตํด ํ์ฑ
- prefix, command, parameter
- parameter๋ก ๋ค์ด์จ ๋ช
๋ น์ด์ ๋ง๋ ํจ์ ํธ์ถ
- bot ๋ช ๋ น์ด ๋ฌธ์์ด๊ณผ ํด๋น ๋ช ๋ น์ด ์ฒ๋ฆฌ ํจ์๋ก ๋ฌถ์ธ map ์ฌ์ฉ
- ๊ฐ ๋ช
๋ น์ด ํจ์ ๊ธฐ๋ฅ ๊ตฌํ
- ํด๋ผ์ด์ธํธ์ ๋ณด๋ผ ๋ฉ์์ง๊ฐ ์๋ค๋ฉด push_message๋ก ๋ณด๋.
- help, date, time, coin
- server ํด๋์ค์ m_handle_message ํจ์๋ก ์ฒ๋ฆฌ
- bot์ m_send_buffer๋ฅผ \r\n ๊ธฐ์ค์ผ๋ก ํ ์ค์ฉ ์ฝ์ด๋ค์ฌ ์ฒ๋ฆฌ
Yudongwoo commented
development ๋ธ๋์น์์ ํด๋น ์ด์(#204) ๋ธ๋์น ์์ฑ
๋ธ๋์น ์ด๋ฆ : 204/dyu/enhancement/Implement_bot_frame
atimangel commented
https://github.com/ergochat/ergo/blob/2cace0b5a24e7c222374f2cf7412e50460e103b8/docs/MANUAL.md
ergo ์๋ฒ์์ ๊ด๋ฆฌํ๋ ์ ์ ๋ชจ๋ ํ๋๊ทธ ์ค์ B๊ฐ ์๋๋ฐ ์ด๊ฑธ๋ก ๋ด์ธ์ง ์๋์ง ๊ตฌ๋ถํ๋ ๊ฒ ๊ฐ์ต๋๋ค.