simple irc bot notebook

master
Michael Murtaugh 4 years ago
parent 43101d8063
commit cc9e390661

@ -0,0 +1,109 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# IRC"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import socket\n",
"import sys\n",
"\n",
"# Adapted from https://pythonspot.com/building-an-irc-bot/\n",
"\n",
"class IRC:\n",
"\n",
" irc = socket.socket()\n",
" \n",
" def __init__(self): \n",
" self.irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n",
"\n",
" def send(self, chan, msg):\n",
" self.irc.send(f\"PRIVMSG {chan} {msg}\\n\".encode())\n",
"\n",
" def connect(self, server, channel, botnick):\n",
" #defines the socket\n",
" print (\"connecting to:\"+server)\n",
" self.irc.connect((server, 6667)) #connects to the server\n",
" self.irc.send(f\"USER {botnick} {botnick} {botnick} :This is a fun bot!\\n\".encode()) #user authentication\n",
" self.irc.send(f\"NICK {botnick}\\n\".encode()) \n",
" self.irc.send(f\"JOIN {channel}\\n\".encode()) #join the chan\n",
"\n",
" def get_text(self):\n",
" text=self.irc.recv(2040).decode() #receive the text\n",
"\n",
" if text.find('PING') != -1: \n",
" self.irc.send('PONG {text.split()[1]}\\r\\n'.encode()) \n",
"\n",
" return text"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"https://webchat.freenode.net/##xpub"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import random\n",
"\n",
"channel = \"##xpub\"\n",
"server = \"irc.freenode.net\"\n",
"nickname = \"xpubot\"\n",
"\n",
"irc = IRC()\n",
"irc.connect(server, channel, nickname)\n",
"\n",
"\n",
"while 1:\n",
" text = irc.get_text()\n",
" print (text)\n",
" \n",
" if \"PRIVMSG\" in text and channel in text and \"hello\" in text:\n",
" irc.send(channel, \"Hello!\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Loading…
Cancel
Save