Бот не работает на aiogram3, запускает только с aiogram 2.25

Ребята, мне дали задание со скриптом:

#!/usr/local/bin/python3.9
from aiogram import Bot, Dispatcher, executor
from aiogram.dispatcher.filters import CommandStart, CommandHelp
from aiogram.types import Message
import configparser
config = configparser.ConfigParser()
config.read("/etc/tgbot/settings.ini")
BOT_TOKEN = config["BOT"]["BOT_TOKEN"]
bot = Bot(BOT_TOKEN)
dp = Dispatcher(bot = bot)
@dp.message_handler(CommandStart())
async def start(message: Message):
   await send_info(message)
@dp.message_handler(CommandHelp())
async def start(message: Message):
   await send_info(message)
async def send_info(message):
   text = '\n'.join(("Привет! Я телеграм бот.",
                     "Ваши данные:",
                    f"id: {message.from_user.id}",
                    f"first_name: {message.from_user.first_name}",
                    f"user_name: {message.from_user.username}"))
   await message.answer(text)
if __name__ == '__main__':
   executor.start_polling(dp)

Его задача - выдавать информацию о пользователе, когда к нему обратились. Чтобы он работал, нужно устанавливать строго aiogram==2.25.1, а это неправильно.

Можно ли переписать этот скрипт, чтобы он работал с текущим aiogram версии 3 (сейчас он с версией 3 не работает)?


Ответы (1 шт):

Автор решения: txello

Версия на aiogram 3.x

from aiogram import Bot, Dispatcher
from aiogram.filters import CommandStart, Command
from aiogram.types import Message
import configparser
config = configparser.ConfigParser()
config.read("/etc/tgbot/settings.ini")
BOT_TOKEN = config["BOT"]["BOT_TOKEN"]
bot = Bot(BOT_TOKEN)
dp = Dispatcher()

@dp.message(CommandStart())
async def start(message: Message):
   await send_info(message)
@dp.message(Command('help'))
async def start(message: Message):
   await send_info(message)
async def send_info(message:Message):
   text = '\n'.join(("Привет! Я телеграм бот.",
                     "Ваши данные:",
                    f"id: {message.from_user.id}",
                    f"first_name: {message.from_user.first_name}",
                    f"user_name: {message.from_user.username}"))
   await message.answer(text)
if __name__ == '__main__':
   dp.start_polling(bot)
→ Ссылка