要撰寫IRC 機器人其實不難,網路上到處都有範例,其實就是簡單的NP,字串來回處理而以。
- Connect To IRC SERVER
- Send User Infomation
- Join a channel
- Read data from irc channel and do response
- Send something to irc channel
- looping (4~5)
第一步:
我們使用TCP建立連線
1 | self.sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) |
HOST:”HOST”:”irc.freenode.org”,
PORT:6667
第二步:
發送機器人的資訊給IRC 頻道1
2
3
self.sock.send ( 'NICK '+self.config['NICK']+'\r\n' )
self.sock.send ( 'USER '+self.config['IDENT']+' '+self.config['HOST']+' bla :'+self.config['REALNAME']+'\r\n')
第三步:
加入某個頻道,做為該頻道的機器人
1 |
|
第四步+第五步:
1 | while True: |
接下來就是一個無窮的從channel讀取資訊然後處理後再送回
這邊要注意的是IRC會定期送一個PING的資訊過來,必須要回一個PONG回去,否則該機器人不久後就會被踢下線
得到的data格式大概是如這種
###:[email protected] PRIVMSG #hwchiu_test :hi
分別是使用者名稱、所在的機器位置、訊息類型、頻道(私人訊息的話就會是機器人本身)、以及說話內容
所以只要針對這些格式去處理,得到想要的資訊,就可以進行各種想要的功能了
這邊因為我有很多個功能module,所以每次收到訊息的時候,就把這些資料都送給所有的module
讓每個module自己去處理並且回應。