составление расписания чата Facebook для общения в определенное время дня в Flask - PullRequest
0 голосов
/ 04 декабря 2018

под приложением чатбота;приложение работает хорошо, и бот может ответить на каждое сообщение;я бы хотел, чтобы чат-бот общался с пользователем каждый день в 3 часа дня;я использую «расписание» в конце кода, чтобы запустить функцию привет;

Все это просто не работает, и я не получаю никакой ошибки;питон загружается бесконечно;

из того, что я понимаю, было бы 2 бесконечных цикла, один для python и один для планирования;Так что мне нужно использовать параллелизм или что-то вроде этого?

from flask import Flask, request

import requests
import time
import schedule
from datetime import datetime
app = Flask(__name__)

FB_API_URL = 'https://graph.facebook.com/v2.6/me/messages'
VERIFY_TOKEN = "blabla"
PAGE_ACCESS_TOKEN = "blabla"

def Hello(message):
    return "Hello, how are you doing today '{}'".format(message)

def get_bot_response(message):
    """this is a dummy response to what the user says."""
    return "maybe '{}'".format(message)


def verify_webhook(req):
    if req.args.get("hub.verify_token") == VERIFY_TOKEN:
        return req.args.get("hub.challenge")
    else:
        return "incorrect"

def respond(sender, message):
    response = get_bot_response(message)
    send_message(sender, response)


def is_user_message(message):
    """Check if the message is a message from the user"""
    return (message.get('message') and
            message['message'].get('text') and
            not message['message'].get("is_echo"))


@app.route("/webhook",methods=['GET','POST'])
def listen():
    """This is the main function flask uses to 
    listen at the `/webhook` endpoint"""
    if request.method == 'GET':
        return verify_webhook(request)

    if request.method == 'POST':
        payload = request.json
        event = payload['entry'][0]['messaging']
        for x in event:
            if is_user_message(x):
                text = x['message']['text']
                sender_id = x['sender']['id']
                respond(sender_id, text)

        return "ok"



def send_message(recipient_id, text):
    """Send a response to Facebook"""
    payload = {
        'message': {
            'text': text
        },
        'recipient': {
            'id': recipient_id
        },
        'notification_type': 'regular'
    }

    auth = {
        'access_token': PAGE_ACCESS_TOKEN
    }

    response = requests.post(
        FB_API_URL,
        params=auth,
        json=payload
    )

    return response.json()


if __name__ == "__main__":
    app.run(port=5000)
    schedule.every().sunday.at("15:00").do(hello)
...