예제 #1
0
 def __init__(self):
     for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
                                   socket.SOCK_STREAM, 0,
                                   socket.AI_PASSIVE):
         af, socktype, proto, name, sa = res
         try:
             self.listen_socket = socket.socket(af, socktype, proto)
         except socket.error as msg:
             self.listen_socket = None
             #print msg
             continue
         try:
             self.listen_socket.bind(sa)
             self.listen_socket.listen(10)
         except socket.error as msg:
             self.listen_socket.close()
             self.listen_socket = None
             #print msg
             continue
         break
     if self.listen_socket is None:
         print 'Create server socket failed, please check your network configuration!'
         sys.exit(-1)
     try:
         self.messageHandler = MessageHandler()
     except:
         print 'Create game server failed!'
         sys.exit(-1)
     self.onConnection = [self.listen_socket]
예제 #2
0
 def test_handle_cmd(self):
     handler = MessageHandler(None)
     result = handler.handle_cmd('#weather 北京')
     self.assertRegex(result, '北京.*天气: .*')
     result = handler.handle_cmd('#run test')
     self.assertRegex(result, 'Unimplemented command: .*')
     result = handler.handle_cmd('#@$ test')
     self.assertRegex(result, 'Invalid command: .*')
예제 #3
0
    def test_handle_room(self):
        handler = MessageHandler(None)
        # mentioned me
        forward = handler.handle_room('测试群', '测试', True, '', 'id', None)
        self.assertTrue(forward)

        # mentioned all
        forward = handler.handle_room('测试群', '测试', False, '@All', 'id', None)
        self.assertTrue(forward)

        # specific room, has attachment
        forward = handler.handle_room('测试群', '测试', False, '',
                                      '4932234304@chatroom',
                                      MessageType.MESSAGE_TYPE_ATTACHMENT)
        self.assertTrue(forward)

        # specific room, no attachment
        forward = handler.handle_room('测试群', '测试', False, '',
                                      '4932234304@chatroom', None)
        self.assertFalse(forward)

        # keywords match
        forward = handler.handle_room('测试群', '有额度', False, '', '', None)
        self.assertTrue(forward)

        # no keywords match
        forward = handler.handle_room('测试群', '测试', False, '',
                                      '4932234304@chatroom', None)
        self.assertFalse(forward)

        # skipped
        forward = handler.handle_room('测试群', '测试', False, '', 'id', None)
        self.assertFalse(forward)
예제 #4
0
async def main():
    """
    Async Main Entry
    """
    #
    # Make sure we have set WECHATY_PUPPET_SERVICE_TOKEN in the environment variables.
    #
    if 'WECHATY_PUPPET_SERVICE_TOKEN' not in os.environ:
        print('''
            Error: WECHATY_PUPPET_SERVICE_TOKEN is not found in the environment variables
            You need a TOKEN to run the Java Wechaty. Please goto our README for details
            https://github.com/wechaty/python-wechaty-getting-started/#wechaty_puppet_service_token
        ''')

    global bot
    bot = Wechaty()

    global handler
    handler = MessageHandler(bot)

    bot.on('scan', on_scan)
    bot.on('login', on_login)
    bot.on('message', on_message)

    await bot.start()

    print('[Python Wechaty] Chatroom Assistant started.')
예제 #5
0
def handle_message(event):
    """handle_message
        * Messageイベントの処理
    """
    event_handler = MessageHandler(event)

    status_observer = StatusObserver()
    product_observer = ProductObserver()
    message_observer = MessageObserver()

    event_handler.add_observer(product_observer)
    event_handler.add_observer(message_observer)
    event_handler.add_observer(status_observer)

    event_handler.execute()
예제 #6
0
# Map data into vocabulary
vocab_path = os.path.join(checkpoint_dir, "..", "vocab")
vocab_processor = learn.preprocessing.VocabularyProcessor.restore(vocab_path)

print("\nEvaluating...\n", flush=True)

# Evaluation
# ==================================================
checkpoint_file = tf.train.latest_checkpoint(checkpoint_dir)
graph = tf.Graph()
with graph.as_default():
    # Leave this in case we want debug data
    # session_conf = tf.ConfigProto(log_device_placement=True)
    # sess = tf.Session(config=session_conf)
    sess = tf.Session()
    with sess.as_default():
        # Load the saved meta self.graph and restore variables
        saver = tf.train.import_meta_graph("{}.meta".format(checkpoint_file))
        saver.restore(sess, checkpoint_file)

        handler = MessageHandler(sess, graph, vocab_processor)
        print("READY", flush=True)

        while True:
            line = sys.stdin.readline()

            if not line:
                pass

            handler.handle(line)
