In this tutorial, you’ll learn to use Python 3 for creating an IRC bot. IRC is an acronym for Internet Relay Chat which is a popular form of communication to send text messages over the network.
How to Use Python to Build an IRC Bot?

What is an IRC Bot?
A bot is a virtual assistant that emulates a real user to provide instant responses. IRC bot is a type of network client that could be a script or a program that can relay messages using the IRC protocol.
When any active user receives a text from the IRC bot, it appears to him as another real user. Many programming languages like Python and Java aid in developing IRC bots.
What can a Bot do?
The bots mimic a real user and communicate with other active clients. However, they can perform a variety of tasks:
- Archive chat messages
- Can parse Twitter feeds
- Crawl the web for a keyword
- Run any command if needed.
How to Implement IRC Bot in Python?
For this, we’ll need a Python program that creates a client socket to connect to the IRC server. The IRC server performs a simple verification and connects without much hassle.
The script uses the Python socket library to allow network communication. Check the below sample code.
import socket ircbot = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
The IRC protocol is just a layer above the IP protocol and works over the TCP/IP stack.
We’ll need our program to exchange the following set of commands.
** Authetication **** USER botname botname botname: text NICK botname NICKSERV IDENTIFY botnickpass botpass ** Join Channel **** JOIN
Bot Source Code
Find the Python code of the IRC bot in the below section.
Class File:
First, you need to create an IRC bot class. Copy the below code paste it into a file and save it as the irc_class.py
.
import socket import sys import time class IRC: irc = socket.socket() def __init__(self): # Define the socket self.irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) def send(self, channel, msg): # Transfer data self.irc.send(bytes("PRIVMSG " + channel + " " + msg + "\n", "UTF-8")) def connect(self, server, port, channel, botnick, botpass, botnickpass): # Connect to the server print("Connecting to: " + server) self.irc.connect((server, port)) # Perform user authentication self.irc.send(bytes("USER " + botnick + " " + botnick +" " + botnick + " :python\n", "UTF-8")) self.irc.send(bytes("NICK " + botnick + "\n", "UTF-8")) self.irc.send(bytes("NICKSERV IDENTIFY " + botnickpass + " " + botpass + "\n", "UTF-8")) time.sleep(5) # join the channel self.irc.send(bytes("JOIN " + channel + "\n", "UTF-8")) def get_response(self): time.sleep(1) # Get the response resp = self.irc.recv(2040).decode("UTF-8") if resp.find('PING') != -1: self.irc.send(bytes('PONG ' + resp.split().decode("UTF-8") [1] + '\r\n', "UTF-8")) return resp
After creating the network communication class, we’ll import it into our client and use its instance. We are designing a demo client so that you can understand it easily.
Our bot will send the "Hello!"
message while responding to a "Hello"
message on the channel.
Also Read: A simple IRC bot built in Java
Client Script:
Below is the Python IRC Bot program to start the client communication. Create a new file, copy the code, paste it, and save it as irc_bot.py
.
IRC server usually runs on ports like 6667 or 6697 (IRC with SSL). So, we’ll be using “6667” in our sample. Also, you will need to provide a valid IRC Server IP address or hostname to make this program run correctly.
from irc_class import * import os import random ## IRC Config server = "10.x.x.10" # Provide a valid server IP/Hostname port = 6697 channel = "#python" botnick = "techbeamers" botnickpass = "guido" botpass = "<%= @guido_password %>" irc = IRC() irc.connect(server, port, channel, botnick, botpass, botnickpass) while True: text = irc.get_response() print(text) if "PRIVMSG" in text and channel in text and "hello" in text: irc.send(channel, "Hello!")
Please note that you can run the above program using the following command:
python irc_bot.py
Hope, the above tutorial could help you build a more complex IRC bot with more features and usage.
If you wish to learn Python programming from scratch, then read this Python tutorial.