@Lancet52

Не импортирует router из другого файла проекта в aiogram 3. В чём ошибка?

from aiogram import F, Router, Bot
from aiogram.filters import CommandStart, Command
from aiogram.types import Message, CallbackQuery
from aiogram.types import FSInputFile, InputFile
import app.keyboards as kb

from aiogram.fsm.state import StatesGroup,State
from aiogram.fsm.context import FSMContext
from run import bot

class Reg(StatesGroup):
    name=State()
    number=State()

router = Router()

@router.message(CommandStart())
async def cmd_start(message: Message):
    await message.answer(f'Привет! Я Ириска. И я твой друг бот!', reply_markup=kb.main)

@router.message(Command('reg', prefix="/!%"))
async def reg_one(message:Message, state:FSMContext):
    await state.set_state(Reg.name)
    await message.answer('Введите ваше Имя')

@router.message(Reg.name)
async def reg_two(message:Message, state:FSMContext):
    await state.update_data(name=message.text)
    await state.set_state(Reg.number)
    await message.answer('Введите номер телефона')

@router.message(Reg.number)
async def two_three(message:Message,state:FSMContext):
    await state.update_data(number=message.text)
    data=await state.get_data()

    await bot.send_message(chat_id='нужный айди', text=f'Спасибо, регистрация завершена. \n Имя: {data["name"]} \n Номер: {data ["number"]}')
    await state.clear()


Нужно переслать
'Спасибо, регистрация завершена. \n Имя: {data["name"]} \n Номер: {data ["number"]}'
в личку некому пользователю.
при обработке данного участка кода бота телеграмма , возникает следующая ошибка:

Traceback (most recent call last):
File "D:\Telegram_BOT\run.py", line 10, in
from app.handlers import router
File "D:\Telegram_BOT\app\handlers.py", line 11, in
from run import bot
File "D:\Telegram_BOT\run.py", line 10, in
from app.handlers import router
ImportError: cannot import name 'router' from partially initialized module 'app.handlers' (most likely due to a circular import) (D:\Telegram_BOT\app\handlers.py)

И как найти решение, почему "bot" не импортируется из run.py
  • Вопрос задан
  • 739 просмотров
Пригласить эксперта
Ответы на вопрос 2
AuSIDE
@AuSIDE
Почитайте внимательно ошибку
cannot import name 'router' from partially initialized module 'app.handlers' (most likely due to a circular import)

Это значит, что вы пытаетесь импортировать файл, который ещё не инициализировался.
Тем более, зачем импортировать экземпляр бота, если его можно получить из объекта сообщения?65e639515764e955608666.png
Ответ написан
Сделай так в этом месте
@router.message(Reg.number)
async def two_three(message: Message, bot: Bot, state: FSMContext):
    await state.update_data(number=message.text)
    data=await state.get_data()

    await bot.send_message(chat_id='нужный айди', text=f'Спасибо, регистрация завершена. \n Имя: {data["name"]} \n Номер: {data ["number"]}')
    await state.clear()


И удали это
from run import bot
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект