@Ivanu4

Как сделать так чтобы пользователь вводил город в котором нужно найти погоду?

import telebot
import random
import datetime
import pyowm
from pyowm import OWM
from pyowm.utils.config import get_default_config
from telebot import types

config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM('c6541024768a61e8b09f01e0c656430d', ) # токен погоды
mgr = owm.weather_manager()
place = 'Днепр'
observation = mgr.weather_at_place(place)
w = observation.weather
temp = w.temperature('celsius')['temp']

bot = telebot.TeleBot('1466558022:AAHMU0GWy62ncZF5KZqa9iL6q-dWu28vAq4')

@bot.message_handler(commands=['start'])
def start_message(message):
welcome_sticker = open('welcome.webp', 'rb')
bot.send_sticker(message.chat.id, welcome_sticker)
bot.send_message(message.chat.id, 'Заходи не бойся, выходи не плачь...', reply_markup=markup)

@bot.message_handler(content_types=['text'])
def calendar(message):
weather(message)
randomnum(message)
##код не нужный

@bot.message_handler(commands=['/погода'])
def weather(message):
try:
bot.send_message(message.chat.id, 'В городе ' + place + ' ' + (
str(w.temperature('celsius')['temp']) + ' градуса по Цельсию' + '\n'))
bot.send_message(message.chat.id, 'На улице ' + str(w.detailed_status), reply_markup=markup)
except pyowm.commons.exceptions.NotFoundError:
bot.send_message(message.chat.id, 'Город не найден:(',reply_markup=markup)

def namebase(message):
## код не нужный

def randomnum(message):
## код не нужный

bot.polling() # Заставляет бота работать и ждать команды
\
  • Вопрос задан
  • 196 просмотров
Решения вопроса 2
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Запросите у него местоположение и по координатам определите город.
Ответ написан
@o5a
По-простому можно запрашивать ввод команды с параметром - местом для погоды, забирая его из строки, например так

@bot.message_handler(commands=['weather'])
def start(message):
    if ' ' in message.text:
        place = message.text.split(maxsplit=1)[1]
        # работаем с нашим place
    else:
        bot.send_message(message.chat.id, 'Укажите город')


Если нужна логика с последующим вводом города после запроса параметра, то смотрите на работу register_next_step_handler
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы