Improve parsing chat commands
This commit is contained in:
		@@ -161,24 +161,25 @@ class ChatManager:
 | 
			
		||||
    def translate_chat(self, data):
 | 
			
		||||
        if isinstance(data, str):
 | 
			
		||||
            return data
 | 
			
		||||
 | 
			
		||||
        result = data.get('text', '')
 | 
			
		||||
        result += data.get('translate', '')
 | 
			
		||||
 | 
			
		||||
        if 'with' in data:
 | 
			
		||||
            result += ' ' + ' '.join([self.translate_chat(x) for x in data['with']])
 | 
			
		||||
        elif 'extra' in data:
 | 
			
		||||
            return ''.join([self.translate_chat(x) for x in data['extra']])
 | 
			
		||||
        elif 'text' in data:
 | 
			
		||||
            return data['text']
 | 
			
		||||
        elif 'with' in data:
 | 
			
		||||
            if len(data['with']) >= 2:
 | 
			
		||||
                return '<{}> {}'.format(*[self.translate_chat(x) for x in data['with']])
 | 
			
		||||
            else:
 | 
			
		||||
                return self.translate_chat(data['with'][0])
 | 
			
		||||
        elif 'translate' in data:
 | 
			
		||||
            return data['translate']
 | 
			
		||||
        else:
 | 
			
		||||
            print(data)
 | 
			
		||||
            return '?'
 | 
			
		||||
            result += ''.join([self.translate_chat(x) for x in data['extra']])
 | 
			
		||||
 | 
			
		||||
        return result
 | 
			
		||||
 | 
			
		||||
    def print_chat(self, chat_packet):
 | 
			
		||||
        #print(chat_packet)
 | 
			
		||||
        #print(chat_packet.json_data)
 | 
			
		||||
        #import json
 | 
			
		||||
        #print(json.dumps(json.loads(chat_packet.json_data), indent=4))
 | 
			
		||||
        try:
 | 
			
		||||
            source = chat_packet.field_string('position')
 | 
			
		||||
            sender = chat_packet.sender
 | 
			
		||||
            text = self.translate_chat(json.loads(chat_packet.json_data))
 | 
			
		||||
            print('[%s] %s'%(source, text))
 | 
			
		||||
        except Exception as ex:
 | 
			
		||||
@@ -186,7 +187,7 @@ class ChatManager:
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        if self.handler:
 | 
			
		||||
            self.handler((source, text))
 | 
			
		||||
            self.handler((source, sender, text))
 | 
			
		||||
 | 
			
		||||
    def set_handler(self, func):
 | 
			
		||||
        self.handler = func
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user