簡體   English   中英

Python fbchat庫問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM