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 lines
1.4 KiB
56 lines
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('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 echo_all(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)
|
|
|