예제 #1
0
class Base():
    api = ''
    config = ''

    def __init__(self):
        self.config = configparser.ConfigParser()
        self.config.read('conf.ini', 'utf-8')

        self.api = Api(server_url=self.config.get('base', 'server_url'))

        today_first_run = self.config.get('runtime', 'today_first_run')
        date_day = time.strftime('%d', time.localtime(int(today_first_run)))
        #若不是本日首次运行,执行时间戳更新操作
        if date_day != time.strftime('%d', time.localtime(time.time())):
            self.config.set('runtime', 'today_first_run',
                            str(int(time.time())))
            self.updateTimeOffset()

    def __del__(self):
        self.config.write(open('conf.ini', 'w'))

    def updateTimeOffset(self):
        server_time = int(self.api.gettime())
        local_time = int(time.time())

        time_offset = str(server_time - local_time)
        self.config.set('safe', 'time_offset', time_offset)

    def setUserName(self, user):
        self.config.set('username', 'user', user)

    def setPassword(self, password):
        self.config.set('username', 'password', password)

    def getConfig(self, sec, opt):
        return self.config.get(sec, opt)

    def update(self,
               ip='',
               domain='',
               update_type='',
               domain_auth_code='',
               user='',
               password=''):
        local_time = str(int(time.time()))
        last_domain = self.config.get('runtime', 'domain')

        if ip == '':
            ip = self.api.getip()
        else:
            self.config.set('runtime', 'ip', ip)
        if update_type == '':
            update_type = self.config.get('base', 'update_type')
        else:
            self.config.set('base', 'update_type', update_type)

        if domain == '':
            domain = self.config.get('runtime', 'domain')
        else:
            self.config.set('runtime', 'domain', domain)

        if domain_auth_code == '':
            domain_auth_code = self.config.get('runtime', 'auth_code')
        else:
            self.config.set('runtime', 'auth_code', domain_auth_code)

        if user == '':
            user = self.config.get('username', 'user')
        else:
            self.config.set('username', 'user', user)
        if password == '':
            password = self.config.get('username', 'password')
        else:
            self.config.set('username', 'password', password)

        on_error = self.config.get('runtime', 'on_error')
        #当上次操作没有发生错误,ip未改变,上次更新与本次更新的域名相同时,不执行更新操作
        if self.config.get(
                'runtime',
                'ip') == ip and on_error == '0' and last_domain == domain:
            #ip未发生变化,且上一次操作未发生错误,不触发更新
            self.config.set('runtime', 'last_check', local_time)
            return True
        else:
            self.config.set('runtime', 'last_check', local_time)
            self.config.set('runtime', 'last_update', local_time)
            self.config.set('runtime', 'ip', ip)

            if update_type == 'safe':
                time_offset = self.config.get('safe', 'time_offset')
                rst = self.api.update(domain, ip, domain_auth_code,
                                      time_offset)

                if rst == 'success':
                    self.config.set('runtime', 'on_error', '0')
                else:
                    self.config.set('runtime', 'on_error', '1')

                return rst
            elif update_type == 'username':
                user = self.config.get('username', 'user')
                password = self.config.get('username', 'password')
                rst = self.api.updateByUserName(domain, ip, user, password)

                if rst == 'success':
                    self.config.set('runtime', 'on_error', '0')
                else:
                    self.config.set('runtime', 'on_error', '1')

                return rst

            elif update_type == 'authcode':
                rst = self.api.updateByAuthCode(domain, ip, domain_auth_code)

                if rst == 'success':
                    self.config.set('runtime', 'on_error', '0')
                else:
                    self.config.set('runtime', 'on_error', '1')

                return rst
            else:
                return 'error:unknown_type'
