如何解决TelegramBot 错误 TypeError: 'NoneType' 对象不可订阅
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)
返回 None
的情况。您从 update_id
的 None
开始,因此似乎您第一次运行 self.obter_mensagens
时,它很可能会返回 None
。在对其进行任何下标之前,您应该检查 atualizacao
是否不是 None
。
您可以这样做:
...
atualizacao = self.obter_mensagens(update_id)
if atualizacao is not None:
mensagens = atualizacao['result']
else:
return
if mensagens:
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。