mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-06 07:50:32 +00:00
Examples/dev 3x multi file (#1254)
* Add multi-file bot example This commit adds a multi-file bot example to the repository. . * Refactor: Clean up code formatting for consistency * add Changelog * Refactor bot code, fix changelog version
This commit is contained in:
parent
f87deea4fb
commit
fac0a533b0
5 changed files with 72 additions and 0 deletions
1
CHANGES/1254.doc.rst
Normal file
1
CHANGES/1254.doc.rst
Normal file
|
|
@ -0,0 +1 @@
|
|||
This update includes the addition of a multi-file bot example to the repository.
|
||||
32
examples/multi_file_bot/bot.py
Normal file
32
examples/multi_file_bot/bot.py
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import asyncio
|
||||
import logging
|
||||
from os import getenv
|
||||
|
||||
from handlers.echo import echo_router
|
||||
from handlers.start import start_router
|
||||
|
||||
from aiogram import Bot, Dispatcher
|
||||
from aiogram.enums import ParseMode
|
||||
|
||||
# Bot token can be obtained via https://t.me/BotFather
|
||||
TOKEN = getenv("BOT_TOKEN")
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
# Dispatcher is a root router
|
||||
dp = Dispatcher()
|
||||
# Register all the routers from handlers package
|
||||
dp.include_routers(
|
||||
start_router,
|
||||
echo_router,
|
||||
)
|
||||
|
||||
# Initialize Bot instance with a default parse mode which will be passed to all API calls
|
||||
bot = Bot(TOKEN, parse_mode=ParseMode.HTML)
|
||||
# And the run events dispatching
|
||||
await dp.start_polling(bot)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
asyncio.run(main())
|
||||
0
examples/multi_file_bot/handlers/__init__.py
Normal file
0
examples/multi_file_bot/handlers/__init__.py
Normal file
21
examples/multi_file_bot/handlers/echo.py
Normal file
21
examples/multi_file_bot/handlers/echo.py
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
from aiogram import Router
|
||||
from aiogram.filters import Command
|
||||
from aiogram.types import Message
|
||||
|
||||
# For each module with handlers we can create a separate router.
|
||||
echo_router = Router()
|
||||
|
||||
|
||||
@echo_router.message()
|
||||
async def echo_handler(message: Message) -> None:
|
||||
"""
|
||||
Handler will forward receive a message back to the sender
|
||||
|
||||
By default, message handler will handle all message types (like a text, photo, sticker etc.)
|
||||
"""
|
||||
try:
|
||||
# Send a copy of the received message
|
||||
await message.send_copy(chat_id=message.chat.id)
|
||||
except TypeError:
|
||||
# But not all the types is supported to be copied so need to handle it
|
||||
await message.answer("Nice try!")
|
||||
18
examples/multi_file_bot/handlers/start.py
Normal file
18
examples/multi_file_bot/handlers/start.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
from aiogram import Router
|
||||
from aiogram.filters import Command
|
||||
from aiogram.types import Message
|
||||
|
||||
start_router = Router()
|
||||
|
||||
|
||||
@start_router.message(Command("start"))
|
||||
async def command_start_handler(message: Message) -> None:
|
||||
"""
|
||||
This handler receives messages with `/start` command
|
||||
"""
|
||||
# Most event objects have aliases for API methods that can be called in events' context
|
||||
# For example if you want to answer to incoming message you can use `message.answer(...)` alias
|
||||
# and the target chat will be passed to :ref:`aiogram.methods.send_message.SendMessage`
|
||||
# method automatically or call API method directly via
|
||||
# Bot instance: `bot.send_message(chat_id=message.chat.id, ...)`
|
||||
await message.answer(f"Hello, <b>{message.from_user.full_name}!</b>")
|
||||
Loading…
Add table
Add a link
Reference in a new issue