电报机器人错误。TypeError:“非类型”对象不可订阅

2024-10-01 17:27:39 发布

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

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()

我正在尝试建立一个电报机器人,但它不能继续运行,我无法解决这个错误。有时它只是启动并崩溃,出现以下错误:

error image

我怎样才能解决这个问题


Tags: importselfidurlbasedefbotchat
1条回答
网友
1楼 · 发布于 2024-10-01 17:27:39

您的设计没有考虑self.obter_mensagens(update_id)返回None的情况。您以Noneupdate_id开始运行,因此第一次运行self.obter_mensagens时,它很可能会返回None。在对atualizacao进行任何订阅之前,应该检查它是否不是None

以下是您如何做到这一点:

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

相关问题 更多 >

    热门问题