2016-04-06 61 views
0

我正嘗試使用python從頭開始創建電報機器人。我完成了所有的初始步驟並獲得了bot令牌,現在我想要做的就是輕鬆處理它發送給我的數據(例如從getupdates方法中獲取first_name的方法)我希望數據排列整齊成一個Python字典。電報機器人更新爲python字典轉換

當我嘗試/getme,我得到這個: b'{"ok":true,"result":{"id":999999999,"first_name":"telebotsrock","username":"sample_bot"}}' 由於b'在開始和'末導致一個錯誤,當我做json.loads(data)(數據高於轉換爲字符串給出的東西)。

所以我做data[2:-1]刪除b''json.loads()作品就好了,但是當我改變/getme/getupdates,一堆新的錯誤彈出。

總而言之,這是一團糟。有人可以給我一個乾淨的方式從機器人獲取數據並將其分類爲Python字典嗎?請不要告訴我使用不同的語言,或只複製現有的bot框架。

我當前的代碼:

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) 

此代碼正確覆羽/getme輸出到一個Python字典,但給人錯誤,當我嘗試/getupdates代替。

/getupdates輸出之前我分析它是:

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"}}]}'

回答

1

這應該爲你工作。您可以使用.decode('utf-8')來擺脫字節前綴。

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

謝謝!這工作 –