gpt4 book ai didi

Python 3 : find item in list and answer based on that

转载 作者:行者123 更新时间:2023-11-30 22:10:11 25 4
gpt4 key购买 nike

我正在尝试制作一个 python 脚本,使用 fbchat 监听 Facebook 聊天并搜索单词 'cf'。如果在聊天中检测到该单词,我想发送一条预定义消息 Answer1。请参阅下面的代码和我得到的错误:

from fbchat import log, Client
from fbchat.models import *

wordImLookingFor = ['cf']

Answer1 =['Hello! how can i help you']

# Subclass fbchat.Client and override required methods
class EchoBot(Client):
def onMessage(self, author_id, message_object, thread_id, thread_type, **kwargs):
self.markAsDelivered(thread_id, message_object.uid)
self.markAsRead(thread_id)

log.info("{} from {} in {}".format(message_object, thread_id, thread_type.name))

# If you're not the author, echo
if author_id != self.uid:
if word in message_object:
print("The word is in the list!")
self.send(Message(text=answer1), thread_id=thread_id, thread_type=ThreadType.USER)


else:
print("The word is not in the list!")



client = EchoBot('user', 'pass')


client.listen()

Exception in parsing ... Traceback (most recent call last): ... File "C:/Users/John/Downloads/fbd2.py", line 22, in onMessage if word in message_object: TypeError: argument of type 'Message' is not iterable

最佳答案

这是 fbchat.models.Message 的 API

我相信您正在寻找文本字段

if word in message_object.text:
print("The word is in the list!")

编辑:

简单的解决方案

对于您的下一个错误,in 关键字需要单个字符串,而不是字符串列表。由于您要在消息中查找多个关键字,因此请对列表中的每个单词执行该 case 语句。

if author_id != self.uid:
for word in wordImLookingFor:
if word in message_object.text:
print("The word is in the list!")
self.send(Message(text=answer1), thread_id=thread_id, thread_type=ThreadType.USER)
else:
print("The word is not in the list!")

规模化解决方案

由于您最终将搜索一组多个关键字,并且可能每个关键字都应得出不同的答案,因此您可以通过创建关键字:答案字典来节省一些复杂性。

keywords = {'cf': 'Hello! how can i help you', 'key2': 'Answer2'}

class EchoBot(Client):
def onMessage(self, author_id, message_object, thread_id, thread_type, **kwargs):
self.markAsDelivered(thread_id, message_object.uid)
self.markAsRead(thread_id)

log.info("{} from {} in {}".format(message_object, thread_id, thread_type.name))

if author_id != self.uid:
for word in message_object.text.split():
try:
self.send(Message(text=keywords[word]), thread_id=thread_id, thread_type=ThreadType.USER)
print(word + "is in the list!")
except KeyError:
print(word + "is not in the list!")

关于Python 3 : find item in list and answer based on that,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51731698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com