Загрузка...

Пишу 1 бота что не так с fsm aiogram

Тема в разделе Python создана пользователем el1aron 13 июн 2025 в 12:54. 110 просмотров

  1. el1aron
    el1aron Автор темы 13 июн 2025 в 12:54 93 8 окт 2023
    Код
    import asyncio

    import logging

    from aiogram import Bot, Dispatcher, F, types

    from aiogram.types import Message, ContentType

    from aiogram.filters.command import Command

    from aiogram import F

    from aiogram.fsm.context import FSMContext

    from aiogram.fsm.storage.memory import MemoryStorage

    from aiogram.fsm.state import StatesGroup , State

    from aiogram.types import ReplyKeyboardMarkup, KeyboardButton

    from aiogram.client.default import DefaultBotProperties

    from aiogram.enums import ParseMode

    main_menu_kb = ReplyKeyboardMarkup(

    keyboard=[

    [KeyboardButton(text="Каталог "), KeyboardButton(text="Корзина ")],

    [KeyboardButton(text="Помощь "), KeyboardButton(text="О нас ")]

    ],

    resize_keyboard=True,

    input_field_placeholder="Выберите пункт меню..."



    )

    eda = ReplyKeyboardMarkup(

    keyboard=[

    [KeyboardButton(text="мясо"), KeyboardButton(text="рыба")],



    ],

    resize_keyboard=True

    )

    storage = MemoryStorage()

    class statesone(StatesGroup):

    state1_1 = State()

    logging.basicConfig(level=logging.INFO)

    bot = Bot(token="5760064830:AAHkQtetu9zSrzvDLK5D-gqqpnZcljArru8" , default=DefaultBotProperties(parse_mode=ParseMode.HTML))

    dp = Dispatcher()

    #start

    @dp.message(Command("start"))

    async def cmd_start(message: types.Message):

    await message.answer("ну типо старт" , reply_markup=main_menu_kb)

    #событие 1

    @dp.message(F.text == "Каталог")

    async def show_catalog(message: Message):

    await message.answer("Вот наш каталог..." , reply_markup= eda)

    await state.set_state(statesone.state1_1)

    #событие 2

    @dp.message(F.text == "мясо" , statesone.state1_1)

    async def myso(message:Message):

    await message.answer("лучший выбор")

    await state.finish()

    async def main():

    await dp.start_polling(bot)

    if name == "__main__":

    asyncio.run(main())
    ?
    Памагите
     
    13 июн 2025 в 12:54 Изменено
  2. MOLUTBA
    MOLUTBA 13 июн 2025 в 13:03 Здесь могла быть ваша реклама 56 25 янв 2021
    Ты забыл написать в корутинах, state: FSMContext
    async def show_catalog(message: Message, state: FSMContext):
    async def myso(message:Message,state:FSMContext):
     
    13 июн 2025 в 13:03 Изменено
  3. krxsn
    Во первых, ты загрузил код говна, но я думаю ты только учишься, короче пофиксил я твой код.


    https://gist.github.com/mollyydev/5891cd8f1ee4c381ba3fc4b66ad59ad1

    И на будущее - НИКОГДА не выкладывай токен бота в открытый доступ, аккаунт улетит быстро.

    Сейчас зайди в BotFather и измени токен, пока не поздно.
     
    13 июн 2025 в 13:11 Изменено
Загрузка...
Top