2017-01-04 9 views
1

私はfbchatライブラリに関する2つの主な質問があります。最初は仮説であり、2番目はコード/関数に基づいています。Python fbchatライブラリの質問

私の最初の質問は、ユーザーがオンラインのときにfbchatに戻ることができますか?私はこのコードを使用する場合:これらのいずれかの措置だった場合、私は思っていた

{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'} 

persons = client.getUsers(name) 
for person in persons: 
    person_info = client.getUserInfo(person.uid) 
    if person_info['is_friend'] == True: 
     print 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) 

これはエラーです:

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 pageが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> 

何故でしょうか?私は様々なタスクをカバーする個人のbot/AIを構築しています。

編集: fsocietyの提案、DIR(メッセージ)@使い方は次の値を返します。

​​

あなたは "身体" が立ち上がる見ることができるように。私は今なぜエラーが発生するのかについてもっと混乱しています。また、なぜ最初のもの(person_info)がこのメッセージ(メッセージ)と異なるのですか?私はそれもdictであると期待しています(したがって、キーを呼び出すことができます)。

編集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 

とget:出力として

October 10, 2016 7:16 pm 

を。 message.bodyの問題が私またはライブラリであるかどうかは不明です。あなたが考えることができる任意の回避策?

+0

body属性が実際に存在するかどうか確認するためにdir(メッセージ)を試してください。 – fsociety

+0

ありがとう!それが返すものはメインポストに編集されています。 "body"は、dir(メッセージ)を出力すると印刷されるものです。私はdirコマンドについて知らなかった。非常に便利! – TobyTobyo

+0

'print(message.body)'についてどうですか? –

答えて

0

はそれを考え出した:

を友人がついにメッセンジャーに参加すると、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。 thisをリンクしたことがないなら、私はそれを理解していないでしょう。ライブラリファイル自体を調べて、なぜ自分のコードを見るのと比べてエラーが発生したのかを知ることができました。