irc.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import socket
  2. class IRC:
  3. irc = socket.socket()
  4. def __init__(self):
  5. # Define the socket
  6. self.irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  7. def send(self, channel, msg):
  8. # Transfer data
  9. self.irc.send(bytes("PRIVMSG " + channel + " :" + msg + "\n", "UTF-8"))
  10. def connect(self, server, port, channels, botnick):
  11. # Connect to the server
  12. print("Connecting to: " + server)
  13. self.irc.connect((server, port))
  14. # Perform user authentication
  15. self.irc.send(bytes("CAP LS 302\n", "UTF-8"))
  16. self.irc.send(bytes("CAP REQ :no-history\n", "UTF-8"))
  17. self.irc.send(bytes("NICK " + botnick + "\n", "UTF-8"))
  18. self.irc.send(bytes("USER " + botnick + " 0 * :" + botnick + "\n", "UTF-8"))
  19. # join the channel
  20. for chan in channels:
  21. self.irc.send(bytes("JOIN " + chan + "\n", "UTF-8"))
  22. def get_response(self):
  23. # Get the response
  24. resp = self.irc.recv(2040).decode("UTF-8")
  25. msg = resp.split(':')[-1]
  26. if resp.find('PING') != -1:
  27. self.irc.send(bytes('PONG ' + msg + '\r\n', "UTF-8"))
  28. return resp.strip()