Мне нужен способ сделать мой код l oop с помощью функции onMessage()
после обнаружения сервером нового сообщения. В настоящее время он отправит ответ один раз, тогда ничего не произойдет.
Если бы я должен был * l0010 * вернуться обратно через функцию onMessage()
вручную, он просто использовал бы тот же самый сохраненный ответ, что и в первый раз, и многократно выводил бы аналогичный ответ.
ПОЖАЛУЙСТА, НЕЗНАЧИТЕЛЬНО СЛУЧАЙНЫЕ ПЕРЕМЕННЫЕ В КОДЕ: Я удалил длинные логы c, которые вычисляли ответ, так как он должен быть здесь неактуальным.
from fbchat import Client, log
from fbchat.models import *
import fileinput
import nltk
from nltk.stem.lancaster import LancasterStemmer
stemmer = LancasterStemmer()
import numpy
import tflearn
import tensorflow
import random
import json
import pickle
class chatbot(Client):
def onMessage(self, author_id=None, message_object=None, thread_id=None, thread_type=ThreadType.USER, **kwargs):
toggle = client.fetchThreadMessages(thread_id=client.uid, limit=3) # client.uid means its our own acc
for message in toggle:
pText=message.text.lower()
print("test1")
self.markAsRead(author_id)
log.info("Message {} from {} in {}".format(message_object, thread_id, thread_type))
msgText = message_object.text.lower()
print("test2")
def getResponse(self, message, model, words, labels, data, thread_id, thread_type, author_id):
print("test9")
while True:
results = model.predict([self.bag_of_words(message, words)])
results_index = numpy.argmax(results)
tag = labels[results_index]
for tg in data["intents"]:
if tg['tag'] == tag:
responses = tg['responses']
finalResponse = random.choice(responses)
run_once = 0
while 1:
if run_once == 0:
self.sendMessage(finalResponse, thread_id, thread_type, author_id)
run_once = 1
def sendMessage(self, response, thread_id, thread_type, author_id):
print("test10")
if 1 == 1:# (author_id!=self.uid):
self.send(Message(text=response), thread_id=thread_id, thread_type=thread_type)
self.markAsDelivered(author_id, thread_id)
client = chatbot("********", "****************")
client.listen()