繁体   English   中英

Python JSON返回无值(电报API)

[英]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.Updatetelegram.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM