import asyncio import logging import settings import time import validators from aiohttp import web from telethon import TelegramClient, events TANNER = 79316791 bot = TelegramClient('bot', settings.API_ID, settings.API_HASH).start(bot_token=settings.API_TOKEN) routes = web.RouteTableDef() logging.basicConfig(level=logging.INFO) data = '' data_time = 0 @bot.on(events.NewMessage) async def new_message(event): global data, data_time if not event.raw_text: await event.reply('no') logging.info('No text found') return logging.info('Message: ' + event.raw_text) if event.sender.id != TANNER: await event.reply('no') logging.info('Message not from Tanner') return data = event.raw_text data_time = time.time() await event.reply('ok') @routes.get('/') async def index(request): if 'bot' in request.headers.get('User-Agent', '').lower(): raise web.HTTPForbidden() if time.time() - data_time > 3600: logging.info('Time expired, showing green ocean water') return web.FileResponse(path='greenoceanwater.jpg', status=200) if validators.domain(data): raise web.HTTPFound('http://' + data) elif validators.url(data): raise web.HTTPFound(data) else: return web.Response(text=data) app = web.Application() app.add_routes(routes) web.run_app(app)