Example #1
0
 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
Example #2
0
 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
Example #3
0
 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
Example #4
0
    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()
Example #5
0
    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()
Example #6
0
 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
Example #7
0
 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
Example #8
0
 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()
Example #9
0
 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()
Example #10
0
 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
Example #11
0
 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)
Example #12
0
 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
Example #13
0
 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)
Example #14
0
    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))
Example #15
0
 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
Example #16
0
    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()
Example #17
0
 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)
Example #18
0
 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
Example #19
0
    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))
Example #20
0
 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
Example #21
0
    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()
Example #22
0
 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