Compare commits
2 Commits
be038a90f5
...
fef9f0f1c2
Author | SHA1 | Date |
---|---|---|
Tanner Collin | fef9f0f1c2 | 3 years ago |
Tanner Collin | 8d71f71a1d | 3 years ago |
3 changed files with 108 additions and 0 deletions
@ -0,0 +1,23 @@ |
||||
<meta charset=UTF-8><link rel=icon href=data:,><pre> |
||||
Tanner Collin |
||||
|
||||
Guest Book |
||||
========== |
||||
|
||||
If you visited my website, please sign my guestbook! |
||||
<form action="g/submit" method="POST" accept-charset="UTF-8"> |
||||
Your name: |
||||
<input name="name"> |
||||
|
||||
Your website (optional): |
||||
<input name="website"> |
||||
|
||||
Your message: |
||||
<textarea name="message" cols="60" rows="8"></textarea> |
||||
|
||||
<button type="submit">Submit</button> |
||||
</form> |
||||
|
||||
Messages |
||||
======== |
||||
|
@ -0,0 +1,84 @@ |
||||
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) |
Loading…
Reference in new issue