b-jokes/main.py
Egor Matveev 3a35c77419 fix
2025-07-08 01:13:58 +04:00

77 lines
2.2 KiB
Python

import os
from flask import Flask, request, make_response
from helpers.configurator import ConfiguratorClient
from helpers.jokes import get_random
from helpers.queues import TasksHandlerMixin, set_task
import settings
from helpers.events import events
from processor import Processor
def run():
app = Flask(__name__)
@app.route('/', methods=['POST'])
def main():
req = request.json
processor = Processor(req)
response = {
"version": req['version'],
"session": req['session'],
"response": {
"end_session": False
}
}
response['response'].update(processor.process())
return response
@app.route('/stats', methods=['GET'])
def stats():
output = make_response(events.form_data())
output.headers["Content-Disposition"] = "attachment; filename=stats.csv"
output.headers["Content-type"] = "text/csv"
return output
@app.route('/stats/today', methods=["GET"])
def today():
return events.today_json()
@app.route('/check_sentry')
def check_sentry():
a = 1 / 0
app.run(host="0.0.0.0", port=8000, debug=settings.DEBUG)
def bot():
configurator = ConfiguratorClient("b-jokes", os.getenv("STAGE", "local"))
class Bot(TasksHandlerMixin):
@property
def queue_name(self):
return "b_jokes_worker"
def process(self, payload):
text = payload.get('text')
if not text:
return
for word in configurator.get_config('words'):
if word in text:
mes = 'Держи шутку!\n' + get_random()
set_task(
"botalka_mailbox",
{
'project': 'b-jokes',
'name': 'telegram-bot',
'body': {
'text': mes,
'reply_to_message_id': payload['message_id'],
'chat_id': payload['chat']['id'],
}
},
1
)
return
Bot().poll()