Telegram bot更新到python dict转换

时间:2016-04-06 09:20:57

标签: python json dictionary telegram telegram-bot

我正在尝试使用python从头开始创建Telegram bot。我已完成所有初始步骤并获得了机器人令牌,现在我想要做的是,为了方便操作它发送给我的数据(比如从{{1获取此人的first_name我希望数据整齐地排列成python字典。

当我尝试getupdates时,我得到了这个: /getme 由于b'{"ok":true,"result":{"id":999999999,"first_name":"telebotsrock","username":"sample_bot"}}'在开始时b''在我做json.loads(data)时导致错误(其中数据是上面给出的转换为字符串的东西)。

所以我data[2:-1]删除b''以及json.loads()工作得很好,但当我将/getme更改为{{1}时},弹出一堆新错误。

总而言之,这是一团糟。有人能给我一个干净的方法从机器人获取数据并将其分类为python字典吗?请不要告诉我使用其他语言或只复制现有的机器人框架。

我目前的代码:

/getupdates

此代码正确地将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) 的输出转换为python字典,但在我尝试使用/getme时会出错。

切片之前/getupdates的输出是:

/getupdates

1 个答案:

答案 0 :(得分: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