Срабатывает часть кода в aiogram python
Подскажите пожалуйста , почему код ниже может не срабатывать? В коде имеется тестовая функция start. Вот до нее почему то не доходит для примера имеется такой код :
# Тут запускаю код в котором задается вопрос телеграм юзеру
async def mode(message : types.Message):
await bot.send_message(message.from_user.id, 'введите цифру')
# Тут отлавливается первый ответ от тг юзера и задается второй вопрос
async def mode2(message : types.Message, state : FSMContext):
async with state.proxy() as data:
data['Первый'] = message.text
await Ratio.next()
await bot.send_message(message.from_user.id, 'введите вторую цифру')
# Тут отлавливается второй ответ
async def mode3(message : types.Message, state : FSMContext):
async with state.proxy() as data:
data['Второй'] = message.text
await state.finish()
# В зависимости от условия, выполняется разный код
if message.test == '1':
await bot.send_message(message.from_user.id, 'Thanks')
else:
# Функция старт, которое для примера создает тхт и записывает в него что-либо
def start():
with open(r'test.txt', 'w') as file:
file.write(data['test_mode'])
def register_handlers_multi_mode(dp : Dispatcher):
dp.register_message_handler(mode, commands=['test'], state = None)
dp.register_message_handler(mode2, state = Ratio.test1)
dp.register_message_handler(mode3, state = Ratio.test2)
Я понимаю что видимо упускаю какую-то мелочь, ну не могу понять какую. В mode3, с помощью принта я выводил в консоль и первый ответ и второй ответ и все выводится, а значит работает. Но все работает до функции start
В оригинальном коде, в самой функции старт , выполняется много вычислений , в ходе которых создается xlsx файл, который должен отправляться в тг. За счет большого кода , сюда для примера скинул набросок с той же структурой, что и в оригинальном коде
Спасибо!
Ответы (1 шт):
Автор решения: Fedor March
→ Ссылка
Может лучше так?
def start():
with open(r'test.txt', 'w') as file:
file.write(data['test_mode'])
# Тут запускаю код в котором задается вопрос телеграм юзеру
async def mode(message : types.Message):
await bot.send_message(message.from_user.id, 'введите цифру')
# Тут отлавливается первый ответ от тг юзера и задается второй вопрос
async def mode2(message : types.Message, state : FSMContext):
async with state.proxy() as data:
data['Первый'] = message.text
await Ratio.next()
await bot.send_message(message.from_user.id, 'введите вторую цифру')
# Тут отлавливается второй ответ
async def mode3(message : types.Message, state : FSMContext):
async with state.proxy() as data:
data['Второй'] = message.text
await state.finish()
# В зависимости от условия, выполняется разный код
if message.test == '1':
await bot.send_message(message.from_user.id, 'Thanks')
else:
# Функция старт, которое для примера создает тхт и записывает в него что-либо
start()