ДЗ 5
parent
f1d0e3acb9
commit
3f78a33b94
|
@ -9,12 +9,24 @@ from aiogram.filters import CommandStart
|
|||
from aiogram.types import Message
|
||||
from aiogram.utils.markdown import hbold
|
||||
|
||||
from tg_bot.handlers.lesson_four import router as router_one
|
||||
from tg_bot.handlers import (
|
||||
lesson_five,
|
||||
lesson_four,
|
||||
lesson_one,
|
||||
lesson_tree,
|
||||
lesson_two,
|
||||
)
|
||||
|
||||
TOKEN: str = getenv('BOT_TOKEN') or 'Your TG_BOT token'
|
||||
|
||||
dp = Dispatcher()
|
||||
dp.include_routers(router_one)
|
||||
dp.include_routers(
|
||||
lesson_five.router,
|
||||
lesson_four.router,
|
||||
lesson_tree.router,
|
||||
lesson_two.router,
|
||||
lesson_one.router,
|
||||
)
|
||||
|
||||
|
||||
@dp.message(CommandStart())
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
from os import getenv
|
||||
|
||||
import requests # type: ignore
|
||||
from aiogram import F, Router
|
||||
from aiogram.types import Message
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
@router.message(F.content_type.in_({'location'}))
|
||||
async def loc_handler(message: Message):
|
||||
"""Срабатывает при получении точки геолокации.
|
||||
Определяет ближыйший адрес по координатам и получает погоду в текщем местоположении
|
||||
"""
|
||||
api_key: str = getenv('GEO_API_KEY') or ''
|
||||
weather_key: str = getenv('WEATHER_API_KEY') or ''
|
||||
|
||||
if message.location is not None:
|
||||
msg = message.location.model_dump()
|
||||
else:
|
||||
msg = {}
|
||||
|
||||
lat = msg.get('latitude', 0.0)
|
||||
long = msg.get('longitude', 0.0)
|
||||
|
||||
geo_rspn = requests.get(
|
||||
f'https://geocode.maps.co/reverse?lat={lat}&lon={long}&api_key={api_key}&lang=ru'
|
||||
)
|
||||
|
||||
lat = round(float(lat), 2)
|
||||
long = round(float(long), 2)
|
||||
|
||||
weather_rspn = requests.get(
|
||||
f'https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={long}&appid={weather_key}&units=metric&lang=ru'
|
||||
)
|
||||
|
||||
await message.answer(
|
||||
text=f"Вы тут;\n{geo_rspn.json().get('display_name')}\nПогода в доме:\n{weather_rspn.json().get('main')}"
|
||||
)
|
|
@ -8,12 +8,13 @@ router = Router()
|
|||
|
||||
@router.message(Command('rand'))
|
||||
async def rand_handler(message: types.Message):
|
||||
"""Возвращает пользователю случайное число по комманде /rand"""
|
||||
await message.answer(f'Держи свое случайное число: {randint(0, 100)}')
|
||||
|
||||
|
||||
@router.message(F.text)
|
||||
async def echo_handler(message: types.Message) -> None:
|
||||
"""Эхо ответ"""
|
||||
"""Эхо ответ текстовое сообщение пользователя"""
|
||||
try:
|
||||
await message.send_copy(chat_id=message.chat.id)
|
||||
except TypeError:
|
||||
|
|
|
@ -6,6 +6,7 @@ router = Router()
|
|||
|
||||
@router.message(F.video)
|
||||
async def greating(message: Message, bot: Bot):
|
||||
"""Обрабатывает получении видеофайла и возвращает его в виде Video_note"""
|
||||
await bot.download(message.video, destination='./video.mp4')
|
||||
|
||||
await bot.send_video_note(
|
||||
|
|
|
@ -10,12 +10,14 @@ router = Router()
|
|||
greatings = ['привет', 'добрый день', 'добрый вечер', 'доброе утро', 'здравствуйте']
|
||||
|
||||
|
||||
# Класс сохнранения состояний FSM
|
||||
class OrderReverse(StatesGroup):
|
||||
string = State()
|
||||
|
||||
|
||||
@router.message(Command('reverse'))
|
||||
async def reverse_request(message: Message, state: FSMContext):
|
||||
"""По комманде /reverse активизирует контекст запроса"""
|
||||
await state.set_state(OrderReverse.string)
|
||||
await message.answer(
|
||||
text='Введите строку для разворота',
|
||||
|
@ -24,6 +26,8 @@ async def reverse_request(message: Message, state: FSMContext):
|
|||
|
||||
@router.message(OrderReverse.string, F.text)
|
||||
async def reversing(message: Message, state: FSMContext):
|
||||
"""В контексте запроса получает введенную строку из диалога
|
||||
и возвращает ее в развернутом виде"""
|
||||
string = message.text
|
||||
if string is not None:
|
||||
string = string[::-1]
|
||||
|
@ -35,4 +39,5 @@ async def reversing(message: Message, state: FSMContext):
|
|||
|
||||
@router.message(F.text.func(lambda m: m.lower() in greatings))
|
||||
async def greating(message: Message):
|
||||
"""Сробатывает по фильтру при вхождении полученного текста в списке"""
|
||||
await message.answer(f'Здравствуй, {hbold(message.from_user.first_name)}')
|
||||
|
|
Loading…
Reference in New Issue