Помогите разобраться с хэндлерами

Добрый день начал изучать процесс написание ботов на питоне. Уроки по которым учился используют aiogram. И вот в этих уроках все функции регистрируются через dp.message.register(func, условие вызова), но везде где я в остальных местах смотрю примеры если чего то не понимаю пишется @dp.message_hendler. Я пробовал так писать, но у меня всё после dp. зачеркивает и я принципе не понимаю разницы. Можно краткий ликбез?

вот так не работает кнопка меню

@dp.message(text=['Стажировка бармена'])
async def bar_stajirovka(message: types.Message):
    await message.answer('Стажировка бармена', reply_markup=kb.main_bar)

а вот так работает

async def bar_stajirovka(message: types.Message):
    await message.answer('Стажировка бармена', reply_markup=kb.main_bar)

dp.message.register(bar_stajirovka, text=['Стажировка бармена'])

что не так?

сделал по примеру с какого то учебника - пишет хэндлер не зарегистрирован

import asyncio
from aiogram import Bot, Dispatcher, types
import logging

TOKEN = "1111111"
ADMIN_ID = 111111

bot = Bot(TOKEN)
dp = Dispatcher()


@dp.message(commands=['start'])
async def process_start_command(message: types.Message):
    await message.reply("Привет!\nНапиши мне что-нибудь!")


@dp.message(commands=['help'])
async def process_help_command(message: types.Message):
    await message.reply("Напиши мне что-нибудь, и я отпрпавлю этот текст тебе в ответ!")


@dp.message()
async def echo_message(msg: types.Message):
    await bot.send_message(msg.from_user.id, msg.text)

async def starter():
    logging.basicConfig(
        level=logging.INFO
    )
    bots = Bot(TOKEN)
    dp = Dispatcher()
    print('Starter')
    await dp.start_polling(bots)

if __name__ == "__main__":
    asyncio.run(starter())

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

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

Вот нормальный бот

from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage

import config

bot = Bot(token=config.BOT_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)


@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    await message.answer("text")



if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

→ Ссылка