예제 #2
0
class ChatBot:
    def __init__(self, context, seed, model, tokenizer, first_message):
        self.brain = ChatBotBrain(context, seed, model, tokenizer)
        self.first_message = first_message
        self.init_answers()
        self.api = Api()

    def run(self):
        while True:
            dictionary = self.api.update(self.api.last_message)
            for m in dictionary['result']:
                id_chat, user, question, id_update = self.api.read_messages(m)

                if id_update > (self.api.last_message-1):
                    self.api.last_message = id_update + 1

                if self.filter_question(question.lower(), id_chat):
                    self.api.send_message(id_chat, self.brain.talk(question))
                    # print('RoboTec dice >>', self.brain.talk(question))

    def filter_question(self, question, id_chat):
        for answer in self.answers:
            pattern = answer[0]
            p = re.compile(pattern)
            if not p.search(question.lower()) is None:
                self.api.send_message(id_chat, answer[1])
                # print('RoboTec dice >>', answer[1])
                return False
        return True
        

    def init_answers(self):
        self.answers = [
            (
                '(.*)telefono(.*)escuela(.*)',
                'Puedes contactarnos por el siguiente Numero: 3111421169'
            ),
            (
                '(.*)baños(.*)',
                'Puedes Ubicar los baños en los siguientes edificios: Baston, Laboratorio de computo, Centro de Idiomas, Biblioteca, Edificio X, Domo, LICBI, Edificio UD'
            ),
            (
                '(.*)(donde|ubicacion)(.*)baston(.*)',
                'El edificio baston se encuentra por la entrada peatonal principal, primer edificio de la izquierda. \n Aqui tienes la ubicacion:  https://goo.gl/maps/Xj2HTpdMqjXUYLiJ7 '
            ),
            (
                '(.*)(donde|ubicacion)(.*)ud(.*)',
                'El edificio UD se encuentra por la entrada peatonal principal, primer edificio de la derecha. \n Aqui tienes la ubicacion: https://goo.gl/maps/oxmE7phGNeYLMqbx7'
            ),
            (
                '(.*)(donde|ubicacion)(.*)licbi(.*)',
                'El edificio LICBI se encuentra por la entrada 2 de agosto, primer edificio de la izquierda. \n Aqui tienes la ubicacion: https://goo.gl/maps/uUw8EZ3fDpiBt5737'
            ),
            (
                '(.*)(donde|ubicacion)(.*)recursos(.*)',
                'El Departamento de Recursos Financieros se encuentra por la entrada principal, segundo edificio de la derecha. \n Aqui tienes la ubicacion: https://goo.gl/maps/JaWjrciqcj5mHa8S9'
            ),
            (
                '(.*)(donde|ubicacion)(.*)domo(.*)',
                'El Domo se encuentra entrando por la entrada principal, todo derecho pasando los edificios, y las canchas de futbol. \n Aqui tienes la ubicacion: https://goo.gl/maps/VUGRbTS4JFnbFwTA6'
            ),
            (
                '(.*)(donde|ubicacion)(.*)futbol(.*)',
                'La cancha de Futbol se encuentra entrando por la entrada principal, todo derecho, hasta donde topes, giras a la derecha y detras de los laboratorios de quimica. \n Aqui tienes la ubicacion: https://goo.gl/maps/BNQdxcGAMptjz6gC6'
            ),
            (
                '(.*)(donde|ubicacion)(.*)beisbol(.*)',
                'La cancha de Beisbol se encuentra entrando por la entrada principal, todo derecho pasando los edificios, a un costado del Domo. \n Aqui tienes la ubicacion: https://goo.gl/maps/5dhBQU49Zbisis1e8'
            ),
            (
                '(.*)(donde|ubicacion)(.*)basquetbol(.*)',
                'La cancha de Basquetbol se encuentra entrando por la entrada principal, todo derecho pasando los edificios, y las canchas de volibol. \n Aqui tienes la ubicacion: https://goo.gl/maps/XJ4jYRK99ghdR93T6'
            ),
            (
                '(.*)(donde|ubicacion)(.*)cafeteria(.*)',
                'La Cafeteria se encuentra frente a la entrada 2 de agosto, a un costado del estacionamiento. \n aqui tienes la ubicacion: https://goo.gl/maps/mS6jqNAG5u2zMbF57'
            ),
            (
                '(.*)(donde|ubicacion)(.*)biblioteca(.*)',
                'La biblioteca se encuentra por la entrada principal, todo derecho, terminando el pasillo a la derecha y es el edifico de al fondo. \n aqui tienes la ubicacion: https://goo.gl/maps/FMw6jWqBFHiy7hCo6'
            ),
            (
                '(.*)oferta educativa(.*)',
                'Puedes ver nuestras oferta educativa en el siguiente link: \nhttps://www.tepic.tecnm.mx/ofertaeducativa'
            ),
            (
                '(.*)facebook(.*) tepic(.*)',
                'Este es nuestro Facebook link: \nhttps://m.facebook.com/TecnologicodeTepic/'
            ),
            (
                '(.*)facebook(.*)sistemas(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/profile.php?id=100006319297206'
            ),
            (
                '(.*)facebook(.*)desarrollo(.*)',
                'Este es nuestro Facebook link: \nhttps://m.facebook.com/Desarrollo-Acad%C3%A9mico-Oferta-Educativa-ITT-106762494071023/'
            ),
            (
                '(.*)facebook(.*)arquitectura(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/coordinacion.arquitectura.tectepic'
            ),
            (
                '(.*)facebook(.*)movilidad(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/profile.php?id=100010331235200'
            ),
            (
                '(.*)facebook(.*)quimica(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/profile.php?id=100008518719760'
            ),
            (
                '(.*)facebook(.*)bioquimica(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/profile.php?id=100008518719760'
            ),
            (
                '(.*)facebook(.*)mecatronica(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/coordinacion.ie.im'
            ),
            (
                '(.*)facebook(.*)industrial(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/coordinacion.ingindustrial.3'
            ),
            (
                '(.*)facebook(.*)lenguajes(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/cle.ittepic'
            ),
            (
                '(.*)facebook(.*)administracion(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/profile.php?id=100011687321637'
            ),
            (
                '(.*)facebook(.*)civil(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/profile.php?id=100012151927234'
            ),
            (
                '(.*)facebook(.*)titulacion(.*)',
                'Este es nuestro Facebook link: \nhttps://www.facebook.com/laura.casillas.792303'
            ),
            (
                '(.*)donde(.*)rotonda(.*)',
                'La Rotonda del Titulo se encuentra a un costado de la Cafeteria. \n Aqui tienes la ubicacion: https://goo.gl/maps/TmsQenzZXwsvT9ib8'
            ),
            (
                '(.*)donde(.*)Titulacion(.*)',
                'La sala de Titulacion, de encuentra debajo de lso Edificios J, entrando por la 2 de agosto, todo derecho y primer edificio a la izquierda. \n Aqui tienes la ubicacion: https://goo.gl/maps/2ftZrVtuDEazSqu8A'
            ),
            (
                '(.*)(tramite|tramites)(.*)titulacion(.*)',
                'Aquí puedes encontrar información sobre los tramites de titualación \nhttps://www.tepic.tecnm.mx/tramites/titulacion'
            ),
            (
                '(.*)(tramite|tramites)(.*)ingreso(.*)',
                'Aquí puedes encontrar información sobre los tramites de nuevo ingreso \nhttps://www.tepic.tecnm.mx/aspirantes/nuevoingreso'
            ),
            (
                '(.*)(tramite|tramites)(.*)seguro(.*)',
                'Aquí puedes encontrar información sobre los tramites del seguro \nhttps://www.tepic.tecnm.mx/alumnos/seguro'
            ),
            (
                '(.*)(tramite|tramites)(.*)(afiliacion|imss)(.*)',
                'Aquí puedes encontrar información sobre los tramites del número de afiliación del IMSS \nhttps://www.tepic.tecnm.mx/alumnos/afiliacion'
            ),
            (
                '(.*)(becas|beca)(.*)cnbes(.*)',
                'Aquí puedes encontrar información sobre los tramites para la beca de CNBES \nhttp://www.cnbes.sep.gob.mx/'
            ),
            (
                '(.*)documentos(.*)servicio(.*)',
                'Aquí puedes encontrar información sobre los documentos para tu Servicio Social \n https://www.tepic.tecnm.mx/alumnos/documentos#servicio'
            ),
            (
                '(.*)reglamento(.*)',
                'Aquí puedes encontrar información sobre el reglamento para Alumnos \n https://www.tepic.tecnm.mx/doc/REGLAMENTO_PARA_ALUMNOS.pdf'
            ),
            (
                '(.*)documentos(.*)residencia(.*)',
                'Aquí puedes encontrar información sobre lso documentos para tu Residencia Profesional \n https://www.tepic.tecnm.mx/alumnos/documentos#residencia'
            ),
            (
                '(.*)(becas|beca)(.*)ingles(.*)',
                'Aquí puedes encontrar información sobre los tramites para la beca de inglés :3\nhttps://www.tepic.tecnm.mx/biblioteca/becas'
            ),
            (
                '(.*)(becas|beca)(.*)conacyt(.*)',
                'Aquí puedes encontrar información sobre los tramites para la beca del CONACYT :3\nhttp://www.conacyt.mx/index.php/becas-y-posgrados'
            ),
            (
                '(.*)(sitios|sitio)(.*)titulacion(.*)',
                'Aquí puedes encontrar información sobre el sitio de la plataforma EDDI2 :\nhttps://eddi2.ittepic.edu.mx/'
            ),
            (
                '(.*)(sitios|sitio)(.*)(correo|institucional)(.*)',
                'Aquí puedes encontrar información sobre el sitio de la plataforma del correo institucional :\nhttps://www.tepic.tecnm.mx/aspirantes/nuevoingreso'
            ),
            (
                '(.*)(sitios|sitio)(.*)sii(.*)',
                'Aquí puedes encontrar información sobre el sitio de la plataforma del SII :\nhttps://www.tepic.tecnm.mx/alumnos/seguro'
            ),
            (
                '(.*)(sitios|sitio)(.*)scg(.*)',
                'Aquí puedes encontrar información sobre el sitio de la plataforma del SGC :\nhttps://www.tepic.tecnm.mx/alumnos/afiliacion'
            ),
            (
                '(.*)(carrera|informacion)(.*)bioquimica(.*)',
                'Aquí puedes encontrar información sobre la carrera Ingenieria Bioquimica :\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/ibq'
            ),
            (
                '(.*)(carrera|informacion)(.*)civil(.*)',
                'Aquí puedes encontrar información sobre la carrera Ingenieria Civil :\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/ic'
            ),
            (
                '(.*)(carrera|informacion)(.*)arquitectura(.*)',
                'Aquí puedes encontrar información sobre la carrera Arquitectura :\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/arq'
            ),
            (
                '(.*)(carrera|informacion)(.*)(electrica|electronica)(.*)',
                'Aquí puedes encontrar información sobre la carrera Ingenieria Electrica :\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/ige'
            ),
            (
                '(.*)(carrera|informacion)(.*)gestion(.*)',
                'Aquí puedes encontrar información sobre la carrera de Ingeniería en Gestión Empresarial\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/ige'
            ),
            (
                '(.*)(carrera|informacion)(.*)industrial(.*)',
                'Aquí puedes encontrar información sobre la carrera de Ingeniería Industrial\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/ii'
            ),
            (
                '(.*)(carrera|informacion)(.*)mecatronica(.*)',
                'Aquí puedes encontrar información sobre la carrera de Ingeniería Mecatrónica\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/im'
            ),
            (
                '(.*)(carrera|informacion)(.*)quimica(.*)',
                'Aquí puedes encontrar información sobre la carrera de Ingeniería Química\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/iq'
            ),
            (
            '(.*)twitter(.*)',
            'Puedes estar al tanto de lo que se publica en el pefil de Twitter del ITTEPIC dando click en el siguiente enlace: \n Twitter: https://twitter.com/TecnmTepic'
            ),
            (
            '(.*)publicaciones(.*)',
            'Puedes estar al tanto de lo que se publica en el pefil de Twitter del ITTEPIC dando click en el siguiente enlace: \n Twitter: https://twitter.com/TecnmTepic.\n     O de las publicaciones del Facebook oficial del ITTEPIC dando click en el siguiente enlace: \n Facebook: https://www.youtube.com/user/TheARTE1999'
            ),
            (
            '(.*)youtube(.*)',
            'Puedes estar al tanto de los videos que se publican en YouTube sobre el ITTEPIC dando click en el siguiente enlace: : \n Youtube: https://www.youtube.com/user/TheARTE1999'
            ),
            (
            '(.*)videos(.*)',
            'Puedes estar al tanto de los videos que se publican en YouTube sobre el ITTEPIC dando click en el siguiente enlace: : \n Youtube: https://www.youtube.com/user/TheARTE1999'
            ),
            (
            '(.*)mensajes(.*)',
            'Puedes estar al tanto de las publicaciones del Facebook oficial del ITTEPIC dando click en el siguiente enlace: \n Facebook: https://www.facebook.com/TecnologicodeTepic/ '
            ),
            (
            '(.*)fotos(.*)',
            'Puedes estar al tanto de las publicaciones del Facebook oficial del ITTEPIC dando click en el siguiente enlace: \n Facebook: https://www.facebook.com/TecnologicodeTepic/'
            ),
            (
            '(.*)face(.*)',
            'Puedes estar al tanto de las publicaciones del Facebook oficial del ITTEPIC dando click en el siguiente enlace: \n Facebook: https://www.facebook.com/TecnologicodeTepic/'
            ),
            (
            '(.*)redes(.*)',
            'Sigue las redes de ITTEPIC: \n Twitter: https://twitter.com/TecnmTepic \n Youtube: https://www.youtube.com/user/TheARTE1999 \n Facebook: https://www.facebook.com/TecnologicodeTepic/'
            ),
            (
            '(.*)sociales(.*)',
            'Sigue las redes de ITTEPIC: \n Twitter: https://twitter.com/TecnmTepic \n Youtube: https://www.youtube.com/user/TheARTE1999 \n Facebook: https://www.facebook.com/TecnologicodeTepic/'
            ),
            (
                '(.*)(carrera|informacion)(.*)(sistemas|computacionales)(.*)',
                'Aquí puedes encontrar información sobre el sitio de la plataforma EDDI2 :\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/isc'
            ),
            (
                '(.*)(carrera|informacion)(.*)(tecnologias|comunicacion)(.*)',
                'Aquí puedes encontrar información sobre el sitio de la plataforma del correo institucional :\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/itic'
            ),
            (
                '(.*)(carrera|informacion)(.*)(licenciatura|administracion)(.*)',
                'Aquí puedes encontrar información sobre el sitio de la plataforma del SII :\nhttps://www.tepic.tecnm.mx/ofertaeducativa/licenciatura/la'
            ),
            (
                '(.*)(carrera|informacion)(.*)(alimentos|ciencias)(.*)',
                'Aquí puedes encontrar información sobre el sitio de la plataforma del SGC :\nhttps://www.tepic.tecnm.mx/posgrado/MCA/inicio'
            ),
            (
                'hola',
                self.first_message
            )
        ]