Ошибка при ответе на команду start ,telegram bot, Aiogram

Рейтинг: 0Ответов: 1Опубликовано: 23.08.2023

Файл запускается, но после ввода в чат команды start вылетает ошибка. Не могу ее понять, подскажите пожалуйста. Ошибка будет после кода

from aiogram import Bot, Dispatcher

from aiogram.types import Message
import markups as nav
import asyncio

token = 'token'


async def get_start(message:Message, bot: Bot):
    await message.answer(f'<b>Привет {message.from_user.first_name}. Рады приветствовать тебя в нашем магазине!</b>',parse_mode="html", reply_markup= nav.mainMenu)


async def start():
    bot = Bot(token = token)


    dp = Dispatcher(bot)
    dp.register_message_handler(get_start)
    try:
        await dp.start_polling(bot)
    finally:
        await dp.session.close()


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

Task exception was never retrieved future: <Task finished name='Task-16' coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\kvard\PycharmProjects\TechItBot_test\Lib\site-packages\aiogram\dispatcher\dispatcher.py:407> exception=TypeError("get_start() missing 1 required positional argument: 'bot'")> Traceback (most recent call last): TypeError: get_start() missing 1 required positional argument: 'bot'

Ответы

▲ 0Принят

ошибка в том что в get_start, аргумент bot обязательный, можете либо сделать его необязательным либо передать туда значение Вообще не вижу чтобы этот аргумент где-то использовался, поэтому его вообще стоит убрать Попробуйте так:

from aiogram import Bot, Dispatcher

from aiogram.types import Message
import markups as nav
import asyncio
from aiogram.filters.command import Command

token = 'token'
bot = Bot(token=token)
# Диспетчер
dp = Dispatcher()


@dp.message(Command("start"))
async def get_start(message:Message):
    await message.answer(f'<b>Привет {message.from_user.first_name}. Рады приветствовать тебя в нашем магазине!</b>',
                         parse_mode="html", reply_markup=nav.mainMenu)


async def start():
    await dp.start_polling(bot)


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

PS. Не оставляйте токен от бота в открытом доступе, его могут угнать