diff --git a/teledynmap.py b/teledynmap.py index 6f0cc78..d3d8a56 100644 --- a/teledynmap.py +++ b/teledynmap.py @@ -35,7 +35,11 @@ async def new_message(event): logging.info('[SEND] {}: {}'.format(name, text)) data = dict(name=name, message=text) - await web.post(api('/up/sendmessage'), json=data) + try: + await web.post(api('/up/sendmessage'), json=data) + except aiohttp.ClientError: + logging.exception('Problem sending message to dynmap:') + async def main(): global web @@ -45,22 +49,25 @@ async def main(): logging.info('Bridge loaded') while True: - async with web.get(api('/up/world/world/' + str(last_time))) as res: - j = await res.json(content_type='text/plain;charset=utf-8') - last_time = j['timestamp'] - for update in j['updates']: - if update['type'] != 'chat': continue - if update['playerName'].startswith('[TG] '): continue + try: + async with web.get(api('/up/world/world/' + str(last_time))) as res: + j = await res.json(content_type='text/plain;charset=utf-8') + last_time = j['timestamp'] + for update in j['updates']: + if update['type'] != 'chat': continue + if update['playerName'].startswith('[TG] '): continue - name = update['playerName'] - icon = emojis[md5(name) % len(emojis)] - icon = settings.CUSTOM_EMOJIS.get(name, icon) - message = '{} <{}> {}'.format(icon, name, update['message']) - if message == last_msg: continue + name = update['playerName'] + icon = emojis[md5(name) % len(emojis)] + icon = settings.CUSTOM_EMOJIS.get(name, icon) + message = '{} <{}> {}'.format(icon, name, update['message']) + if message == last_msg: continue - logging.info('[RECV] ' + message) - await bot.send_message(settings.CHAT_ID, message) - last_msg = message + logging.info('[RECV] ' + message) + await bot.send_message(settings.CHAT_ID, message) + last_msg = message + except aiohttp.ClientError: + logging.exception('Problem getting message from dynmap:') await asyncio.sleep(1)