Помогите разобраться с хэндлерами
Добрый день начал изучать процесс написание ботов на питоне. Уроки по которым учился используют 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)