如何修复python中的KeyError>KeyError:'message'?

2024-09-28 05:26:06 发布

您现在位置:Python中文网/ 问答频道 /正文

这个错误通常不应该出现,但最近当我运行这个时,这个错误出现了,我不知道如何修复它。 如果有人可以帮助我修复以下代码中的此错误,请执行以下操作:

import requests
import json
from time import sleep

global OFFSET
OFFSET = 0

botToken = ""

global requestURL
global sendURL

requestURL = "http://api.telegram.org/bot" + botToken + "/getUpdates"
sendURL = "http://api.telegram.org/bot" + botToken + "/sendMessage"

def update (url):
    global OFFSET

    try:
        update_raw = requests.get(url + "?offset=" + str(OFFSET))
        update = update_raw.json()
        result = extract_result(update)

        if result != False:
            OFFSET = result['update_id'] + 1
            return result
        else:
            return False

    except requests.exceptions.ConnectionError:
        pass

def extract_result (dict):
    result_array = dict['result']

    if result_array == []:
        return False
    else:
        result_dic = result_array[0]
        return result_dic

def is_callback (dict):
    if 'callback_query' in dict:
        return True

def send_message (chatId, message):
    requests.post(sendURL + "?chat_id=" + str(chatId) + "&text=" + message)

def send_message_button (chatId, message, buttonJSON):
    requests.post(sendURL + "?chat_id=" + str(chatId) + "&reply_markup=" + buttonJSON + "&text=" + message)
    #print (sendURL + "?chat_id=" + str(chatId) + "&reply_markup=" + buttonJSON + "&text=" + message)

while True:
    newmessage = update (requestURL)

    if newmessage != False:

        if is_callback(newmessage) == True:
            userchatid = newmessage['callback_query']['message']['chat']['id']
            usertext = newmessage['callback_query']['message']['text']
            username = newmessage['callback_query']['message']['chat']['first_name']
            callback_data = newmessage['callback_query']['data']

            send_message (userchatid, "Callback from " + callback_data + ", pressed by " + username)

        else:
            userchatid = newmessage['message']['chat']['id']
            usertext = newmessage['message']['text']
            username = newmessage['message']['chat']['first_name']

            if usertext.lower() == "button":
                buttonDict1 = {"text":"Knopf\n" + "hitest", "callback_data":"Knopf"}
                buttonDict2 = {"text":"Knopf2", "callback_data":"Knopf2"}
                buttonArr = {"inline_keyboard":[[buttonDict1, buttonDict2]]}
                send_message_button (userchatid, "Hi " + username, json.dumps(buttonArr))
            else:
                send_message(userchatid, "You said: " + usertext)

    sleep (1)

这是运行此bot后出现的错误

行:67

userchatid=newmessage['message']['chat']['id']

KeyError:“消息”


Tags: textidmessagereturnifdefcallbackchat
1条回答
网友
1楼 · 发布于 2024-09-28 05:26:06

您捕获requests.exceptions.ConnectionError但不处理它(在update函数中),因此现在update不返回False,因为它根本不返回任何内容,并且可以通过检查并导致havock

试着处理这个异常,或者至少在那里放一个print,看看它是否是引起您问题的那个,祝您好运

相关问题 更多 >

    热门问题