78 lines
2.3 KiB
Python
78 lines
2.3 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
|
|
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()
|