我正在尝试使用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
答案 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