2009-06-30 33 views
4

對於我們公司,我希望有一個基於Python的IRC bot來檢查我們客戶的網站是否仍然運行。更具體地說:我想列出每個應該訪問的URL的數量,例如15分鐘。如果失敗,則應在5分鐘後再次檢查URL。如果檢索該URL仍然不會導致HTTP狀態代碼200,它應該在通道中回顯失敗的URL,以便我們可以對其進行調查。Python IRC客戶端:從頭開始編寫或爲現有框架編寫插件?

前段時間我寫了一個Supybot的插件,基本上以一種簡單而有效的方式做了上述的一些工作。如果我想將當前代碼的功能擴展到上面的「規範」,我需要做一些重大的重構;基本上這意味着從頭開始。

這引發了一個問題:我應該爲Supybot編寫一個更好的插件,是否符合新的要求,或者完全去做其他事情?我應該從頭開始(學習最多,自己實施relevant RFCs,花費比計劃更多的時間)還是有一個合適的框架來處理基本的IRC?

回答

4

我投票給Supybot一個全新的插件。瞭解更多;)

如果你不會那麼做,請嘗試python irclib。這是一個(仍然維護)IRC的Python庫。

Twisted也可能是確定的,但它是一點點,但太多...

3

對我來說,這聽起來像是你的應用程序想要談論IRC的情況,而我的直覺反應是使用Twisted,它具有IRC客戶端。這可能會也可能不適合你,但至少值得研究。

1

編寫一個簡單的IRC機器人並不難。我有一個模板,用於我的機器人,從SVN機器人到投票狀態機器人到機器人,它們檢查某些IP的連接,並根據結果更改頻道的主題。

我可以分享的來源,如果你願意,但沒有什麼能像寫自己的:)

+0

我在想,現在創造我自己的機器人可插式的IRC客戶端庫,可能是基於irclib。如果我遇到困難,我會盡快與您聯繫。 :) – 2009-07-01 11:56:16

2

我終於決定創建我的機器人使用Twisted。至於爲什麼:

  • Supybot已經有很多的功能。這可能是一件好事:只需創建一個簡單的插件,將其掛接並開始使用機器人。缺點是你可能不喜歡已經提供的一些功能。舉個例子:我不喜歡它響應所有事情(錯誤:「foo」不是一個有效的命令)。我確信它可以在某個地方被關閉,但是這些小事讓我困擾。

  • 另一方面Python IRC client library感覺有點過於光禿禿的骨頭。特別是因爲我需要線程來讓機器人檢查一些網站是否仍然存在,同時在頻道中保持響應。

  • 如果irclib覺得自己太低,從頭開始寫bot是肯定的。雖然我當然想要學習一些東西,但我也想專注於機器人的實際功能,而不會被「基本」東西困擾太多(例如,我不一定要編寫代碼來識別機器人,我喜歡只是有一些配置設置來存儲暱稱和密碼,併爲我處理。)

扭曲有一個很好的例子logging bot可以作爲一個起點。此外:在將來,編寫一個小型web服務器(顯然使用Twisted)來顯示機器人的輸出應該不會太困難。

提示:除了Twisted documentation,您還可以看看Doug Farrell撰寫的文章「A Twisted Logging Server」的October 2008 issue of Python Magazine

感謝那些回答問題的人。你讓我走在正確的軌道上。 :)