import irc.bot
import random
import time
import threading
import multiprocessing
global murders, lock
murders = []
def loop(bot):
while True:
time.sleep(60)
c = bot.connection
c.names(bot.channel)
def murder(channel, c, user, target):
global murders
murders.append(user)
c.privmsg(user, "I'm really glad we have this moment alone.")
time.sleep(5)
c.privmsg(user, '[ ' + target.capitalize() + ' has walked uncomfortably close to you. He is standing too close. ]')
time.sleep(5)
c.privmsg(user, '[ You feel the cold fingers of ' + target.capitalize() + ' wrap around your throat. ]')
time.sleep(5)
c.privmsg(user, '[ You you are being strangled by ' + target.capitalize() + '. ]')
time.sleep(10)
c.privmsg(user, '[ You can not breath. ]')
time.sleep(1)
c.privmsg(user, '[ ** GASP GASP!!! GARGLE!!! ** ]')
time.sleep(5)
c.privmsg(user, '[ You are dead. ]')
time.sleep(5)
c.notice(channel, user + " has been found dead. It looks like murder by strangulation.")
murders.remove(user)
class MurderBot(irc.bot.SingleServerIRCBot):
def __init__(self, channel, nickname, server, port=6667):
irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname)
self.channel = channel
def on_welcome(self, c, e):
print "Bot connected"
c.join(self.channel)
def on_privmsg(self, c, e):
print e.arguments[0]
global user, murders
if user in e.source:
if user not in murders:
t = threading.Thread(target=murder, args=(self.channel, c, user, e.target))
t.start()
elif "stop" in e.arguments[0].lower():
c.privmsg(user, "No. I'm not going to stop...until you are dead.")
elif "no" in e.arguments[0].lower():
c.privmsg(user, "Just let it happen.")
elif "ah" in e.arguments[0].lower() or "arg" in e.arguments[0].lower():
c.privmsg(user, "No one can hear you. We are alone.")
def on_pubmsg(self, c, e):
print e.target
print e.source
print e.arguments
def on_namreply(self, c, e):
global users, user
users = e.arguments[2].split()
user = users[random.randint(0,len(users) - 1)]
print "Murdering: " + user
c.privmsg(user, 'Hello! Are you there?')
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description='BashBot')
parser.add_argument('--host', default="localhost", help='host')
parser.add_argument('--port', type=int, default=6667, help='port')
parser.add_argument('channel', help='channel to join')
parser.add_argument('nickname', help='bot nickname')
args = parser.parse_args()
if not args.channel.startswith("#"):
args.channel = "#"+args.channel
bot = MurderBot(args.channel, args.nickname, args.host, args.port)
t = threading.Thread(target=loop, args=(bot,))
t.start()
bot.start()