You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 rivejä
1.4 KiB

import asyncio
import logging
import settings
import time
import validators
from aiohttp import web
from telethon import TelegramClient, events
TANNER = 79316791
bot = TelegramClient('data/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)