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 text = text.lower() 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()