35 lines
982 B
Python
35 lines
982 B
Python
from datetime import datetime
|
|
from dateutil import parser
|
|
from dotenv import load_dotenv
|
|
from flask import Flask, request, abort
|
|
|
|
import os
|
|
|
|
app = Flask(__name__)
|
|
load_dotenv()
|
|
|
|
CHATLOG_FILE = os.getenv('CHATLOG_FILE', '/tmp/chat.txt')
|
|
|
|
@app.route('/webhook', methods=['POST'])
|
|
def webhook():
|
|
if request.method == 'POST':
|
|
message = request.json.get('eventData').get('body')
|
|
user = request.json.get('eventData').get('user').get('displayName')
|
|
timestamp = request.json.get('eventData').get('timestamp')
|
|
formatted = datetime.strftime(parser.isoparse(timestamp), '%H:%M:%S')
|
|
|
|
if user and message and timestamp:
|
|
write_out_chatlog(formatted, user, message)
|
|
return 'success', 200
|
|
else:
|
|
abort(400)
|
|
|
|
def write_out_chatlog(timestamp, user, message):
|
|
with open(CHATLOG_FILE, mode='a') as chatlog:
|
|
chatlog.write(f"{timestamp} {user}: {message}\n")
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run(host='0.0.0.0')
|