У меня есть простой Telegram-бот на питоне, который работал нормально, я запустил его сегодня и получил сообщение об ошибке для определенной страны, которое говорит следующее:
return self.callback(update, context)
File "main.py", line 21, in stats
data['confirmed'],
TypeError: 'NoneType' object is not subscriptable
Вот мой код;
from telegram import ReplyKeyboardMarkup
from telegram.ext import Updater, CommandHandler, ConversationHandler, MessageHandler, Filters
from covid19 import Covid19
buttons = ReplyKeyboardMarkup([['Statistics'], ['World']], resize_keyboard=True)
covid = Covid19()
TOKEN = '**********'
def start(update, context):
update.message.reply_html(
'<b>Greetings, {}</b>\n \n some text'.format(update.message.from_user.first_name), reply_markup=buttons)
return 1
def stats(update, context):
data = covid.getByCountryCode('UA')
update.message.reply_html(
'???????? <b>In Ukraine</b>\n \n<b>Infected:</b> {}\n<b>Recovered:</b> {}\n<b>Dead:</b> {}'.
format(
data['confirmed'],
data['recovered'],
data['deaths']), reply_markup=buttons)
def world(update, context):
data = covid.getLatest()
update.message.reply_html(
'???? <b>World</b>\n \n<b>Infected:</b> {}\n<b>Recovered:</b> {}\n<b>Dead:</b> {}'.format(
"{:,}".format(data['confirmed']),
"{:,}".format(data['recovered']),
"{:,}".format(data['deaths'])
), reply_markup=buttons)
updater = Updater(TOKEN, use_context=True)
conv_handler = ConversationHandler(
entry_points = [CommandHandler('start', start)],
states={
1: [MessageHandler(Filters.regex('^(Statistics)$'), stats),
MessageHandler(Filters.regex('^(World)$'), world),
]
},
fallbacks=[MessageHandler(Filters.text, start)]
)
updater.dispatcher.add_handler(conv_handler)
updater.start_polling()
updater.idle()
После /start
появляется две кнопки - Статистика и Мир, когда я нажимаю или набираю Мир, он работает нормально, когда я нажимаю Статистика, появляется та ошибка, о которой я упоминал выше.
Так что же не так с моим кодом, пару дней назад он работал, а сейчас что я делаю не так?
Мой вопрос отличается от этого Python Math - TypeError: ' Объект NoneType' не подлежит подписке. У меня Telegram Tracker Bot, который работал днем раньше, а сейчас перестал работать, причина в этой части;
def stats(update, context):
data = covid.getByCountryCode('UA')
update.message.reply_html(
'???????? <b>In Ukraine</b>\n \n<b>Infected:</b> {}\n<b>Recovered:</b> {}\n<b>Dead:</b> {}'.
format(
data['confirmed'],
data['recovered'],
data['deaths']), reply_markup=buttons)
Что тут не так, ошибка может быть такая же но это написано в модулях телеграм и ковид не только математика. Буду признателен, если кто-то исправит мой код.