diff --git a/guestbook.html.blank b/guestbook.html.blank new file mode 100644 index 0000000..7d4ed2a --- /dev/null +++ b/guestbook.html.blank @@ -0,0 +1,23 @@ +
+Tanner Collin + +Guest Book +========== + +If you visited my website, please sign my guestbook! ++ +Messages +======== + diff --git a/main.py b/main.py index 2561c0d..2fed5d7 100644 --- a/main.py +++ b/main.py @@ -1,19 +1,81 @@ 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 - print(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 += ' ({0})'.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 = await request.post() - print(data) + 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()