def answer(self, sender, message): if not message: return self.desc knownusers = [] unknownusers = [] hllists = self.bot.session.query(HlList).all() hllistnames = [hllist.name for hllist in hllists] ret = 'HL:' for user in message.split(':')[0].split(): if user in hllistnames: # highliht a whole list for hllist in hllists: if hllist.name == user: for knownuser in hllist.members: knownusers.append(knownuser.user) break else: # highlight one user knownuser = KnownUser.get(user, self.bot, authviapseudo=True) if knownuser: knownusers.append(knownuser) else: unknownusers.append(user) for user in self.bot.occupants.users: if KnownUser.get(user, self.bot) in knownusers: ret += ' %s' % user for user in unknownusers: ret += ' %s' % user if ':' in message: ret += ' => ' + message.split(':', 1)[1].strip() return ret
def answer(self, sender, message): if not message: return self.desc knownusers = [] unknownusers = [] hllists = self.bot.session.query(HlList).all() hllistnames = [] for hllist in hllists: hllistnames.append(hllist.name) ret = 'HL:' for user in message.split(':')[0].split(' '): if user in hllistnames: for hllist in hllists: if hllist.name == user: for knownuser in hllist.members: knownusers.append(knownuser.user) break else: knownuser = KnownUser.get(user, self.bot) if knownuser: knownusers.append(knownuser) else: unknownusers.append(user) for user in self.bot.occupants.users: if KnownUser.get(user, self.bot) in knownusers: ret += ' %s' % user for user in unknownusers: ret += ' %s' % user if ':' in message: ret += ' => ' + message.split(':', 1)[1].strip() return ret
def answer_rm_users(self, sender, plist, users): hllistname = plist hllist = self.bot.session.query(HlList).filter(HlList.name == hllistname).first() if not hllist: return _("%s: There is no such HighLight List" % sender) ret = '' users = users.split() if users: for user in users: knownuser = KnownUser.get(user, self.bot, authviapseudo=True) if not knownuser: ret += _('user "%s" is not even registered…\n' % user) continue hllistmember = self.bot.session.query(HlListMembers).filter(HlListMembers.hlid == hllist.hlid).filter(HlListMembers.kuid == knownuser.kuid).first() if not hllistmember: ret += _('user "%s" is not a member of this list\n' % knownuser) continue self.bot.session.delete(hllistmember) ret += _('user "%s" has been deleted from list "%s"\n' % (knownuser, hllistname)) else: for member in hllist.members: self.bot.session.delete(member) ret += _('user "%s" has been deleted from list "%s"\n' % (member.user, hllistname)) self.bot.session.delete(hllist) ret += _('list "%s" has been deleted' % hllistname) self.bot.session.commit() return ret.strip()
def answer_default(self, sender, message): ret = '%s (%s)' % (datetime.now(timezone(self.server_timezone)).strftime(self.dateformat), self.server_timezone) knownuser = KnownUser.get(sender, self.bot) if knownuser: kutz = self.bot.session.query(KUTZ).filter(KUTZ.kuid == knownuser.kuid).first() if kutz and kutz.timezone != self.server_timezone: ret += '\n%s (%s)' % (datetime.now(timezone(kutz.timezone)).strftime(self.dateformat), kutz.timezone) return ret
def answer(self, sender, message): user = KnownUser.get(sender, self.bot) if user: last_words = self.bot.session.query(LastWords).filter(LastWords.kuid == user.kuid).first() if last_words is None: last_words = LastWords(kuid=user.kuid) last_words.message = message self.bot.session.add(last_words) self.bot.session.commit()
def answer(self, sender, message): user = KnownUser.get(sender, self.bot) if user: last_words = self.bot.session.query(LastWords).filter( LastWords.kuid == user.kuid).first() if last_words is None: last_words = LastWords(kuid=user.kuid) last_words.message = message self.bot.session.add(last_words) self.bot.session.commit()
def answer(self, sender, before, after, guy): user = KnownUser.get(guy, self.bot) if not user: return _("I don't know %s, please try '!user register'." % guy) last_words = self.bot.session.query(LastWords).filter(LastWords.kuid == user.kuid).first() if last_words is None: return _("I don't know %s's last message" % user.get_pseudo()) if before not in last_words.message: return _("%s is not in %s's last message" % (before, user.get_pseudo())) ret = _("%s meant to say: %s") % (user.get_pseudo(), last_words.message.replace(before, after)) if sender != guy: ret = _("%s thinks " % sender) + ret return ret
def answer_user(self, sender, user): try: tz = timezone(user) return user + ': ' + datetime.now(tz).strftime(self.dateformat) except UnknownTimeZoneError: pass knownuser = KnownUser.get(user, self.bot, authviapseudo=True) if not knownuser: return _("I don't know that %s, he has to try '!user register'." % user) kutz = self.bot.session.query(Kutz).filter(Kutz.kuid == knownuser.kuid).first() if kutz is None: return _("I don't know %s's timezone, he has to '!date set <timezone>'" % user) setlocale(LC_ALL, self.locale) return kutz.timezone + ': ' + datetime.now(timezone(kutz.timezone)).strftime(self.dateformat)
def answer_set(self, sender, tz): try: timezone(tz) except UnknownTimeZoneError: return _("I don't know this timezone") knownuser = KnownUser.get(sender, self.bot) if not knownuser: return _("I don't know you, %s, please try '!user register'." % sender) kutz = self.bot.session.query(Kutz).filter(Kutz.kuid == knownuser.kuid).first() if kutz is None: kutz = Kutz(kuid=knownuser.kuid) kutz.timezone = tz self.bot.session.add(kutz) self.bot.session.commit() return _("Current timezone of %s set to %s" % (knownuser.get_pseudo(hl=True), tz))
def regroup_scores(self, classement): result = {} for blag in classement: known = KnownUser.get(blag.pseudo, self.bot) #if the jid in the database is a known user if known: # if we already have an entry for him with a different jid if known.get_pseudo() in result: result[known.get_pseudo()] = (result[known.get_pseudo()][0] + blag.score, max(blag.submission, result[known.get_pseudo()][1])) else: #else we create it result[known.get_pseudo()] = (blag.score, blag.submission) else: #We do not know him : we use his jid result[blag.pseudo] = (blag.score, blag.submission) result = sorted(result.iteritems(), key=operator.itemgetter(1), reverse=True) return result
def regroup_scores(self, classement): result = {} for blag in classement: known = KnownUser.get(blag.pseudo, self.bot) # if the jid in the database is a known user if known: # if we already have an entry for him with a different jid if known.get_pseudo() in result: result[known.get_pseudo()] = ( result[known.get_pseudo()][0] + blag.score, max(blag.submission, result[known.get_pseudo()][1])) else: # else we create it result[known.get_pseudo()] = (blag.score, blag.submission) else: # We do not know him : we use his jid result[blag.pseudo] = (blag.score, blag.submission) result = sorted(result.iteritems(), key=operator.itemgetter(1), reverse=True) return result
def answer_set(self, sender, hllist, users): ret = '' knownusers = [] unknownusers = [] users = users.split() for user in users: knownuser = KnownUser.get(user, self.bot, authviapseudo=True) if knownuser: knownusers.append(knownuser) else: unknownusers.append(user) if unknownusers: ret += _("\nunknown users: %s" % unknownusers) if not knownusers: ret += _("\n%s: You must provide at least one valid registered user" % sender) return ret.strip() hllistentry = self.bot.session.query(HlList).filter(HlList.name == hllist).first() if not hllistentry: hllistentry = HlList(hllist) self.bot.session.add(hllistentry) self.bot.session.commit() hllistentry = self.bot.session.query(HlList).filter(HlList.name == hllist).first() ret += _('\nlist "%s" added' % hllist) for user in knownusers: hllistmember = self.bot.session.query(HlListMembers).filter(HlListMembers.hlid == hllistentry.hlid) hllistmember = hllistmember.filter(HlListMembers.kuid == user.kuid).first() if hllistmember: ret += _('\n"%s" is already in list "%s"' % (user, hllistentry)) else: hllistmember = HlListMembers(hllistentry.hlid, user.kuid) self.bot.session.add(hllistmember) ret += _('\n"%s" added in list "%s"' % (user, hllistentry)) self.bot.session.commit() return ret.strip()