Nie możesz wybrać więcej, niż 25 tematów
Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
56 wiersze
1.4 KiB
56 wiersze
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)
|
|
|