예제 #7
0
 def test_doc2pdf(self):
     handler = MessageHandler(None)
     # filebox = FileBox.from_file('testdata/Test.docx')
     # result, error = handler.doc2pdf(filebox, 'Test')
     result, error = handler.doc2pdf('testdata/Test.doc', 'Test')
     self.assertTrue(os.path.exists('/tmp/Test.pdf'))
예제 #8
0
 def test_message_contains_keywords(self):
     handler = MessageHandler(None)
     result = handler.message_contains_words('9:30放额度,最高20倍,手慢无',
                                             ['额度', '20倍'])
     self.assertEqual(result, True)
예제 #9
0
 def test_weather(self):
     handler = MessageHandler(None)
     result = handler.weather('北京')
     self.assertRegex(result, '北京.*天气: .*')
예제 #10
0
 def test_translate(self):
     handler = MessageHandler(None)
     result = handler.translate(
         'Recuerden. Hoy es el foro para la comunidad Hispana con la Gobernadora Gina Raimondo y la Comisionada @AInfanteGreen en vivo por Facebook Live. Envien sus preguntas con anticipación usando este enlace: http://ow.ly/QJIj50zozbq.'
     )
     self.assertRegex(result, 'Remember.*')
예제 #11
0
 def test_files(self):
     handler = MessageHandler(None)
     result = handler.files('foo.docx')
     self.assertEqual(result, 'file foo.docx not exists')
     result = handler.files(None)
     self.assertTrue(result)
예제 #12
0
class SimpleHost(object):
    def __init__(self):
        for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
                                      socket.SOCK_STREAM, 0,
                                      socket.AI_PASSIVE):
            af, socktype, proto, name, sa = res
            try:
                self.listen_socket = socket.socket(af, socktype, proto)
            except socket.error as msg:
                self.listen_socket = None
                #print msg
                continue
            try:
                self.listen_socket.bind(sa)
                self.listen_socket.listen(10)
            except socket.error as msg:
                self.listen_socket.close()
                self.listen_socket = None
                #print msg
                continue
            break
        if self.listen_socket is None:
            print 'Create server socket failed, please check your network configuration!'
            sys.exit(-1)
        try:
            self.messageHandler = MessageHandler()
        except:
            print 'Create game server failed!'
            sys.exit(-1)
        self.onConnection = [self.listen_socket]

    def start(self):
        print 'Game Host start...'
        outputs = []
        msg_queues = {}
        while self.onConnection:
            rpipes, wpipes, exceptions = select.select(self.onConnection,
                                                       outputs,
                                                       self.onConnection)
            for r in rpipes:
                if r is self.listen_socket:
                    conn_socket, cli_addr = r.accept()
                    print('New connection accepted:', cli_addr)
                    self.onConnection.append(conn_socket)
                    msg_queues[conn_socket] = deque()
                else:
                    try:
                        msg = r.recv(BUFSIZE)
                        #print msg
                    except Exception:
                        self.messageHandler.exceptionHandler()
                        self.onConnection.remove(r)
                    try:
                        if msg:
                            #print "do handler."
                            message = self.messageHandler._handle(msg, r)
                            if message:
                                # append message terminator '#'
                                msg = str(len(message)) + '\t' + message + '#'
                                msg_queues[r].put(msg)
                                outputs.append(r)
                    except Exception:
                        pass

            for w in wpipes:
                try:
                    msg = msg_queues[w].get_nowait()
                    #print msg
                except Exception as e:
                    outputs.remove(w)
                else:
                    w.send(msg)

            for e in exceptions:
                self.onConnection.remove(e)
                if e in outputs:
                    outputs.remove(e)
                e.close()
                del msg_queues[e]

    def sync(self):
        for sock in self.onConnection:
            if sock == self.listen_socket:
                continue
            try:
                sock.send(self.messageHandler.scenceManager.getSyncInfo)
            except Exception:
                logging.info('sync msg to {} error.'.format(sock))

    def close(self):
        self.MessageHandler.exceptionHandler()
        self.listen_socket.close()
        sys.exit(-1)
예제 #13
0
def test_decode_base64():
    test2_res = MessageHandler.decode_base64_if_required("dGVzdCBzdHJpbmc=")
    assert test2_res == "test string"
    print("Test2: " + str(test2_res))
예제 #14
0
def test_not_decode_string():
    test1_res = MessageHandler.decode_base64_if_required("test string")
    assert test1_res == "test string"
    print("Test1: " + str(test1_res))