def handle_quotelast(bot, ievent): """ quote-last .. show last quote """ search = "" try: (nr, search) = ievent.args nr = int(nr) except ValueError: try: nr = ievent.args[0] nr = int(nr) except (IndexError, ValueError): nr = 1 try: search = ievent.args[0] except IndexError: search = "" if nr < 1 or nr > 4: ievent.reply('nr needs to be between 1 and 4') ; return search = re.sub('^d', '', search) if search: quotelist = quotes.searchlast(search, nr) else: quotelist = quotes.last(nr) if quotelist != None: for quote in quotelist: karma = plugs.get("tl.plugs.db.karma") if karma: qkarma = karma.karma.get('quote %s' % quote.id) else: qkarma = None if qkarma: ievent.reply('#%s (%s) %s' % (quote.id, qkarma, quote.txt)) else: ievent.reply('#%s %s' % (quote.id, quote.txt)) else: ievent.reply("can't fetch quote")
def handle_settodo(bot, ievent): """ todo-set <name> <txt> .. add a todo to another user's todo list""" try: who = ievent.args[0] what = ' '.join(ievent.args[1:]) except IndexError: ievent.missing('<nick> <what>') ;return if not what: ievent.missing('<nick> <what>') ; return userhost = getwho(bot, who) if not userhost: ievent.reply("can't find userhost for %s" % who) ; return whouser = getusers().getname(userhost) if not whouser: ievent.reply("can't find user for %s" % userhost) ; return name = getusers().getname(ievent.userhost) if not getusers().permitted(userhost, name, 'todo'): ievent.reply("%s doesn't permit todo sharing for %s " % (who, name)) ; return what = "%s: %s" % (ievent.nick, what) ttime = strtotime(what) nr = 0 if not ttime == None: ievent.reply('time detected ' + time.ctime(ttime)) what = striptime(what) karma = plugs.get("tl.plugs.db.karma2") if karma: alarmnr = alarms.add(bot.name, who, ttime, what) else: alarmnr = None nr = todo.add(whouser, what, ttime, alarmnr) else: nr = todo.add(whouser, what, None) ievent.reply('todo item %s added' % nr)
def handle_quote(bot, ievent): """ quote .. show random quote """ quote = quotes.random() qkarma = None if quote != None: karma = plugs.get("tl.plugs.db.karma") if karma: qkarma = karma.karma.get('quote %s' % quote.id) if qkarma: ievent.reply('#%s (%s) %s' % (quote.id, qkarma, quote.txt)) else: ievent.reply('#%s %s' % (quote.id, quote.txt)) else: ievent.reply('no quotes yet')
def handle_quotebad(bot, ievent): """ show top ten negative karma """ karma = plugs.get("tl.plugs.db.karma") if not karma: ievent.reply("karma plugin is not loaded") ; return result = karma.karma.quotebad(limit=10) if result: resultstr = "" for i in result: if i[1] < 0: resultstr += "%s: %s " % (i[0], i[1]) ievent.reply('quote badness: %s' % resultstr) else: ievent.reply('quote karma void')
def handle_quoteid(bot, ievent): """ quote-id <nr> .. show quote by id """ try: quotenr = int(ievent.args[0]) except IndexError: ievent.missing('<nr>') ; return except ValueError: ievent.reply('argument must be an integer') ; return qkarma = None quote = quotes.idquote(quotenr) if quote != None: karma = plugs.get("tl.plugs.db.karma") if karma: qkarma = karma.karma.get('quote %s' % quote.id) if qkarma: ievent.reply('#%s (%s) %s' % (quote.id, qkarma, quote.txt)) else: ievent.reply('#%s %s' % (quote.id, quote.txt)) else: ievent.reply("can't fetch quote with id %s" % quotenr)
def handle_chantodo2(bot, ievent): """ set todo item for channel""" what = ievent.rest ttime = strtotime(what) nr = 0 if not ttime == None: ievent.reply('time detected ' + time.ctime(ttime)) result = '(%s) ' % ievent.nick + striptime(what) alarms = plugs.get("tl.plugs.extra.alarm") if alarms : alarmnr = alarms.add(bot.name, ievent.channel, ttime, result) else: alarmnr = None nr = todo.add(ievent.channel, result, ttime, alarmnr) else: result = '(%s) ' % ievent.nick + what nr = todo.add(ievent.channel, result, None) ievent.reply('todo item %s added' % nr)
def handle_todo2(bot, ievent): """ set todo item """ if not ievent.rest: ievent.missing("<what>") ; return else: what = ievent.rest name = getusers().getname(ievent.userhost) ttime = strtotime(what) nr = 0 if not ttime == None: ievent.reply('time detected ' + time.ctime(ttime)) what = striptime(what) alarms = plugs.get("tl.plugs.extra.alarm") if alarms : alarmnr = alarms.alarms.add(bot.name, ievent.nick, ttime, what) else: alarmnr = None nr = todo.add(name, what, ttime, alarmnr) else: nr = todo.add(name, what, None) ievent.reply('todo item %s added' % nr)
def delete(self, name, indexnr): """ delete todo item """ global db if not db: logging.error("plugin isnt initialised yet") ; return 0 name = name.lower() try: warnsec = self.getwarnsec(indexnr)[0][0] if warnsec: alarmnr = 0 - warnsec if alarmnr > 0: alarms = plugs.get("tl.plugs.extra.alarm") if alarms: alarms.alarms.delete(alarmnr) except (IndexError, TypeError): pass result = db.execute(""" DELETE FROM todo WHERE name = %s AND indx = %s """, (name, indexnr)) return result
def handle_quotesearch(bot, ievent): """ quote-search <txt> .. search quotes """ if not ievent.rest: ievent.missing('<item>') ; return else: what = ievent.rest ; nrtimes = 3 result = quotes.search(what) if result: if ievent.queues: res = [] for quote in result: res.append('#%s %s' % (quote.id, quote.txt)) ievent.reply(res) return if nrtimes > len(result): nrtimes = len(result) randquotes = random.sample(result, nrtimes) for quote in randquotes: qkarma = None karma = plugs.get("tl.plugs.db.karma") if karma: qkarma = karma.karma.get('quote %s' % quote.id) if qkarma: ievent.reply('#%s (%s) %s' % (quote.id, qkarma, quote.txt)) else: ievent.reply("#%s %s" % (quote.id, quote.txt)) else: ievent.reply('no quotes found with %s' % what)