Странные ошибки в коде"Python" телеграм-бота

Gordey

Новичок
Пользователь
Май 8, 2020
8
0
1
Python:
import pyowm
import telebot

owm = pyowm.OWM('e283ed4d92542d2fe59b764976db080b')
bot = telebot.TeleBot("1183976758:AAGmi5bWnUn38oJrJO7r6x6wijKV_LUBhQ0")


@bot.message_handler(content_types=['text'])
def send_echo(text):

observation = owm.weather_at_place(message.text)

w = observation.get_weather()
temp: object = w.get_temperature('celsius')["temp"]

answer =  "В городе " + message.text + " Сейчас " + w.get_detailed_status() + "\n"
answer += "Температура сейчас в районе " + str(temp) + "\n\n"
if temp < 10:
     answer += "Пипец как холодно"
elif temp < 20:
     answer += "Холодновато"
else:
    answer += "Тепло"
w = observation.get_weather()
bot.send_message(message.chat.id, answer)

bot.polling(none_stop=True)
 

borntohack

змееуст
Команда форума
Модератор
Апр 22, 2020
78
62
18
39
Москва, РФ
А где же странные ошибки?
 

Gordey

Новичок
Пользователь
Май 8, 2020
8
0
1
А где же странные ошибки?
Честно сам не знаю ну программа и Idle говорит фигня исправляй
 

Вложения

  • Снимок экрана (44).png
    Снимок экрана (44).png
    192,6 КБ · Просмотры: 7

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Честно сам не знаю ну программа и Idle говорит фигня исправляй
Проблема с отступами (у вас в коде их нет). Нужно их поставить:
Python:
import pyowm
import telebot

owm = pyowm.OWM('e283ed4d92542d2fe59b764976db080b')
bot = telebot.TeleBot("1183976758:AAGmi5bWnUn38oJrJO7r6x6wijKV_LUBhQ0")


@bot.message_handler(content_types=['text'])
def send_echo(text):

    observation = owm.weather_at_place(message.text)

    w = observation.get_weather()
    temp: object = w.get_temperature('celsius')["temp"]

    answer =  "В городе " + message.text + " Сейчас " + w.get_detailed_status() + "\n"
    answer += "Температура сейчас в районе " + str(temp) + "\n\n"
    if temp < 10:
         answer += "Пипец как холодно"
    elif temp < 20:
         answer += "Холодновато"
    else:
        answer += "Тепло"
    w = observation.get_weather()
    bot.send_message(message.chat.id, answer)

bot.polling(none_stop=True)
 

Gordey

Новичок
Пользователь
Май 8, 2020
8
0
1
Проблема с отступами (у вас в коде их нет). Нужно их поставить:
Python:
import pyowm
import telebot

owm = pyowm.OWM('e283ed4d92542d2fe59b764976db080b')
bot = telebot.TeleBot("1183976758:AAGmi5bWnUn38oJrJO7r6x6wijKV_LUBhQ0")


@bot.message_handler(content_types=['text'])
def send_echo(text):

    observation = owm.weather_at_place(message.text)

    w = observation.get_weather()
    temp: object = w.get_temperature('celsius')["temp"]

    answer =  "В городе " + message.text + " Сейчас " + w.get_detailed_status() + "\n"
    answer += "Температура сейчас в районе " + str(temp) + "\n\n"
    if temp < 10:
         answer += "Пипец как холодно"
    elif temp < 20:
         answer += "Холодновато"
    else:
        answer += "Тепло"
    w = observation.get_weather()
    bot.send_message(message.chat.id, answer)

bot.polling(none_stop=True)
я Попробовал исправленный вами код с отступами...
Вылезла другая ошибка... как понял это связанно с именованием?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
я Попробовал исправленный вами код с отступами...
Вылезла другая ошибка... как понял это связанно с именованием?
Текст ошибке напишите.
 

Gordey

Новичок
Пользователь
Май 8, 2020
8
0
1
Текст ошибке напишите.
2020-05-08 20:54:17,200 (util.py:68 WorkerThread1) ERROR - TeleBot: "NameError occurred, args=("name 'message' is not defined",)
Traceback (most recent call last):
File "D:\python work\Ferst\venv\lib\site-packages\telebot\util.py", line 62, in run
task(*args, **kwargs)
File "D:/python work/4.py", line 11, in send_echo
observation = owm.weather_at_place(message.text)
NameError: name 'message' is not defined
"
Traceback (most recent call last):
File "D:/python work/4.py", line 27, in <module>
bot.polling(none_stop=True)
File "D:\python work\Ferst\venv\lib\site-packages\telebot\__init__.py", line 415, in polling
self.__threaded_polling(none_stop, interval, timeout)
File "D:\python work\Ferst\venv\lib\site-packages\telebot\__init__.py", line 439, in __threaded_polling
self.worker_pool.raise_exceptions()
File "D:\python work\Ferst\venv\lib\site-packages\telebot\util.py", line 111, in raise_exceptions
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
File "D:\python work\Ferst\venv\lib\site-packages\six.py", line 703, in reraise
raise value
File "D:\python work\Ferst\venv\lib\site-packages\telebot\util.py", line 62, in run
task(*args, **kwargs)
File "D:/python work/4.py", line 11, in send_echo
observation = owm.weather_at_place(message.text)
NameError: name 'message' is not defined
 

Вложения

  • Снимок экрана (45).png
    Снимок экрана (45).png
    352,6 КБ · Просмотры: 5

borntohack

змееуст
Команда форума
Модератор
Апр 22, 2020
78
62
18
39
Москва, РФ
Это потому что у вас аргумент для функции - именуется text
А вы уже используете message, который нигде не определен
 

Gordey

Новичок
Пользователь
Май 8, 2020
8
0
1
Это потому что у вас аргумент для функции - именуется text
А вы уже используете message, который нигде не определен
как лучше сделать не подскажите? или если возможно то исправить код, буду признателен
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
как лучше сделать не подскажите? или если возможно то исправить код, буду признателен
Text на message замените. Эту строку:
Python:
def send_echo(text):
замените на такую:
Python:
def send_echo(message):
 

Gordey

Новичок
Пользователь
Май 8, 2020
8
0
1
Text на message замените. Эту строку:
Python:
def send_echo(text):
замените на такую:
Python:
def send_echo(message):
Спасибо, недавно сам понял)
 

Форум IT Специалистов