parent
4c2fef4417
commit
e5b94b30c8
1 changed files with 56 additions and 0 deletions
@ -0,0 +1,56 @@ |
||||
import aiohttp |
||||
import asyncio |
||||
import logging |
||||
import re |
||||
import settings |
||||
from telethon import TelegramClient, events |
||||
|
||||
bot = TelegramClient('bot', settings.API_ID, settings.API_HASH).start(bot_token=settings.API_TOKEN) |
||||
web = None |
||||
api = lambda route: settings.DYNMAP_ADDRESS + route |
||||
logging.basicConfig(level=logging.INFO) |
||||
|
||||
@bot.on(events.NewMessage(incoming=True)) |
||||
async def new_message(event): |
||||
text = event.raw_text |
||||
sender = await event.get_sender() |
||||
|
||||
if event.chat.id != settings.CHAT_ID: |
||||
logging.info('Wrong chat ID') |
||||
return |
||||
|
||||
if not text: |
||||
logging.info('No text found') |
||||
return |
||||
|
||||
name = re.sub(r'\W+', '', sender.first_name) + '(TG)' |
||||
|
||||
logging.info('[SEND] {}: {}'.format(name, text)) |
||||
|
||||
data = dict(name=name, message=text) |
||||
await web.post(api('/up/sendmessage'), json=data) |
||||
|
||||
async def main(): |
||||
global web |
||||
web = aiohttp.ClientSession() |
||||
last_time = 0 |
||||
last_msg = '' |
||||
|
||||
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'].endswith('(TG)'): continue |
||||
message = '<{}> {}'.format(update['playerName'], update['message']) |
||||
if message == last_msg: continue |
||||
|
||||
logging.info('[RECV] ' + message) |
||||
await bot.send_message(settings.CHAT_ID, message) |
||||
last_msg = message |
||||
|
||||
await asyncio.sleep(1) |
||||
|
||||
with bot: |
||||
bot.loop.run_until_complete(main()) |
Loading…
Reference in new issue