2010-01-27 65 views
2

作爲一種學習練習,我正在編寫一個Python程序以連接到IRC網絡上的通道,因此我可以將該通道中的消息輸出到stdout。我使用asynchat並手動發送協議消息,而不是使用類似網絡中的扭曲或現有的bot代碼 - 再次,這是一種更有用的學習體驗。連接到IRC服務器時的「NOTICE」通知

我可以非常高興地發送JOIN和USER命令,並且可以根據需要PING/PONG離開。然而,打開插座端口6667時,我注意到,我會收到一些消息:

NOTICE AUTH :*** Looking up your hostname... 
NOTICE AUTH :*** Checking ident 
NOTICE AUTH :*** Found your hostname 
NOTICE AUTH :*** No identd (auth) response 

即使我尚未發送加入/ USER命令。

那麼,這是在任何地方指定通知的開放序列?據我所知,RFC在客戶端發送JOIN命令之前沒有特別指定要發生的任何事情,並且我不確定是否在發送JOIN命令之前等待收到這些通知,如果是這樣的話我如何檢測到我收到了所有通知?

+0

Hrm,我的意思是NICK,無論我輸入JOIN上面。很顯然,頻道加入會在遊戲後期發生。 – graememcc 2010-01-29 11:33:56

回答

3

沒有RFC要求做到這一點,這只是野外服務器常見的做法。注意他們是普通的通知命令(即只是消息)。只要將它們視爲發送給僞用戶「AUTH」的消息(因爲服務器還沒有更好的名稱)。您不需要等待它們,並且服務器不需要發送它們。

+1

它們實際上來自服務器(因爲沒有指定發送者前綴),並將*發送到*一個名爲「AUTH」的實體。服務器打電話給你,因爲你還沒有缺口。 – caf 2010-01-29 00:07:47

+0

你說得對。我會更新答案來反映這一點。 – Yuliy 2010-01-29 00:36:58