На
import os
import logging
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from aiohttp import ClientSession, TCPConnector
from dotenv import load_dotenv
load_dotenv()
logging.basicConfig(level=logging.ERROR)
TOKEN = os.getenv('BOT_TOKEN')
if not TOKEN:
raise ValueError("Необходимо указать токен бота в переменной окружения BOT_TOKEN")
connector = TCPConnector(limit=50)
session = ClientSession(connector=connector)
bot = Bot(token=TOKEN, session=session)
dp = Dispatcher(bot)
dp.middleware.setup(LoggingMiddleware(logger=logging.getLogger('aiogram')))
@dp.message_handler(commands=['start'])
async def process_start_command(message: types.Message):
await message.reply("Привет!\nНапиши мне что-нибудь!")
@dp.message_handler(commands=['help'])
async def process_help_command(message: types.Message):
await message.reply("Напиши мне что-нибудь, и я отправлю этот текст тебе в ответ!")
@dp.message_handler()
async def echo_message(msg: types.Message):
try:
await bot.send_message(msg.from_user.id, msg.text)
except Exception as e:
logging.error(f"Ошибка при отправке сообщения: {e}")
async def on_startup(dispatcher):
logging.info("Бот успешно запущен")
async def on_shutdown(dispatcher):
logging.info("Бот успешно остановлен")
await session.close()
if __name__ == '__main__':
try:
executor.start_polling(dp, on_startup=on_startup, on_shutdown=on_shutdown)
except (KeyboardInterrupt, SystemExit):
logging.error("Бот остановлен вручную")