Messenger бот на питоне - PullRequest
       21

Messenger бот на питоне

0 голосов
/ 10 декабря 2018

Я делаю простой бот для мессенджера на python с использованием fbmq, который обрабатывает быстрые вопросы.

Я заставил бота отправлять сообщения, когда пользователи отправляют текстовые сообщения на мою страницу в Facebook в нерабочее время.

working_hours = [12,13,14,15,16]

if messaging_event.get('message') and (now.hour no in working_hours):
   page.send(sender_id, "Sorry we are closed!"

Поскольку люди обычно выражают то, что они хотят, в более чем 1 сообщении, они получают спам в чате с сообщением «Мы закрыты!»

Мне это не очень понравилось,потому что я хочу дать возможность пользователю оставить сообщение, чтобы я мог ответить завтра.

Вы знаете, как я могу заставить бота отправить "Мы закрыты!"каждое 5-е сообщение, отправленное пользователем?

Я пробовал это:

count = 0
if (count / 3 == 1):
  page.send(sender_id, "Sorry we are closed!")
  count = 0
if messaging_event.get('message') and (now.hour no in working_hours):
  count += 1

Но это не сработало.Если у вас есть идеи, как я могу понять, что буду очень благодарен:)

// Я попробовал цикл while.

for messaging_event in messaging:

        sender_id = messaging_event['sender']['id']
        recipient_id = messaging_event['recipient']['id']

        messaging_event.get('postback'):
        messaging_event.get('message'):

        while (now.hour not in working_hours):
            count = 0
            if (count/3 == 1):
                page.send(sender_id, "Hello")

            if messaging_event.get('message'):
                count += 1

Но это не сработало.Получил сообщение об ошибке при доставке сообщений в бот. Facebook

1 Ответ

0 голосов
/ 14 декабря 2018

Ну, я не нашел лучшего решения для этого.

count = 0
working_hours = [ 8... ]

@app.route('/', methods=['POST'])
def webhook():
    print(request.data)
    data = request.get_json()

    if data['object'] == "page":
        entries = data['entry']

        for entry in entries:
            messaging = entry['messaging']

            for messaging_event in messaging:

                sender_id = messaging_event['sender']['id']
                recipient_id = messaging_event['recipient']['id']

                if now.hour not in working_hours:
                    global count
                if (count == 3):
                    page.send(sender_id, "We are closed!")
                if (count == 4):
                    count = 0
                if messaging_event['message'].get('text'):
                    count += 1

Я бы хотел сделать это с отметкой времени сейчас, но, честно говоря, не знаю как.Так, например, если есть пользователь, которого вы ничего не писали в течение долгого времени, получит сообщение «Добро пожаловать, мы скучали по вам».

Я не уверен, как этот код будет работать с людьми, отправляющими текстовые сообщения нав то же время нет.Вероятно, все глючит, так как я использую глобальную переменную.Если у вас есть идеи, пожалуйста, помогите:)

...