2016-04-08 5 views
1

Ich muss alle Details von einem freien Kanal erhalten und es in einer einfachen Textdatei ablegen. Ich bin in der Lage, die Informationen zu erhalten, mit:Wie man eine schlaffe Benutzer-ID von der Antwort liest und den Benutzernamen erhält,

payload = {'token': 'XXXXXX', 'channel': 'XXXXXX' , 'count': '10'} 
r = requests.get('https://slack.com/api/channels.history', params=payload) 
pprint(r.json()) 
k = r.json()for msg in k['messages']: 
    print msg['text'] # this extracts the text field from json 

Dies wird mir die Antwort in json, die wie folgt aussehen:

{u'has_more': False, 
u'is_limited': True, 
u'messages': [{u'text': u'This is not a test!', 
       u'ts': u'1459763505.000003', 
       u'type': u'message', 
       u'user': u'U03FE3Z7D'}, 
       {u'subtype': u'bot_message', 
       u'text': u'This is a test!', 
       u'ts': u'1459750060.000002', 
       u'type': u'message', 
       u'username': u'facsimile_test'}], 
u'ok': True} 

    This is not a test! 
    This is a test! 

Das ist für mich gute Sachen sind .. aber nicht wert, bis ich kennenlernen der Benutzername auch. Ich bin intersted die Benutzer-ID in durchlaufenden Bahn API nachzulassen und den Namen bekommen und danach die ganze Nachrichten in einer Textdatei als

Dumping
-- username1 
     - messages 
-- username2 
     - message 
+0

Erhalten Sie irgendwelche Fehler? Es ist nicht klar, was Sie erreichen wollen. – AKS

+0

Ich bin eigentlich nicht sicher, wie man den Benutzernamen von der Benutzer-ID bekommen, so habe ich nicht den Code – PythonFreak

Antwort

-1

Was du da ist ein Python-Wörterbuch, nicht json.

Versuchen Sie, requests zu verwenden, um eine Anfrage mit der Authentifizierungsinformation des Benutzers zu senden.

resp = requests.get("http://yourslackapiendpoint", auth=("user", "password")) 
data = resp.json() 
# unmarshal JSON to a dict 
d = json.loads(data) 

# loop the dictionary and write to a file 

Wenn Slack API eine andere Auth erfordert (was wahrscheinlich ist), wie auf der requests doc Parameter zu übergeben.

3

Slack bietet eine API endpoint einen Benutzer Informationen erhalten die Benutzer-ID mit:

payload = {'token': 'XXXXXX', 'user': 'XXXXXX'} 
r = requests.get('https://slack.com/api/users.info', params=payload) 

Und von hier aus können Sie das name Feld aus der Antwort erhalten, die die username in-fact ist.

Wenn Sie diese Informationen nicht für einzelne Benutzer erhalten möchten, können Sie auch die users.list erhalten. Und dann erstellen Sie eine Zuordnung zwischen den userid und username, so dass Sie zugreifen können, wenn Sie möchten.

+0

, wie diese "Benutzer-ID" und "Benutzername" zuordnen ich bin im Grunde verwirrt, wo ich die Benutzer-ID und ich lese die Benutzer-ID von ihm und senden Sie eine Anfrage für den Benutzernamen, dann drucken Sie den Benutzernamen und entsprechende Benutzermeldung – PythonFreak

Verwandte Themen