[英]Python fbchat Library Questions
關於fbchat庫我有兩個主要問題。 第一個是假設的,第二個是基於代碼/功能的。
我的第一個問題是,當用戶在線時,fbchat可以返回嗎? 當我使用這段代碼時:
persons = client.getUsers(name)
for person in persons:
person_info = client.getUserInfo(person.uid)
if person_info['is_friend'] == True:
print person_info
我得到這樣的東西(用尊重隱私的方式替換所有信息與通用的東西):
{u'alternateName': u'', u'name': u'Name', u'firstName': u'Name', u'gender': 2, u'thumbSrc': u'url', u'uri': u'url', u'searchTokens': [u'Name', u'Name'], u'dir': None, u'is_friend': True, u'numbers/letters': number, u'mThumbSrcSmall': None, u'is_nonfriend_messenger_contact': False, u'type': u'friend', u'id': u'number', u'mThumbSrcLarge': None, u'vanity': u'messenger_id'}
我想知道其中一個是否是衡量這個人是否上網的方法,或者是如何做到的。
第二個問題是關於閱讀信息。 使用此代碼,我收到一個錯誤(粘貼在代碼下面)。
def check_message():
client = login()
friend = "Name"
last_messages = client.getThreadInfo(client.getUsers(friend)[0].uid, 0)
last_messages.reverse()
for message in last_messages:
print(message.body)
這是錯誤:
Traceback (most recent call last):
File "C:/Users/lukec/PycharmProjects/Sysgen_AI/test.py", line 32, in <module>
check_message()
File "C:/Users/lukec/PycharmProjects/Sysgen_AI/test.py", line 30, in check_message
print(message.body)
AttributeError: Message instance has no attribute 'body'
但是fb chat pypi頁面說的是message.body確實存在...
另外,當我最后刪除.body時,我得到了這個輸出:
<fbchat.models.Message instance at value>
<fbchat.models.Message instance at value>
<fbchat.models.Message instance at value>
<fbchat.models.Message instance at value>
<fbchat.models.Message instance at value>
<fbchat.models.Message instance at value>
<fbchat.models.Message instance at value>
<fbchat.models.Message instance at value>
<fbchat.models.Message instance at value>
<fbchat.models.Message instance at value>
<fbchat.models.Message instance at value>
知道為什么嗎? 我正在構建一個涵蓋各種任務的個人機器人/人工智能。
編輯:使用@ fsociety的建議,dir(message)返回以下內容:
['__doc__', '__init__', '__module__', u'action_type', u'attachments', u'author', u'author_email', u'body', u'commerce_message_type', u'customizations', u'ephemeral_ttl_mode', u'folder', u'forward_count', u'forward_message_ids', u'has_attachment', u'is_filtered_content', u'is_filtered_content_account', u'is_filtered_content_bh', u'is_filtered_content_invalid_app', u'is_filtered_content_quasar', u'is_forward', u'is_sponsored', u'is_spoof_warning', u'is_unread', u'message_id', u'message_source', u'meta_ranges', u'montage_reply_data', u'offline_threading_id', u'other_user_fbid', u'platform_xmd', u'profile_ranges', u'ranges', u'raw_attachments', u'reactions', u'skip_bump_thread', u'source', u'source_tags', u'subject', u'tags', u'thread_fbid', u'thread_id', u'threading_id', u'timestamp', u'timestamp_absolute', u'timestamp_datetime', u'timestamp_relative', u'timestamp_time_passed']
正如你所見,“身體”出現了。 我現在對錯誤發生的原因更加困惑。 另外,為什么第一個(person_info)與這個(消息)不同? 我希望它也是一個字典(因此可以調用一個密鑰)。
編輯2:使用以下內容,我收到一個錯誤:
def check_message():
client = login()
friend = "Name"
last_messages = client.getThreadInfo(client.getUsers(friend)[0].uid, 0)
last_messages.reverse()
for message in last_messages:
print(message['body'])
錯誤是:
File "C:/Users/lukec/PycharmProjects/Sysgen_AI/test.py", line 33, in <module>
check_message()
File "C:/Users/lukec/PycharmProjects/Sysgen_AI/test.py", line 31, in check_message
print(message['body'])
AttributeError: Message instance has no attribute '__getitem__'
思考?
編輯3:打印消息的其他屬性有效,而不是正文...例如,我可以
print message.timestamp_datetime
得到:
October 10, 2016 7:16 pm
作為輸出。 不確定message.body問題是我還是庫。 你能想到的任何變通方法嗎?
弄清楚了:
當一個朋友最終加入Messenger時,Facebook會向你發出警告,說明如此。 fbchat將此視為一條消息,並嘗試緩存並解析它,但卻因為沒有正文而被絆倒。
使用這個:
for Message in last_messages:
message_time = Message.timestamp_datetime
try:
message_body = Message.body
print message_time
print message_body
except:
pass
它傳遞了第一個沒有正文的消息的問題,並可以繼續打印后續消息。
非常感謝你的幫助@SancaKembang。 我也不會想到這一點,如果你從來沒有鏈接這個 。 它讓我自己查看庫文件,看看為什么錯誤產生而不僅僅是查看我的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.