46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
import asyncio
|
|
import logging
|
|
import os
|
|
|
|
from aiogram import Bot, Dispatcher, F, Router
|
|
from aiogram.client.session.aiohttp import AiohttpSession
|
|
from aiogram.client.telegram import TEST
|
|
from aiogram.filters import CommandStart
|
|
from aiogram.types import Message
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
router = Router()
|
|
|
|
|
|
@router.message(CommandStart())
|
|
async def start(message: Message) -> None:
|
|
await message.answer("Тестовый эхо-бот запущен. Отправь мне текст — я повторю его.")
|
|
|
|
|
|
@router.message(F.text & ~F.text.startswith("/"))
|
|
async def echo(message: Message) -> None:
|
|
if message.text:
|
|
await message.answer(message.text)
|
|
|
|
|
|
async def main() -> None:
|
|
token = os.environ.get("BOT_TOKEN", "").strip()
|
|
if not token:
|
|
raise RuntimeError("BOT_TOKEN is required")
|
|
|
|
test_env = os.environ.get("BOT_ENV", "test").strip().lower() == "test"
|
|
session = AiohttpSession(api=TEST) if test_env else None
|
|
bot = Bot(token=token, session=session)
|
|
dp = Dispatcher()
|
|
dp.include_router(router)
|
|
|
|
try:
|
|
await dp.start_polling(bot)
|
|
finally:
|
|
await bot.session.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|