Погодный бот в телеграме не отправляет сообщения
Это мой первый бот и конечно у меня ничего не получилось , хотя на что я надеялся
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)