В этом видеоуроке мы создадим первого телеграм-бота на aiogram 3 и научим его отвечать на сообщения пользователей. Более того, мы разработаем шаблон-болванку для будущих ботов, чтобы упростить создание новых проектов в будущем.
Мы также познакомимся с концепцией хэндлеров — функций, которые обрабатывают различные типы апдейтов, отправленных сервером телеграм.
Вы научитесь создавать и регистрировать хэндлеры для разных типов апдейтов, таких как текстовые сообщения, команды. Научимся отвечать на сообщения с цитированием.
После просмотра этого видео вы получите необходимые знания и навыки для создания своего первого телеграм-бота на aiogram 3 и будете готовы к созданию более сложных и продвинутых проектов.
handlers/basic.py
from aiogram import Bot
from aiogram.types import Message
async def get_start(message: Message, bot: Bot):
await bot.send_message(message.from_user.id, f'<b>Привет {message.from_user.first_name}. Рад тебя видеть.</b>')
await message.answer(f'<s>Привет {message.from_user.first_name}. Рад тебя видеть.</s>')
await message.reply(f'<tg-spoiler>Привет {message.from_user.first_name}. Рад тебя видеть.</tg-spoiler>')utils/settings.py
from dataclasses import dataclass
from environs import Env
@dataclass()
class Bots:
bot_token: str
admin_id: str
@dataclass()
class Settings:
bots: Bots
def get_settings(path: str):
env = Env()
env.read_env(path)
return Settings(
bots=Bots(
bot_token=env.str("BOT_TOKEN"),
admin_id=env.str("ADMIN_ID"),
)
)
settings = get_settings('input')aiogram_learn.py
from aiogram import Bot, Dispatcher
import asyncio
from aiogram.types import Message
import logging
from core.handlers.basic import get_start
from core.settings import settings
async def start_bot(bot: Bot):
await bot.send_message(settings.bots.admin_id, text="Бот запущен!")
async def stop_bot(bot: Bot):
await bot.send_message(settings.bots.admin_id, text="Бот выключен!")
async def start():
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - [%(levelname)s] - %(name)s - (%(filename)s).%(funcName)s(%(lineno)d) - %(message)s"
)
bot = Bot(token=settings.bots.bot_token, parse_mode='HTML')
dp = Dispatcher()
dp.startup.register(start_bot)
dp.shutdown.register(stop_bot)
dp.message.register(get_start)
try:
await dp.start_polling(bot)
finally:
await bot.session.close()
if __name__ == "__main__":
asyncio.run(start())












