summaryrefslogtreecommitdiff
path: root/IRC.py
diff options
context:
space:
mode:
Diffstat (limited to 'IRC.py')
-rw-r--r--IRC.py53
1 files changed, 30 insertions, 23 deletions
diff --git a/IRC.py b/IRC.py
index 90ef1fa..9361982 100644
--- a/IRC.py
+++ b/IRC.py
@@ -4,26 +4,31 @@ import socket
import sys
import irctokens
import time
+
+
class IRCBadMessage(Exception):
pass
+
+
class IRCError(Exception):
pass
+
def printred(s):
t = f"\033[1;31m {s} \033[0m\n"
print(t)
+
def parsemsg(s):
- """Breaks a message from an IRC server into its prefix, command, and arguments.
- """
- prefix = ''
+ """Breaks a message from an IRC server into its prefix, command, and arguments."""
+ prefix = ""
trailing = []
if not s:
- raise IRCBadMessage("Empty line.")
- if s[0] == ':':
- prefix, s = s[1:].split(' ', 1)
- if s.find(' :') != -1:
- s, trailing = s.split(' :', 1)
+ raise IRCBadMessage("Empty line.")
+ if s[0] == ":":
+ prefix, s = s[1:].split(" ", 1)
+ if s.find(" :") != -1:
+ s, trailing = s.split(" :", 1)
args = s.split()
args.append(trailing)
else:
@@ -32,10 +37,10 @@ def parsemsg(s):
return prefix, command, args
-LINEEND = '\r\n'
+LINEEND = "\r\n"
-class IRCBot:
+class IRCBot:
irc = None
def __init__(self, sock, config=None):
@@ -45,10 +50,10 @@ class IRCBot:
def send_cmd(self, line):
"""Send an IRC Command, takes an IRC command string without the CRLF
- Returns encoded msg on success raises IRCError on failure """
+ Returns encoded msg on success raises IRCError on failure"""
if not self.connected:
raise IRCError("Not Connected")
- encmsg = bytes(line.format() + LINEEND, 'UTF-8' )
+ encmsg = bytes(line.format() + LINEEND, "UTF-8")
expected = len(encmsg)
if self.irc.send(encmsg) == expected:
return str(encmsg)
@@ -56,16 +61,15 @@ class IRCBot:
raise IRCError("Unexpected Send Length")
def on_welcome(self, *args, **kwargs):
- authmsg = irctokens.build("NICKSERV", ['IDENTIFY', self.config['nickpass']])
+ authmsg = irctokens.build("NICKSERV", ["IDENTIFY", self.config["nickpass"]])
self.send_cmd(authmsg)
- joinmsg = irctokens.build("JOIN", [self.config['channel']])
+ joinmsg = irctokens.build("JOIN", [self.config["channel"]])
self.send_cmd(joinmsg)
-
def send_privmsg(self, dst, msg):
- msg = irctokens.build("PRIVMSG",[dst, msg])
+ msg = irctokens.build("PRIVMSG", [dst, msg])
self.send_cmd(msg)
-
+
def send_quit(self, quitmsg):
msg = irctokens.build("QUIT", [quitmsg])
print(msg)
@@ -87,12 +91,16 @@ class IRCBot:
self.connected = True
# Perform user registration
- usermsg = irctokens.build("USER", [botnick, "0","*", "RabbitEars Bot"]).format()
+ password_msg = irctokens.build("PASS", [self.config["nickpass"]])
+ self.send_cmd(password_msg)
+ usermsg = irctokens.build(
+ "USER", [botnick, "0", "*", "Nyx Kermitsdotter"]
+ ).format()
print(usermsg)
self.send_cmd(usermsg)
nickmsg = irctokens.build("NICK", [botnick])
self.send_cmd(nickmsg)
-
+
def get_response(self):
# Get the response
resp = self.irc.recv(4096).decode("UTF-8")
@@ -103,9 +111,8 @@ class IRCBot:
self.on_welcome(nwmsg.params)
if nwmsg.command == "ERROR":
raise IRCError(str(nwmsg.params[0]))
- if nwmsg.command == 'PING':
- print('Sending pong')
- self.irc.send(
- bytes('PONG ' + LINEEND, "UTF-8"))
+ if nwmsg.command == "PING":
+ print("Sending pong")
+ self.irc.send(bytes("PONG " + LINEEND, "UTF-8"))
return msg