繁体   English   中英

Python IRC客户端

[英]Python IRC Client

import socket, sys, string

if len(sys.argv) !=4 :
    print "Usage: ./supabot.py <host> <port> <channel>"
    sys.exit(1)

irc = sys.argv[1]
port = int(sys.argv[2])
chan = sys.argv[3]
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.connect((irc, port))
sck.send('NICK supaBOT\r\n')
sck.send('USER supaBOT supaBOT supaBOT :supaBOT Script\r\n')
sck.send('JOIN ' + " " + chan + '\r\n')
data = ''
while True:
      data = sck.recv(1024)
      if data.find('PING') != -1:
         sck.send('PONG ' + data.split() [1] + '\r\n')
         print data
      elif data.find('!info') != -1:
           sck.send('PRIVMSG ' + chan + ' :' + ' supaBOT v1 by sourD ' + '\r\n')
           print data
      elif data.find('!commands') != -1:
           nick = data.split('!')[ 0 ].replace(':',' ') 
           if nick == "s0urd":
              sck.send('PRIVMSG ' + chan + ' :' + ' no commands have been set ' + '\r\n')
           else:
                sck.send('PRIVMSG ' + chan + ' :' + ' youre not my master ' + '\r\n')
                print data
      elif data.find('PRIVMSG') != -1: 
           message = ':'.join(data.split (':')[2:]) 
           if message.lower().find('darkunderground') == -1: 
           nick = data.split('!')[ 0 ].replace(':',' ') 
           destination = ''.join (data.split(':')[:2]).split (' ')[-2] 
           function = message.split( )[0] 
           print nick + ' : ' + function
           arg = data.split( )   

print sck.recv(1024)

我在IRC中的昵称是s0urd,但是当我键入!commands时,我得到的“你不是我的主人”,但我的昵称是s0urd。 我可能不知道我在整个刻痕上做错了什么,但是谢谢您的任何帮助。

26行

nick = data.split('!')[ 0 ].replace(':',' ') 

这将用空格替换: ),因此结果字符串将是"s0urd " ,而不是"s0urd" 您可能是这样说的:

nick = data.split('!')[ 0 ].replace(':','')

请注意,作为替换字符串传递的''之间缺少空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM