Погодный бот в телеграме не отправляет сообщения

Это мой первый бот и конечно у меня ничего не получилось , хотя на что я надеялся

import requests
from bs4 import BeautifulSoup
from aiogram import Bot, Dispatcher, executor, types
import python_weather
import asyncio
from random import *

bot = Bot(token="токен")
dp = Dispatcher(bot)
client = python_weather.Client(format=python_weather.METRIC)
@dp.message_handler()
async def ans(message: types.Message):
    weather = await client.get(message.text)

    celsius = round(weather.current.temperature - 32) / 1.8

    ans = message.text +'Что сделать?' + '\n'
    ans += f"Текущая температура: {weather.current.temperature}°\n"
    ans += f"Состояние погоды: {weather.current.description}"

    if celsius <= 10:
        ans += ("\n\nПрохладно, Одевайтесь потеплее.")
    else:
        ans += ("\n\nТепло, можно одеться посвободнее.")

    await message.answer(ans)

def joke(message):
    response = requests.get('https://www.anekdot.ru/').content
    html = BeautifulSoup(response, 'lxml')
    laught = choice(html.find_all(class_='a_abs'))
    ans = message.text + ':' + '\n'
    ans += laught.a.attrs['href']


if message.text == 'Погода ' or message.text =='погода':
    print(ans(message: types.Message))
elif message.text == 'Анекдот' or message.text == 'анекдот':
    joke(message)





def getweather():
    pass


if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=False)
    asyncio.run(getweather())

bot.send_poll(none_stop = True)

Ответы (1 шт):

Автор решения: Артем Солоненко
import requests
from bs4 import BeautifulSoup
from aiogram import Bot, Dispatcher, executor, types
import python_weather
import asyncio
from random import *

bot = Bot(token="token")
dp = Dispatcher(bot)
client = python_weather.Client(format=python_weather.METRIC)

@dp.message_handler(commands=['start'])
async def send_start(message: types.Message):
    start_text = """Напишите /weather и нужный город , чтобы я показал нынешнее 
состояние погоды в указанном месте  
Или если вам стало скучно напишите /joke и я порадую вас своим юмором"""
    await message.reply(start_text)



@dp.message_handler(commands=['weather'])
async def city(mess : types.Message):
    await mess.answer("Введите город")

    @dp.message_handler()
    async def weath(message: types.Message):
        async with python_weather.Client(format=python_weather.METRIC) as client:
            weather = await client.get(message.text)

            if weather.location is None:
                ans = 'Такого города нет в базе или его не существует'
            else :
                ans = 'Погода в городе '  + message.text + ':' + f"""
{weather.current.temperature}°C
Ощущается как : {weather.current.feels_like}°C
Влажность :{weather.current.humidity}%
Cкорость ветра :{weather.current.wind_speed} км/ч
{str(weather.current.local_time)[:19]}
                """
            await message.answer(ans)


@dp.message_handler(commands=['joke'])
async def joke(message):
    response = requests.get('https://www.anekdot.ru/').content
    html = BeautifulSoup(response, 'lxml')
    laught = choice(html.find_all(class_='text'))
    ans = laught.text
    await message.answer(ans)

def getweather():
    pass

if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=False)
    asyncio.run(getweather())

bot.send_poll(none_stop = True)
→ Ссылка