Не удается отдать переменную машины состояний оператору:
@dp.callback_query_handler(text_contains="some_butn") #отлавливаю некую кнопку
async def buying_pear(call: CallbackQuery):
await call.answer(cache_time=60)
callback_data = call.data
logging.info(f"{callback_data=}")
await call.message.edit_reply_markup(reply_markup=None)
await call.message.answer("Формируем заявку.",
reply_markup=call_operator2)
await UserState.adress.set() #записываю выбор
call_operator2 = ReplyKeyboardMarkup(
keyboard=[
[
KeyboardButton(text="Некий текст для оператора")
]
],
resize_keyboard=True
)
Не буду расписывать свои неудачные попытки, дабы лишний раз не путать.
Вот простой вывод выбора пользователя, который отдаст
Сообщение: Некий текст для оператора
@dp.message_handler(state=UserState.adress)
async def get_address(message: types.Message, state: FSMContext):
await state.update_data(address=message.text)
data = await state.get_data()
await message.answer(f"Сообщение: {data['address']}")
Мне необходимо интегрировать его в этот обработчик:
@dp.message_handler(Text(equals=["Некий текст для оператора"])) #отлавливаем сообщение кнопки по которому создается чат с оператором
async def ask_support_call(message: types.Message):
text = f"Сейчас будет сформирована заявка {swap_usdt_to_alpha}"
text2 = "Для подтверждения нажмите «Связаться с оператором» \nЕсли Вы передумали, нажмите «Завершить сеанс»"
keyboard = await support_keyboard(messages="many")
if not keyboard:
await message.answer("К сожалению, сейчас нет свободных операторов. Попробуйте позже.")
return
await message.answer(text, reply_markup=ReplyKeyboardRemove())
await message.answer(text2, reply_markup=keyboard)
@dp.callback_query_handler(support_callback.filter(messages="many", as_user="yes"))
async def send_to_support_call(call: types.CallbackQuery, state: FSMContext, callback_data: dict):
await call.message.edit_text("Ждем ответа от оператора!")
user_id = int(callback_data.get("user_id"))
if not await check_support_available(user_id):
support_id = await get_support_manager()
else:
support_id = user_id
if not support_id:
await call.message.edit_text("К сожалению, сейчас нет свободных операторов. Попробуйте позже.")
await state.reset_state()
return
await state.set_state("wait_in_support")
await state.update_data(second_id=support_id)
keyboard = await support_keyboard(messages="many", user_id=call.from_user.id)
await bot.send_message(support_id,
f"<b>С вами хочет связаться пользователь:</b> {call.from_user.full_name}\n"
f"<b>User ID пользователя:</b> {call.from_user.id}\n"
f"<b>Username пользователя:</b> {call.from_user.username}\n"
f"Сообщение: {data['address']}", #здесь переменная из машины
reply_markup=keyboard
)
К сожалению не хватает скила чтобы решить задачу. Надеюсь на помощь.
Сразу оговорюсь что все необходимые модули импортированы.