Chat bot joins server, receives chat, but can't send anything FIXED

import cfg
import socket
import re

def chat(sock, msg):
    """
    Send a chat message to the server.
    Keyword arguments:
    sock -- the socket over which to send the message
    msg  -- the message to be sent
    """
    sock.send("PRIVMSG #{} :{}".format(cfg.CHAN, msg))

def ban(sock, user):
    """
    Ban a user from the current channel.
    Keyword arguments:
    sock -- the socket over which to send the ban command
    user -- the user to be banned
    """
    chat(sock, ".ban {}".format(user))

def timeout(sock, user, secs=600):
    """
    Time out a user for a set period of time.
    Keyword arguments:
    sock -- the socket over which to send the timeout command
    user -- the user to be timed out
    secs -- the length of the timeout in seconds (default 600)
    """
    chat(sock, ".timeout {}".format(user, secs))

HOST = "irc.chat.twitch.tv"              # the Twitch IRC server
PORT = 6667                         # always use port 6667!
NICK = "wolfmanager"            # your Twitch username, lowercase
PASS = "oauth:xxxxxxxxxxxxxxxxxxxxxxxx" # your Twitch OAuth token
CHAN = "#arcticwolfhowls"                   # the channel you want to join

s = socket.socket()
s.connect((HOST, PORT))
s.send("PASS {}\r\n".format(PASS).encode("utf-8"))
s.send("NICK {}\r\n".format(NICK).encode("utf-8"))
s.send("JOIN {}\r\n".format(CHAN).encode("utf-8"))

CHAT_MSG = re.compile(r"^:\w+!\w+@\w+\.tmi\.twitch\.tv PRIVMSG #\w+ :")
chat(s,"ITS ME")

while True:
    response = s.recv(1024).decode("utf-8")
    if response == "PING :tmi.twitch.tv\r\n":
        s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
    else:
        username = re.search(r"\w+", response).group(0) # return the entire match
        message = CHAT_MSG.sub("", response)
        print(username + ": " + message)
        for pattern in cfg.PATT:
            if re.match(pattern, message):
                ban(s, username)
                break

So I’m confused on why it’s not sending a message at:

CHAT_MSG = re.compile(r"^:\w+!\w+@\w+\.tmi\.twitch\.tv PRIVMSG #\w+ :")
chat(s, "ITS ME")

I’m not very familiar with IRC and I’m still confused after reading up on it, so any help would be awesome.
EDIT: Fixed, this is the fixed code:

#bot.py
import cfg
import socket
import re

def chat(sock, msg):
    """
    Send a chat message to the server.
    Keyword arguments:
    sock -- the socket over which to send the message
    msg  -- the message to be sent
    """
    sock.send("PRIVMSG #{} :{}\r\n".format(cfg.CHAN, msg).encode("utf-8"))

def ban(sock, user):
    """
    Ban a user from the current channel.
    Keyword arguments:
    sock -- the socket over which to send the ban command
    user -- the user to be banned
    """
    chat(sock, ".ban {}".format(user))

def timeout(sock, user, secs=600):
    """
    Time out a user for a set period of time.
    Keyword arguments:
    sock -- the socket over which to send the timeout command
    user -- the user to be timed out
    secs -- the length of the timeout in seconds (default 600)
    """
    chat(sock, ".timeout {}".format(user, secs))

HOST = "irc.chat.twitch.tv"              # the Twitch IRC server
PORT = 6667                         # always use port 6667!
NICK = "wolfmanager"            # your Twitch username, lowercase
PASS = "oauth:xxxxxxxxxxxxxxxxxxxxxxxxxxxx" # your Twitch OAuth token
CHAN = "arcticwolfhowls"                   # the channel you want to join

s = socket.socket()
s.connect((HOST, PORT))
s.send("PASS {}\r\n".format(PASS).encode("utf-8"))
s.send("NICK {}\r\n".format(NICK).encode("utf-8"))
s.send("JOIN {}\r\n".format(CHAN).encode("utf-8"))

# Make sure you prefix the quotes with an 'r'!
CHAT_MSG = re.compile(r"^:\w+!\w+@\w+\.tmi\.twitch\.tv PRIVMSG #\w+ :")
chat(s,"Yo")

while True:
    response = s.recv(1024).decode("utf-8")
    if response == "PING :tmi.twitch.tv\r\n":
        s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
    else:
        username = re.search(r"\w+", response).group(0) # return the entire match
        message = CHAT_MSG.sub("", response)
        print(username + ": " + message)
        for pattern in cfg.PATT:
            if re.match(pattern, message):
                ban(s, username)
                break
#cfg.py
HOST = "irc.chat.twitch.tv"              # the Twitch IRC server
PORT = 6667                         # always use port 6667!
NICK = "wolfmanager"            # your Twitch username, lowercase
PASS = "oauth:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # your Twitch OAuth token
CHAN = "arcticwolfhowls"                   # the channel you want to join

RATE = (20/30) # messages per second

PATT = [    #not used yet
    r"swear",
    # ...
    r"some_pattern"
]

Figured out the issue, my cfg.py CHAN variable had an extra ‘#’ in it

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.