Хэлп устал уже гуглить, что то нашел, тестил в другом коде работало, тут ошибку выдает AttributeError: 'NoneType' object has no attribute 'text'
Пожалуйста простым языком
w_info находится в #Ветер описание
@bot.message_handler(content_types=['text'])
def lalala(message):
asd = 'кек'
markup_inline = types.InlineKeyboardMarkup(row_width=1)
item_weather = types.InlineKeyboardButton(text = 'Погода', callback_data = 'weather')
item_1 = types.InlineKeyboardButton(text = 'В разработке', callback_data = 'В разработке')
item_2 = types.InlineKeyboardButton(text = 'кек', callback_data = 'кек')
if message.text == '/start':
markup_inline.add(item_weather, item_1, item_2)
bot.send_message(message.chat.id, 'Привет, вот что умею', reply_markup = markup_inline)
else:
bot.send_message(message.chat.id, 'Нажми /start')
@bot.callback_query_handler(func = lambda call: True)
def answer(call):
# keyboard
markup_reply = types.ReplyKeyboardMarkup(resize_keyboard=True)
item_lipetsk = types.KeyboardButton("Липецк")
item_moscow = types.KeyboardButton("Москва")
item_voronesh = types.KeyboardButton("Воронеж")
item_end = types.KeyboardButton("Назад")
if call.data == 'weather':
markup_reply.add(item_lipetsk, item_moscow, item_voronesh, item_end)
bot.send_message(call.message.chat.id, 'Напиши город или выбери из списка', reply_markup = markup_reply)
bot.register_next_step_handler(call.message, get_weather);
elif call.data == 'В разработке':
bot.send_message(call.message.chat.id, 'В разработке ')
sti = open('D:\\qwe\\AnimatedSticker.tgs', 'rb')
bot.send_sticker(call.message.chat.id, sti)
elif call.data == 'wind':
bot.send_message(call.message.chat.id, get_weather(None, 'inline'))
# Погода
def get_weather(message, f=None):
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM('dcad76afa495129ec79e7e217da53307', config_dict)
mgr = owm.weather_manager()
observation = owm.weather_manager().weather_at_place(message.text)
w = observation.weather
# Температура
temp = w.temperature('celsius')
t1 = temp ['temp'] # Температура
t2 = temp ['feels_like'] # Ощущается как
t1r = round(t1)
t2r = round(t2)
# Статус (Ясно, пасмурно, дождь)
w.detailed_status
# Статус смайлы
if w.detailed_status == 'облачно с прояснениями':
s2 = 'Облачно с прояснениями ⛅️'
elif w.detailed_status == 'переменная облачность':
s2 = 'Переменная облачность ⛅️'
elif w.detailed_status == 'небольшой дождь':
s2 = 'Небольшой дождь '
elif w.detailed_status == 'небольшая облачность':
s2 = 'Небольшая облачность '
elif w.detailed_status == 'туман':
s2 = 'Туман '
elif w.detailed_status == 'ясно':
s2 = 'Ясно ☀️'
elif w.detailed_status == 'пасмурно':
s2 = 'Пасмурно ☁️'
elif w.detailed_status == 'дождь':
s2 = 'Дождь '
elif w.detailed_status == 'сильный дождь':
s2 = 'Сильный дождь '
elif w.detailed_status == 'гроза':
s2 = 'Гроза ⛈'
elif w.detailed_status == 'снег':
s2 = 'Снег '
else:
s2 = w.detailed_status
# Ветер
wind = w.wind()
w1 = wind['speed'] # Скорость
w1r = round(w1)
#w2 = wind['gust'] # Порывы
w3 = wind['deg'] # Направление в градусах
w.humidity
w.rain
# Направление ветра
A = ['С ⬇️', 'СВ ↙️', 'В ⬅️', 'ЮВ ↖️', 'Ю ⬆️', 'ЮЗ ↗️', 'З ➡️', 'СЗ ↘️','С ⬇️']
deg = w3
B = deg/45
C = round(B)
w4 = (A[C])
# Скорость ветра смайлы
# Штиль
if w1 <= 0:
w_smile = ' '
# Тихий
elif w1 <= 2:
w_smile = ' '
# Легкий
elif w1 <= 3:
w_smile = ' '
# Слабый
elif w1 <= 5:
w_smile = ' '
# Умеренный
elif w1 <= 7:
w_smile = ' '
#Свежий
elif w1 <= 11:
w_smile = ' '
#Сильный
elif w1 <= 14:
w_smile = ' '
#Крепкий
elif w1 <= 17:
w_smile = ' '
#Очень Крепкий
elif w1 <= 21:
w_smile = ' '
#Шторм
elif w1 <= 24:
w_smile = ' '
#Сильный Шторм
elif w1 <= 28:
w_smile = ' '
#Жесткий Шторм
elif w1 <= 33:
w_smile = ' '
#Ураган
elif w1 > 33:
w_smile = ' '
# Ветер описание
# Штиль
if w1 <= 0:
w_info = 'Безветрие. Дым поднимается вертикально, листья деревьев неподвижны.'
# Тихий
elif w1 <= 2:
w_info = 'Направление ветра заметно по относу дыма, но не по флюгеру'
# Легкий
elif w1 <= 3:
w_info = 'Движение ветра ощущается лицом, шелестят листья, приводится в движение флюгер'
# Слабый
elif w1 <= 5:
w_info = 'Листья и тонкие ветви деревьев всё время колышутся, ветер развевает лёгкие флаги'
# Умеренный
elif w1 <= 7:
w_info = 'Ветер поднимает пыль и мусор, приводит в движение тонкие ветви деревьев'
#Свежий
elif w1 <= 11:
w_info = 'Качаются тонкие стволы деревьев, движение ветра ощущается рукой'
#Сильный
elif w1 <= 14:
w_info = 'Качаются толстые сучья деревьев, гудят телеграфные провода'
#Крепкий
elif w1 <= 17:
w_info = 'Гнутся стволы деревьев, трудно идти против ветра.'
#Очень Крепкий
elif w1 <= 21:
w_info = ' Ветер ломает сучья деревьев, идти против ветра очень трудно'
#Шторм
elif w1 <= 24:
w_info = 'Небольшие повреждения, ветер начинает разрушать крыши зданий'
#Сильный Шторм
elif w1 <= 28:
w_info = 'Значительные разрушения строений, ветер вырывает деревья с корнем'
#Жесткий Шторм
elif w1 <= 33:
w_info = 'Большие разрушения на значительном пространстве. Наблюдается очень редко'
#Ураган
elif w1 > 33:
w_info = 'Огромные разрушения, серьезно повреждены здания, строения и дома, деревья вырваны с корнями, растительность уничтожена.'
# Итог
answer = 'Погода сейчас\n\n'+message.text.upper()+'\nТемпература: '+ str(t1r) + ' С°,\nПо ощущению: '+ str(t2r) + ' C°\n' + s2 + '\nCкорость ветра: ' + str(w1r) + ' м/с' + w_smile + '\nНаправление ветра: ' + w4
if f == 'inline':
w_info
return w_info
else:
markup_wind = types.InlineKeyboardMarkup(row_width=1)
item_wind = types.InlineKeyboardButton(text = 'Ветер', callback_data = 'wind')
if message.text == message.text:
markup_wind.add(item_wind)
bot.send_message(message.chat.id, answer, reply_markup = markup_wind);