Beispiel #1
0
 def __init__(self): 
     self.db = WhatsUio(UIO_CSVFILE)
Beispiel #2
0
class Plugin(object):

    def __init__(self): 
        self.db = WhatsUio(UIO_CSVFILE)

    @classmethod
    def number_to_reply(cls, number):
        if type(number) == int:
            location = number % 100 
            side = (number / 100) % 10 
            etg = (number / 1000)

            if location >= 40:
                if etg <= 2:
                    location = "under tårnet"
                else:
                    location = "i tårnet"
            else:
                location = "ikke i tårnet"
                
            return "{e} etg. {l}, på den siden som er {s}.".format(e = etg, s = "mot bekken" if side > 2 else "mot gamle ifi", l = location)
        else:
            return number

    def make_response(self, arg, channel, **kwargs):
        if arg in kwargs['nick_to_user']: arg = kwargs['nick_to_user'][arg]
        if arg == 'jeg':
            room = self.db.where_is_user(kwargs['from_nick'])
            if room:
                return [(0, channel, kwargs['from_nick'], "Du er på {r}".format(r = room))] 
            else:
                return [(0, channel, kwargs['from_nick'], "Du er ikke pålogget på ifi.")]
        if self.db.users.is_user(arg):
            room = self.db.where_is_user(arg)
            if room:
                return [(0, channel, kwargs['from_nick'], "{u} er på {r}".format(r = room, u = arg.encode('utf-8')))] 
            else:
                return [(0, channel, kwargs['from_nick'], "{u} er ikke pålogget på ifi.".format(u = arg.encode('utf-8')))]
        elif self.db.computers.is_computer(arg): 
            return [(0, channel, kwargs['from_nick'], "{m} er i {r}".format(m = arg.encode('utf-8'), r = self.db.computers.where_is_computer(arg)))] 
        elif self.db.rooms.is_room(arg):
            return [(0, channel, kwargs['from_nick'], "{r} ({n}) er i {b}".format(r = arg.encode('utf-8'), n = self.db.rooms.room_location(arg),
                                                                            b = Plugin.number_to_reply(self.db.rooms.room_location(arg))))]
        elif self.db.entities.is_entity(arg):
            return [(0, channel, kwargs['from_nick'], "{e} er i {b}".format(e = arg.encode('utf-8'), b = self.db.entities.locate_entity(arg)))]
        
    def cmd(self, cmd, args, channel, **kwargs):
        if cmd == 'hvorer' and args != None and kwargs['auth_nick'] != None:
            try:
                args = args.decode('utf-8')
                arg_list = args.split()
                return self.make_response(arg_list[0], channel, **kwargs)
            except Exception as e:
                print("I got an exception in WhatsUio, probably encoding error")
                print e

    def listen(self, line, channel, **kwargs):
        if kwargs['auth_nick'] != None:
            try:
                line = line.decode('utf-8')
                line = line.replace('?', '')
                line = line.replace('!', '')
                line = line.replace('.', '')
                line = line.replace(',', '')
                line = line.split()
                if "Hvor" in line or 'hvor' in line:
                    er = 0
                    hvor = 0
                    for i, word in enumerate(line):
                        if word == "hvor" or word == "Hvor":
                            hvor = i
                        elif word == "er":
                            er = i

                    arg = None
                    if (er - hvor) == 1 and (er + 1) < len(line):
                        arg = line[er + 1]
                    elif (hvor + 1) < len(line) and er != 0:
                        arg = line[hvor + 1]
                    # print("LINE: {l} :: ARG: {a} :: HVOR: {h} :: ER: {e}".format(l = line, a = arg.encode('utf-8'), h = hvor, e = er))
                    if arg:
                        return self.make_response(arg, channel, **kwargs)
        
            except Exception as e:
                print("got an error in WhatsUio, probably an encoding error")
                print(e)