self.channel = channel
self.owner = owner
self.quotatime = time.time()
+ #List of known !commands we respond to
+ self.known =['karma','trout','info','die','quiet','list','google','say','do','reload','flirt']
#Configurable stuff - how often do we add how many fish?
self.cur_fish=5
self.max_fish=5 #Maximum of 5 fish
f.close()
except IOError:
self.trouts = [ "hits %s with a wet trout.", "thwaps %s.", "questions %s's parentage.", "pokes its tounge out at %s.", "bites its thumb at %s."]
+ try:
+ f = open("flirts", "r")
+ self.flirts = [l.strip() for l in f.readlines() if l.find("%s") != -1]
+ f.close()
+ except IOError:
+ self.flirts = [ "falls madly in love with %s", "blows kisses at %s"]
## EVENT HANDLERS
conn.notice(nick, "My owner is %s; I have karma on %s items." %
(self.owner, len(self.karma.dict.keys())))
+ # list know commands
+ def listq(self, cmd, nick, conn, public):
+ conn.notice(nick, "%s" % string.join(self.known))
+ # flirt with someone
+ def flirtq(self, cmd, nick, conn, public):
+ self.fish_quota()
+ if self.DoS == 1:
+ conn.notice(nick, "Sorry, but %s made me take Holy Orders." %
+ self.Boring_Git)
+ return
+ if self.cur_fish <= 0:
+ conn.notice(nick, "My libido is over-used!")
+ else:
+ self.cur_fish -=1
+ try:
+ target = string.join(cmd.split()[1:])
+ me = self.connection.get_nickname()
+ trout_msg = random.choice(self.flirts)
+ # ...and touchy.
+ if me.lower() == target.lower():
+ target = nick
+ if public == 0:
+ if random.random() <= 0.1:
+ trout_msg+= ' (but %s is their secret admirer)' % nick
+ conn.action(self.channel, trout_msg % target)
+ except IndexError:
+ conn.notice(nick, "Who do you wish me to flirt with?")
+
# trout someone
def troutq(self, cmd, nick, conn, public):
self.fish_quota()
conn.notice(nick, "Sorry, but %s is being a spoilsport." %
self.Boring_Git)
return
- if self.cur_fish == 0:
+ if self.cur_fish <= 0:
conn.notice(nick, "Fish stocks exhausted.")
else:
self.cur_fish -=1
# ...and touchy.
if me.lower() == target.lower():
target = nick
- conn.action(self.channel, trout_msg % target)
if public == 0:
if random.random() <= 0.1:
- conn.action(self.channel, "notes %s is conducting a whispering campaign" % nick)
+ trout_msg+= ' (at the instigation of %s)' % nick
+ conn.action(self.channel, trout_msg % target)
except IndexError:
conn.notice(nick, "Who do you wish me to trout?")
def reloadq(self, cmd, nick, conn, public):
if irc_lower(nick) == irc_lower(self.owner):
tback = self.trouts
+ fback = self.flirts
try:
f = open("trouts", "r")
self.trouts = [l.strip() for l in f.readlines() if l.find("%s") != -1]
f.close()
+ f = open("flirts", "r")
+ self.flirts = [l.strip() for l in f.readlines() if l.find("%s") != -1]
conn.notice(nick, "I am re-armed!")
except IOError:
conn.notice(nick, "Trout re-arming failed!")
self.trouts = tback
+ self.flirts = fback
else:
conn.notice(nick, "This command can only be invoked by my owner.")
# Shut up trouting for a minute
if public == 0:
conn.notice(nick, str(gsearch))
else: # we haven't found anything.
- conn.privmsg(nick, str(gsearch))
+ conn.privmsg(self.channel, str(gsearch))
else:
if public == 0:
conn.notice(nick, "No pages found.")
else:
- conn.privmsg(nick, "No pages found.")
+ conn.privmsg(self.channel, "No pages found.")
except IOError: # if the connection times out. This blocks. :(
if public == 0:
conn,notice(nick, "The web's broken. Waah!")
else:
- conn.privmsg(nick, "The web's broken. Waah!")
+ conn.privmsg(self.channel, "The web's broken. Waah!")
# General query handler
def do_command(self, nick, cmd, public=0):
if cmd == "info":
self.infoq(cmd, nick, conn, public)
+ # Known commands
+ if cmd == "list":
+ self.listq(cmd, nick, conn, public)
# weaponry
if cmd.split()[0] == "trout":
self.troutq(cmd, nick, conn, public)
+ if cmd.split()[0] == "flirt":
+ self.flirtq(cmd, nick, conn, public)
if cmd == "reload":
self.reloadq(cmd, nick, conn, public)