t0sig/main.py

85 lines
2.4 KiB
Python

import settings
import asyncio
import json
from datetime import datetime
from uuid import uuid4
from telethon import TelegramClient, events
from aiohttp import web
bot = TelegramClient('data/bot', settings.API_ID, settings.API_HASH).start(bot_token=settings.API_TOKEN)
TANNER = 79316791
messages = {}
@bot.on(events.NewMessage(incoming=True))
async def new_message(event):
text = event.raw_text
sender = event.sender_id
print(sender, text)
if sender != TANNER:
return
if not text.startswith('/allow_'):
return
mid = text.replace('/allow_', '')
try:
data = messages[mid]
except KeyError:
await event.reply('Message ID not found. Did the bot restart?')
return
entry = '--------------------------\n\n{} - {}'.format(data['date'], data['name'])
website = data['website']
if website:
if not website.startswith('http://') and not website.startswith('https://'):
website = 'http://' + website
entry += ' (<a href="{0}" target="_blank" rel="noreferrer noopener">{0}</a>)'.format(website)
entry += '\n\n{}\n\n'.format(data['message'])
with open('data/guestbook.html', 'a') as f:
f.write(entry)
await event.reply('Entry added to t0.vc/g')
print('Added', data)
async def submit(request):
data = dict(await request.post())
data['date'] = str(datetime.today().date())
mid = str(uuid4()).split('-')[0]
print(mid, data)
try:
name = data['name']
website = data.get('website', '')
message = data['message']
except KeyError:
raise web.HTTPBadRequest(reason='You are missing something.')
if len(name) > 50:
raise web.HTTPBadRequest(reason='Name is too long.')
if len(website) > 100:
raise web.HTTPBadRequest(reason='Website is too long.')
if len(message) > 1000:
raise web.HTTPBadRequest(reason='Message is too long.')
report = 'Name: {}\n\nWebsite: {}\n\nMessage: {}\n\n/allow_{}'
await bot.send_message(TANNER, message=report.format(name, website, message, mid))
messages[mid] = data
with open('data/messages.log', 'a') as f:
f.write(json.dumps(data)+'\n')
return web.Response(text='Thanks! Your message is pending approval.')
if __name__ == '__main__':
bot.start()
app = web.Application()
app.router.add_post('/', submit)
web.run_app(app, port=8123)