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(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, avoid_bot=False) if knownuser: knownusers.append(knownuser) else: unknownusers.append(user) for user in self.bot.occupants.users: if KnownUser.get(user, self.bot, avoid_bot=False) 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 = [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_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_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) hllistmember = hllistmember.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 check_repost(self, sender, urls): send = [] if self.repost: for url in urls: if not any(i in url for i in self.repost_ignore): res = self.bot.session.query(RepostUrl).filter( RepostUrl.url == url).first() if res: send.append('OLD! ') first = KnownUser.get_antihl(res.jid, self.bot) first_date = 'le ' + res.date.strftime( '%x') + ' à ' + res.date.strftime('%X') first_date = first_date.decode("utf-8") if res.count == 1: send.append( u'Ce lien a déjà été posté %s par %s sur %s…' % (first_date, first, res.chan)) else: ret = u'Ce lien a déjà été posté %s fois depuis que %s l’a découvert, %s, sur %s…' send.append( ret % (res.count, first, first_date, res.chan)) res.count += 1 else: u = RepostUrl(url, self.bot.occupants.pseudo_to_jid(sender), self.bot.chatname) self.bot.session.add(u) self.bot.session.commit() return send
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_default(self, sender, message): tz = self.server_timezone ret = '%s (%s)' % (datetime.now(timezone(tz)).strftime( self.dateformat), tz) 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, cmd, sender, message): toall = KnownUser.get_all(self.bot, " ", [self.bot.name, sender]) replacement = {"__somebody__": message, "__sender__": sender, "_all_": toall} if message.lower() == sender.lower(): key = "toSender" elif message == '': key = "toNobody" elif message.lower() == self.bot.name.lower(): key = "toBot" else: key = "toSomebody" return multiword_replace(multiword_replace(random.choice(self.dico[cmd][key]), replacement), replacement)
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 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_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()
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 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, 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 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()
def check_repost(self, sender, urls): send = [] if self.repost: for url in urls: if not any(i in url for i in self.repost_ignore): res = self.bot.session.query(RepostUrl).filter(RepostUrl.url == url).first() if res: send.append('OLD! ') first = KnownUser.get_antihl(res.jid, self.bot) first_date = 'le ' + res.date.strftime('%x') + ' à ' + res.date.strftime('%X') first_date = first_date.decode("utf-8") if res.count == 1: send.append(u'Ce lien a déjà été posté %s par %s sur %s…' % (first_date, first, res.chan)) else: send.append(u'Ce lien a déjà été posté %s fois depuis que %s l’a découvert, %s, sur %s…' % (res.count, first, first_date, res.chan)) res.count += 1 else: u = RepostUrl(url, self.bot.occupants.pseudo_to_jid(sender), self.bot.chatname) self.bot.session.add(u) self.bot.session.commit() return send