Python JSON 返回 None 值(电报 API)
Python JSON returning None value (Telegram API)
我正在尝试 return 加入电报组的新成员的用户 ID,我可以获得 JSON 数据,但我无法从更深层次检索值:
代码:
def new_chat_members(self, bot, update):
print(update)
print(update['message'])
print(update['message']['from'])
print(update['message'].get('from'))
所以第一个 print(update)
return 是我的数据,第二个 print(update['message']['from'])
return 也是我的数据,但是当我想 return第三次打印,我得到 return 值 none。最后打印 return 给我一个错误。
第一次和第二次打印的类型是:
<class 'telegram.update.Update'>
<class 'telegram.message.Message'>
第一次打印的输出:
{'update_id': 130834599, 'message': {'message_id': 193, 'date': 1574900654, 'chat': {'id': -1001323635373, 'type': 'supergroup', 'title': 'testbot'}, 'entities': [], 'caption_entities': [], 'photo': [], 'new_chat_members': [{'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}], 'new_chat_photo': [], 'delete_chat_photo': False, 'group_chat_created': False, 'supergroup_chat_created': False, 'channel_chat_created': False, 'from': {'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}}, '_effective_message': {'message_id': 193, 'date': 1574900654, 'chat': {'id': -1001323635373, 'type': 'supergroup', 'title': 'testbot'}, 'entities': [], 'caption_entities': [], 'photo': [], 'new_chat_members': [{'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}], 'new_chat_photo': [], 'delete_chat_photo': False, 'group_chat_created': False, 'supergroup_chat_created': False, 'channel_chat_created': False, 'from': {'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}}}
第二次打印的输出:
{'message_id': 188, 'date': 1574900008, 'chat': {'id': -1001323635373, 'type': 'supergroup', 'title': 'testbot'}, 'entities': [], 'caption_entities': [], 'photo': [], 'new_chat_members': [{'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}], 'new_chat_photo': [], 'delete_chat_photo': False, 'group_chat_created': False, 'supergroup_chat_created': False, 'channel_chat_created': False, 'from': {'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}}
有人可以帮我解决这个问题并回答为什么我得到 none 输出。谢谢
您可以在 telegram.update.Update
和 telegram.update.Message
类 中扩展 dict
,例如:
确保使用字典语法添加属性...
class Update(dict):
def __init__(self, message):
self['message'] = message
或者你可以自己实现一个get方法:
class Update:
def get(self, key):
if hasattr(self, key):
return getattr(self, key)
As telegram source here,有一个to_dict
方法,可以从消息中获取字典class.I认为这是你可以做的。
def new_chat_members(self, bot, update):
message_dictionary = update['message'].to_dict()
print(message_dictionary.get('from'))
我正在尝试 return 加入电报组的新成员的用户 ID,我可以获得 JSON 数据,但我无法从更深层次检索值:
代码:
def new_chat_members(self, bot, update):
print(update)
print(update['message'])
print(update['message']['from'])
print(update['message'].get('from'))
所以第一个 print(update)
return 是我的数据,第二个 print(update['message']['from'])
return 也是我的数据,但是当我想 return第三次打印,我得到 return 值 none。最后打印 return 给我一个错误。
第一次和第二次打印的类型是:
<class 'telegram.update.Update'>
<class 'telegram.message.Message'>
第一次打印的输出:
{'update_id': 130834599, 'message': {'message_id': 193, 'date': 1574900654, 'chat': {'id': -1001323635373, 'type': 'supergroup', 'title': 'testbot'}, 'entities': [], 'caption_entities': [], 'photo': [], 'new_chat_members': [{'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}], 'new_chat_photo': [], 'delete_chat_photo': False, 'group_chat_created': False, 'supergroup_chat_created': False, 'channel_chat_created': False, 'from': {'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}}, '_effective_message': {'message_id': 193, 'date': 1574900654, 'chat': {'id': -1001323635373, 'type': 'supergroup', 'title': 'testbot'}, 'entities': [], 'caption_entities': [], 'photo': [], 'new_chat_members': [{'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}], 'new_chat_photo': [], 'delete_chat_photo': False, 'group_chat_created': False, 'supergroup_chat_created': False, 'channel_chat_created': False, 'from': {'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}}}
第二次打印的输出:
{'message_id': 188, 'date': 1574900008, 'chat': {'id': -1001323635373, 'type': 'supergroup', 'title': 'testbot'}, 'entities': [], 'caption_entities': [], 'photo': [], 'new_chat_members': [{'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}], 'new_chat_photo': [], 'delete_chat_photo': False, 'group_chat_created': False, 'supergroup_chat_created': False, 'channel_chat_created': False, 'from': {'id': 677494285, 'first_name': 'Mahdi', 'is_bot': False, 'last_name': 'Khan', 'username': 'Samstestacc', 'language_code': 'en'}}
有人可以帮我解决这个问题并回答为什么我得到 none 输出。谢谢
您可以在 telegram.update.Update
和 telegram.update.Message
类 中扩展 dict
,例如:
确保使用字典语法添加属性...
class Update(dict):
def __init__(self, message):
self['message'] = message
或者你可以自己实现一个get方法:
class Update:
def get(self, key):
if hasattr(self, key):
return getattr(self, key)
As telegram source here,有一个to_dict
方法,可以从消息中获取字典class.I认为这是你可以做的。
def new_chat_members(self, bot, update):
message_dictionary = update['message'].to_dict()
print(message_dictionary.get('from'))