解码JSON时出现KeyError问题

时间:2019-09-28 12:03:58

标签: python python-3.x python-requests

我正在RPI上使用python 3制作电报机器人,对于HTTP请求,我使用了请求库 我编写了应回答&start命令的代码:

import requests as rq

updateURL="https://api.telegram.org/bot925438333:AAGEr3pf3c4Fz91sL79mwJ6aGYm-Y6BM7_4/getUpdates"

while True:

   r=rq.post(url = updateURL)

   data = r.json()

   messageArray = data['result']
   lastMsgID=len(messageArray)-1
   lastMsgData = messageArray[lastMsgID]
   lastMsgSenderID = lastMsgData['message']['from']['id']
   lastMsgUsername = lastMsgData['message']['from']['username']
   lastMsgText = lastMsgData["message"]["text"]
   lastMsgChatType = lastMsgData['message']['chat']['type']

   if lastMsgChatType == "group":
        lastMsgGroupID = lastMsgData['message']['chat']['id']

   if lastMsgText == "&start":
      if lastMsgChatType == "private":
        URL="https://api.telegram.org/bot925438333:AAGEr3pf3c4Fz91sL79mwJ6aGYm-Y6BM7_4/sendMessage"

        chatText="Witamy w KozelBot"
        chatID=lastMsgSenderID
        Params={"chat_id":chatID,"text":chatText}

        rs = rq.get(url = URL, params = Params)

      if lastMsgChatType == "group":
        URL="https://api.telegram.org/bot925438333:AAGEr3pf3c4Fz91sL79mwJ6aGYm-Y6BM7_4/sendMessage"

        chatText="Witamy w KozelBot"
        chatID=lastMsgGroupID
        Params={"chat_id":chatID,"text":chatText}

        rs = rq.get(url = URL, params = Params)

但是代码输出错误:

  

文件“ /home/pi/telegramResponse.py”,第16行,在       lastMsgText = lastMsgData [“ message”] [“ text”]
  KeyError:“文本”

我不知道如何解决此问题,因为此片段在我的其他脚本中正常工作! 请帮忙!

1 个答案:

答案 0 :(得分:0)

原因很简单! 程序找到的最后一条消息不包含任何文本,因为它是新用户通知。由于最后一条消息没有['text']参数,因此发生了KeyError。