1

Тема: Телеграм бот - прогноз погоди

Я пишу зараз телеграм бота по прогнозу погоди. Проблема в тому шо пайтон не видає помилку але також сам бот не показує погоду є тільки прописаний пекст привітання

2

Re: Телеграм бот - прогноз погоди

Denus написав:

Я пишу зараз телеграм бота по прогнозу погоди. Проблема в тому шо пайтон не видає помилку але також сам бот не показує погоду є тільки прописаний пекст привітання. Код можу скинути в приватні повідомленя так як нехочу показувати 'api' кючі

3 Востаннє редагувалося koala (12.01.2023 20:19:47)

Re: Телеграм бот - прогноз погоди

А видалити ключі і викласти код ніяк не можете?

4

Re: Телеграм бот - прогноз погоди

import telebot
from pyowm import OWM
from pyowm.utils.config import get_default_config

bot = telebot.TeleBot('')


@bot.message_handler(commands=['start'])
def hello(message):
    bot.send_message(message.chat.id, 'Привіт я бот, а ти я так розумію ' + str(message.from_user.first_name) + '\n/start - запуск бота\n/help - команди бота\n/credits - автор бота\nщоб дізнатись погодунапишіть назву міста')


@bot.message_handler(commands=['help'])
def help(message):
    bot.send_message(message.chat.id, '/start - запуск бота\n/help - команди бота\n/credits - автор бота\nщоб дізнатись погодунапишіть назву міста')


@bot.message_handler(commands=['text'])
def test(message):
    try:
        place = message.text

        config_dict = get_default_config()
        config_dict['language'] = 'ua'

        owm = OWM('')
        # place = input("Введіть назву міста")
        mgr = owm.weather_manager()
        observation = mgr.weather_at_place(place)
        w = observation.weather

        t = w.temperature("celsius")
        t1 = t['temp']
        t2 = t['feels_like']
        t3 = t['temp_max']
        t4 = t['temp_min']

        wi = w.wind()['speed']
        humi = w.humidity
        st = w.status
        dt = w.detalied_status
        ti = w.reference_time('iso')
        pr = w.pressure['press']
        vd = w.visibility_distance

        bot.send_message(message.chat.id, "В місті" + str(place) + "температура" + str(t1) + "C°" + "\n" +
                         "максимальна температура" + str(t3) + "C°" + "\n" +
                         "мінімальна температура" + str(t4) + "C°" + "\n" +
                         "відчувається як" + str(t2) + "C°" + "\n" +
                         "видкість вітру" + str(wi) + "m/c + ""\n" +
                         "тиск" + str(pr) + "мм.рт" + "\n" +
                         "вологість" + str(humi) + "%" + "\n" +
                         "видимість" + str(vd) + "метрів" + "\n" +
                         "статус" + str(st) + "\n\n" + str(dt))
    except:
        bot.send_message(message.chat.id, "Такого міста не знайдено")
        print(str(message.text), "- не знайдено")


bot.polling(none_stop=True, interval=0)

5

Re: Телеграм бот - прогноз погоди

для початку використайте дебагер, і побачите що містить змінна message.text
place = message.text.split("/text")[-1] #можливо ось так???

Подякували: Denus1

6

Re: Телеграм бот - прогноз погоди

@bot.message_handler(commands=['text'])

означає, що це функція, яка відповідає на команди, що починаються з /text. Причому цей /text нікуди з message.text не зникає.
Якщо вам потрібна функція для будь-яких повідомлень, використовуйте

@bot.message_handler(func=lambda message: True)

І взагалі читайте документацію.

Подякували: Denus, leofun012

7

Re: Телеграм бот - прогноз погоди

А для з'єднання стрічок зараз вважається за норму використовувати f-стрічки:

bot.send_message(message.chat.id, f'Привіт, я бот, а ти я так розумію {message.from_user.first_name}\n/start - запуск бота\n/help - команди бота\n/credits - автор бота\nщоб дізнатись погоду напишіть назву міста')

bot.send_message(message.chat.id, f"У місті {place} температура {t1}°C\nмаксимальна температура {t3}°C\nмінімальна температура {t4}°C\n...
Подякували: Denus1

8

Re: Телеграм бот - прогноз погоди

Перепрошую, багаторядкові f-стрічки:

f"""У місті {place} температура {t1}°C
максимальна температура {t3}°C
мінімальна температура {t4}°C\n"""

9

Re: Телеграм бот - прогноз погоди

Ще таке пиання, а як тоді вирішити проблему коли при введені міста видає що такого міста не знайдено

10

Re: Телеграм бот - прогноз погоди

Ну як. От якщо у вас щось питають, а ви цього не знаєте - як ви цю проблему вирішуєте? Мабуть, відповідаєте, що не знаєте, так? То чому бот не може так робити?