2012-04-28 20 views
0

我想要封裝一個來自連接到IRC的python機器人的輸入。
我的python腳本是這樣的:http://pastebin.com/St4A1vLf修改一個字符串併發送一個PM /查詢到IRC用戶

如果有人說「!help」,這似乎在命令提示符(當我在命令提示符下運行該腳本)。

:[email protected] #fish :!help 

我想要做的就是把變量「data」和推崇它,所以它只是表明用戶的暱稱,即「bot」這樣盯着冒號「:」和字符串的其餘部分(從!~)也被刪除。

在此之後,我想讓它發送說「!help」給「no help settings」的私人信息/查詢的用戶。 (我將在稍後添加幫助命令。)

回答

0

首先:因爲命令丟失,您發佈的行沒有任何意義。你可能意思是

:[email protected] PRIVMSG #fish :!help 

但是爲什麼不使用現有的irc實現之一的python如扭曲詞?它們允許您輕鬆處理某些命令(例如PRIVMSG)。

如果你不想這樣做,你需要手動解析傳入的消息並提取你需要的任何信息。

下面是一個簡單的解析器。 line是從服務器收到的一行。

def parse_irc(line): 
    src = None 
    parts = line.split(' ') 
    if parts[0][0] == ':': 
     srcpart = parts.pop(0)[1:] 
     src = {'ident': None, 'host': None} 
     if '!' not in srcpart: 
      # e.g. a message from a server 
      src['nick'] = srcpart 
     else: 
      # [email protected] 
      tmp = srcpart.split('!', 1) 
      src['nick'] = tmp[0] 
      src['ident'], src['host'] = tmp[1].split('@', 1) 
    cmd = parts.pop(0) 
    args = [] 
    for i, arg in enumerate(parts): 
     if arg[0] == ':': 
      args.append(' '.join(parts[i:])[1:]) 
      break 
     args.append(arg) 
    return src, cmd, args 

這裏的解析線條看起來怎麼樣:

> python ircparser.py 'PING :12345' 
src: None 
cmd: 'PING' 
args: ['12345'] 
> python ircparser.py 'NOTICE AUTH :Welcome to this server' 
src: None 
cmd: 'NOTICE' 
args: ['AUTH', 'Welcome to this server'] 
> python ircparser.py ':[email protected] PRIVMSG #channel :hi' 
src: {'nick': 'me', 'host': 'host', 'ident': 'ident'} 
cmd: 'PRIVMSG' 
args: ['#channel', 'hi'] 
> python ircparser.py ':[email protected] PRIVMSG #channel :!help me' 
src: {'nick': 'me', 'host': 'host', 'ident': 'ident'} 
cmd: 'PRIVMSG' 
args: ['#channel', '!help me'] 
相關問題