Improve parsing chat commands

This commit is contained in:
2021-04-29 02:18:01 +00:00
parent e4ea9aeaa0
commit 080895421d
2 changed files with 30 additions and 53 deletions

View File

@@ -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