2016-10-02 1 views
0

J'essaie de faire un bot irc. Il se connecte mais n'envoie pas le message complet. Si je veux envoyer "bonjour monde" il envoie seulement "bonjour". Il envoie juste tout jusqu'au premier espace.sockets irc bot ne pas envoyer le message complet

Dans ce programme si vous tapez bonjour dans irc, le bot est censé envoyer hello world. Mais ça envoie seulement bonjour.

import socket 

channel = "#bots" 
server = "chat.freenode.org" 
nickname = "my_bot" 


class IRC: 
    irc = socket.socket() 

    def __init__(self): 
     self.irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

    def send(self, chan, msg): 
     self.irc.send("PRIVMSG " + chan + " " + msg + "\n") 

    def connect(self, server, channel, botnick): 
     # defines the socket 
     print("connecting to: " + server) 
     self.irc.connect((server, 6667)) # connects to the server 

     self.irc.send("NICK %s\n" % botnick) 
     self.irc.send("USER %s %s Ibot :%s\n" % (botnick, botnick, botnick)) 
     self.irc.send("JOIN %s\n" % channel) 
     self.irc.send("PRIVMSG %s :Hello Master\n" % channel) 

    def get_text(self): 
     text = self.irc.recv(2040) # receive the text 

     if text.find('PING') != -1: 
      self.irc.send('PONG ' + text.split()[1] + 'rn') 

     return text 

irc = IRC() 

irc.connect(server, channel, nickname) 

while True: 
    text = irc.get_text().strip() 

    if "hello" in text.lower(): 
     irc.send(channel, "hello world") 

    print text 

Répondre

2

Vous avez oublié un: avant le message. Cela devrait fonctionner:

def send(self, chan, msg): 
    self.irc.send("PRIVMSG " + chan + " :" + msg + "\n")