Форум сайта python.su
Я хочу соединить два кода, добавив эту функцию к телеграм боту
Но выходит ошибка.
Вотан код пагоды:
from pyowm import OWM from pyowm.utils import config as cfg from colorama import init from colorama import Fore, Back, Style # используйте Colorama, чтобы заставить Termcolor работать и на Windows init() print( Fore.BLACK) print( Back.YELLOW) config = cfg.get_default_config() config['language'] = 'ru' place = input("Какой город/страна?: ") print( Back.CYAN) owm = OWM('2302a1072316c2a336ceb0accc9265c9', config) mgr = owm.weather_manager() observation = mgr.weather_at_place(place) w = observation.weather # извлечение из словаря dict['key'] temp = w.temperature('celsius')['temp'] speed = w.wind()['speed'] # w.detailed_status - это строка, не метод print( "В городе " + (place) + " сейчас " + w.detailed_status + "!") print( "температура в районе " + str(temp)) print( "Скорость ветра " + str(speed)) print( "Влажность " + str(w.humidity)) # сначала нужна проверка < 20 if temp < 20: print( "Сейчас ппц как холодно! оденься очень тепло" ) elif temp < 10: print( "Сейчас холодно, желательно одеться по теплее" ) else: print( "Температура нормальная, одевай что хочешь " )
import telebot bot = telebot.TeleBot("1732855264:AAGYkxxK_sPhcBi_5jzYYi72DTOWfqx6jFY") @bot.message_handler( content_types=['text'] ) def send_echo( message ): bot.send_message(message.chat.id, message.text) bot.polling( none_stop = True )
from pyowm import OWM from pyowm.utils import config as cfg import telebot owm = OWM('2302a1072316c2a336ceb0accc9265c9', config) bot = telebot.TeleBot("1732855264:AAGYkxxK_sPhcBi_5jzYYi72DTOWfqx6jFY") @bot.message_handler( content_types=['text'] ) def send_echo( message ): mgr = owm.weather_manager() observation = mgr.weather_at_place( message.text ) w = observation.weather # извлечение из словаря dict['key'] temp = w.temperature('celsius')['temp'] speed = w.wind()['speed'] # w.detailed_status - это строка, не метод answer = "В городе " + message.text + " сейчас " + w.detailed_status + "!" + "\n" answer += "температура в районе " + str(temp) + "\n\n" # сначала нужна проверка < 20 if temp < 20: answer += "Сейчас ппц как холодно! оденься очень тепло" elif temp < 10: answer += "Сейчас холодно, желательно одеться по теплее" else: answer += "Температура нормальная, одевай что хочешь" bot.send_message(message.chat.id, message.text) bot.polling( none_stop = True )
Отредактировано Aibek132 (Апрель 25, 2021 11:34:41)
Офлайн
Aibek132Ты код определения погоды оставь в отдельном файле, например weather.py . В самом файле определения погоды сделай функцию, которая определяет погоду и возвращает нужную строку (не через print, а через return), например get_weather_info() . После этого ты этот файл weather.py импортируешь в своём скрипте, где у тебя Telegram-бот и вызываешь у этого импортированного скрипта функцию просто, которая определяет погоду и возвращает строку.
Я хочу соединить два кода, добавив эту функцию к телеграм боту
import weather ... def send_echo(message): ... answer = weather.get_weather_info() ...
Отредактировано py.user.next (Апрель 26, 2021 00:33:24)
Офлайн