机器人通过按钮向群组发送消息。单击此按钮后,它会要求您输入订单的全价。但由于某种原因它没有响应。该状态已声明并且机器人移动到该状态,但处理功能不起作用。代码:
async def handle_enter_price(self, callback_query: types.CallbackQuery, state: FSMContext):
order_id = callback_query.data.split('_')[2]
await state.update_data(order_id=order_id)
await callback_query.message.answer("Введіть загальну ціну збірки для всіх товарів:")
await state.set_state(Form.waiting_for_total_price_input)
current_state = await state.get_state()
print(f"Поточний стан: {current_state}")
async def process_total_price_input(self, message: types.Message, state: FSMContext):
try:
total_assembly_price = float(message.text.strip())
except ValueError:
await message.answer("Некоректне значення ціни. Введіть число.")
return
data = await state.get_data()
order_id = data['order_id']
print(order_id)
# Оновлення загальної ціни в базі даних
sql_requests.update_total_order_price(order_id, total_assembly_price)
# Надсилання підсумкового повідомлення замовнику
contractor_chat_id = sql_requests.get_contractor_chat_id(order_id)
products_info = "\n".join(
[f"Товар: {p['product']}, Артикул: {p['article']}, Вартість збірки: {total_assembly_price} грн" for p in
data['products']]
)
await self.bot.send_message(contractor_chat_id,
f"Ціна на збірку оновлена:\n"
f"{products_info}\n"
f"Загальна вартість збірки: {total_assembly_price} грн"
)
# Надсилання повідомлення в канал
await self.send_to_channel(data, order_id)
await state.clear()
注册状态:
self.dp.message.register(self.process_total_price_input, Form.waiting_for_total_price_input)
出于安全原因,机器人不允许读取群组中的常规消息。如果您需要通过阅读消息来实现任何功能,请不要忘记授予它必要的权限