[英]Python JSON returning None value (Telegram API)
我试图返回加入电报组的新成员的用户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)
返回我的数据,第二个print(update['message']['from'])
返回我的数据,但是当我想返回第三个print时,我得到的返回值为none。 最后打印给我一个错误。
第一和第二张打印的类型是:
<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'}}
有人可以帮助我解决此问题,并回答为什么我没有输出的问题。 谢谢
作为电报源,这里有一个to_dict
方法,您可以从Message类中获取字典。我认为这是您可以做的。
def new_chat_members(self, bot, update):
message_dictionary = update['message'].to_dict()
print(message_dictionary.get('from'))
您可以在telegram.update.Update
和telegram.update.Message
类中扩展dict
,例如:
确保使用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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.