2016-04-06 16 views
0

Python kullanarak sıfırdan bir Telgraf botu oluşturmaya çalışıyorum. Tüm ilk adımları tamamladım ve bot jetonu aldım ve şimdi ne yapmak istediğim, bana gönderdiği verinin kolay manipülasyonu için ('u getupdates yönteminden alıyorum gibi) veriyi düzgün bir şekilde düzenlemek istiyorum bir python sözlüğüne. Telegram bot güncellemeleri python dict dönüşümü

Ben /getme deneyin

, ben olsun bu: b'{"ok":true,"result":{"id":999999999,"first_name":"telebotsrock","username":"sample_bot"}}' yaptığımda sonunda başında b' ve ' bir hata neden olduğundan json.loads(data) (veri bir dizeye dönüştürülür Yukarıda verilen şey olduğu yerlerde).

yüzden sadece iyi b' ve ' ve json.loads() eser çıkarmak için data[2:-1], ama ben /getme /getupdates için değiştirdiğinizde, yeni hataların bir demet açılır.

Sonuç olarak, bu bir karmaşadır. Birisi bana bottan veri almak ve bir python sözlüğüne yazmak için temiz bir yol verebilir mi? Lütfen bana farklı bir dil kullanmamayı veya mevcut bir bot çerçevesini kopyalamama söyleme.

Benim geçerli kod:

from urllib.request import urlopen 
import json 

token="999999999:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
site="https://api.telegram.org/bot"+token 

content=str(urlopen(site+"/getme").read()) 
#content=str(urlopen(site+"/getupdates").read()) 
data=content[2:-1] 
print(data) 
info=json.loads(data) 
print(info) 

Bu kodu doğru bir piton sözlüğe /getme çıktısını coverts, ama bunun yerine /getupdates çalışırken hata iletisi verir. /getupdates ait

Çıktı ben öyle dilim önce: Bu sizin için çalışması gerektiğini

b'{"ok":true,"result":[{"update_id":66666666,\n"message":{"message_id":1,"from":{"id":777777777,"first_name":"Aswin","last_name":"G","username":"MatrixHunter"},"chat":{"id":777777777,"first_name":"Aswin","last_name":"G","username":"MatrixHunter","type":"private"},"date":1459932293,"text":"\\/start"}},{"update_id":88888888,\n"message":{"message_id":2,"from":{"id":777777777,"first_name":"Aswin","last_name":"G","username":"MatrixHunter"},"chat":{"id":777777777,"first_name":"Aswin","last_name":"G","username":"MatrixHunter","type":"private"},"date":1459932298,"text":"Oy"}}]}'

cevap

1

. Bayt önekinden kurtulmak için .decode('utf-8')'u kullanabilirsiniz.

token = "999999999:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
url="https://api.telegram.org/bot" +token + "/getme" 

req = Request(url) 
response = urlopen(req) 
data = response.read().decode('utf-8') 
json_data = json.loads(data) 

print(str(data['ok'])) #should print True 
+0

Teşekkürler! İşe yaradı –

İlgili konular