0
我期待着開始一個新的項目,讓我的腳溼與Python。我有一個IRC頻道,並希望有一個bot來維護一個日誌,並會在出現提示時吐出x行消息,但我不知道從哪裏開始寫這樣的東西。Python IRC日誌機器人
我看到this教程,我認爲這會讓我開始在機器人本身,但我不知道下一步的日誌功能。有人能指引我朝着正確的方向嗎?
我期待着開始一個新的項目,讓我的腳溼與Python。我有一個IRC頻道,並希望有一個bot來維護一個日誌,並會在出現提示時吐出x行消息,但我不知道從哪裏開始寫這樣的東西。Python IRC日誌機器人
我看到this教程,我認爲這會讓我開始在機器人本身,但我不知道下一步的日誌功能。有人能指引我朝着正確的方向嗎?
假設你已經編寫了一個調度函數,它爲每種消息調用一個適當的處理函數,以及一個發送函數來適當地格式化和發送消息。
處理程序可能是這個樣子:
MAX_LINES = 100
channel_logs = defaultdict(list)
def handle_public_message(user, channel, msg):
log = logs[channel]
log.append((user, msg))
if len(log) > MAX_LINES:
log.pop(0)
if msg.partition(' ')[0].lower() == 'dumplog':
dumplog(log, channel)
def handle_private_message(user, channel, msg):
if msg.partition(' ')[0].lower() == 'dumplog':
dumplog(logs[channel], channel, user)
def dumplog(log, channel, user=None):
for line in log:
send_msg(line, channel, user)
這一切就是這麼簡單。
如果你想變得很花哨,你可以編寫一個類來包裝「只保留最後100個附加的列表」的東西,使它成爲一個寫入緩存,存儲到磁盤,添加一個請求的方式20行而不是100等。
您也可以放置更多機器人特定的功能,例如以更標準化的方式處理命令。但是,真的,你最好爲此獲得一個bot框架。
事實上,我強烈建議您不要開始處理原始套接字和命令解析的第一個項目。你將花費更多的時間來調試繁瑣和煩人的問題,而不是處理你的實際代碼。其他選項包括:
要執行日誌記錄功能,我只需保留一段簡單的列表,說明最後100行以及其他任何我將推送到文件的行。 [Python文件I/O](http://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files) – sean 2013-03-13 05:35:21
我想找一個更高級別的教程。用原始套接字和明確的命令解析來實現IRC並不是世界上最困難的事情,但這不是我開始做的事情。要麼抓取像SupyBot這樣的骨架機器人或機器人框架,要麼使用像'irclib'或'twisted.IRCClient'這樣的庫。 – abarnert 2013-03-13 05:38:41