TelegramBot error. TypeError: 'NoneType' object is not subscritable

TelegramBot error. TypeError: 'NoneType' object is not subscritable

import requests
import time
import json

class TelegramBot:
  def __init__(self):
    token = 'xxxxxxx'
    self.url_base = f'api.telegram.org/bot{token}/'
    #Iniciar o bot
  def Iniciar(self):
    update_id = None
    while True:
     atualizacao = self.obter_mensagens(update_id)
     mensagens = atualizacao['result']
     if mensagens:
       for mensagem in mensagens:
        update_id = mensagem['update_id']
        chat_id = mensagem['message']['from']['id']
        resposta = self.criar_resposta()
        self.responder(resposta,chat_id)
    #Obter mensagens
  def obter_mensagens(self,update_id):
    link_requisicao = f'{self.url_base}getUpdates?timeout=100'
    if update_id:
      link_requisicao = f'{link_requisicao}&offset={update_id + 1}'
      resultado = requests.get(link_requisicao)
      return json.loads(resultado.content)
    #Criar uma resposta
  def criar_respostas(self):
    return 'Olá! Eu sou o EletroBot! Fui criado com a intenção de ajudar os estudantes de eletroeletrônica à passarem pelo curso! Em que posso ajudar?'
    #Responder
  def responder(self,resposta,chat_id):
    #Enviar
    link_de_envio = f'{self.url_base}sendMessage?chat_id={chat_id}&text={resposta}'
    requests.get(link_de_envio)

bot = TelegramBot()
bot.Iniciar()

我正在尝试构建电报机器人,但它没有保留 运行,我无法解决此错误。有时它只是启动并崩溃并出现以下错误:

我该如何解决这个问题?

您的设计没有考虑 self.obter_mensagens(update_id) returns None 的情况。您从 Noneupdate_id 开始,所以看起来您是第一次 运行 self.obter_mensagens,很可能 return None.在对其进行任何下标之前,您应该检查 atualizacao 不是 None

您可以这样做:

...
atualizacao = self.obter_mensagens(update_id)
if atualizacao is not None:
    mensagens = atualizacao['result']
else:
    return
if mensagens:
    ...