Загрузка...

What is the problem?

Thread in Python created by rofl1ng Apr 1, 2025. 160 views

  1. rofl1ng
    rofl1ng Topic starter Apr 1, 2025 Предприниматель. 315 Jan 3, 2023
    Если не верный раздел, переместите(На коленях извиняюсь заранее) Вообще-м нужно что-бы бот создавал уникальные ссылки, при переходе на которые, открываются сделки, так вот у меня какого-то черта, срабатывает просто команда /start, без уникального айди который присвоился к сделке, может есть тут какой-то смышленый парень, который в силах мне помочь? Фулл Код могу закинуть при обращении в личные сообщения.
    Python
    def get_main_menu():
    return InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text=" Создать сделку", callback_data="create_deal")],
    [InlineKeyboardButton(text=" Вернуться в меню", callback_data="back_to_menu")]
    ])


    @router.callback_query(lambda c: c.data == "create_deal")
    async def start_deal(callback_query: CallbackQuery):
    deal_menu = InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text=" Карта", callback_data="deal_card")],
    [InlineKeyboardButton(text=" Ton-кошелек", callback_data="deal_ton")],
    [InlineKeyboardButton(text=" Вернуться в меню", callback_data="back_to_menu")]
    ])
    await callback_query.message.edit_text(
    " Выберите метод выплаты:",
    reply_markup=deal_menu
    )


    @router.callback_query(lambda c: c.data.startswith("deal_"))
    async def set_deal_method(callback_query: CallbackQuery):
    method = "UAH" if callback_query.data == "deal_card" else "TON"
    user_context[callback_query.from_user.id] = {"method": method}
    await callback_query.message.edit_text(
    f" Создание сделки\n\nВведите сумму ({method}) сделки в формате: 100.5:",
    reply_markup=get_back_button()
    )


    @router.message(lambda message: message.from_user.id in user_context and "method" in user_context[message.from_user.id])
    async def set_deal_amount(message: Message):
    try:
    amount = float(message.text)
    user_context[message.from_user.id]["amount"] = amount
    await message.answer(
    " Укажите, что вы предлагаете в этой сделке:\n\nПример: 10 Кепок и Пепе...",
    reply_markup=get_back_button()
    )
    except ValueError:
    await message.answer(" Некорректный формат суммы. Попробуйте ещё раз.")

    @router.message(lambda message: message.from_user.id in user_context and "amount" in user_context[message.from_user.id])
    async def set_deal_description(message: Message):
    description = message.text
    user_context[message.from_user.id]["description"] = description
    deal_id = str(uuid.uuid4())
    user_context[message.from_user.id]["deal_id"] = deal_id
    deal_link = f"https://t.me/YdaleniiSoo_bot?start={deal_id}"
    await message.answer(
    f" Сумма: {user_context[message.from_user.id]['amount']} {user_context[message.from_user.id]['method']}\n"
    f" Описание: {description}\n"
    f" Ссылка для покупателя: {deal_link}\n\n"
    "Вы можете отменить сделку, нажав кнопку ниже.",
    reply_markup=InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text=" Отменить сделку", callback_data=f"cancel_deal_{deal_id}")],
    [InlineKeyboardButton(text=" Вернуться в меню", callback_data="back_to_menu")]
    ])
    )


    @router.callback_query(lambda c: c.data.startswith("cancel_deal_"))
    async def cancel_deal(callback_query: CallbackQuery):
    deal_id = callback_query.data.split("_")[-1]
    confirmation_menu = InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text=" Да", callback_data=f"confirm_cancel_{deal_id}")],
    [InlineKeyboardButton(text=" Нет", callback_data="back_to_menu")]
    ])
    await callback_query.message.edit_text(
    "Вы готовы отменить данную сделку?",
    reply_markup=confirmation_menu
    )

    @router.callback_query(lambda c: c.data.startswith("confirm_cancel_"))
    async def confirm_cancel_deal(callback_query: CallbackQuery):
    await callback_query.message.edit_text(
    " Сделка успешно отменена.",
    reply_markup=get_main_menu()
    )


    @router.callback_query(lambda c: c.data.startswith("start_"))
    async def buyer_joined(callback_query: CallbackQuery):
    deal_id = callback_query.data.split("_")[-1]
    seller_id = ...
    await bot.send_message(
    seller_id,
    f"Пользователь @{callback_query.from_user.username} (ID: {callback_query.from_user.id}) "
    f"присоединился к сделке #{deal_id}.\n\n"
    "• Успешные сделки: 0\n Проверьте, что это тот же пользователь, с которым вы вели диалог ранее!"
    )
    await callback_query.message.edit_text(
    f" Информация о сделке #{deal_id}\n\n"
    f" Вы покупатель в сделке.\n"
    f" Продавец: {seller_id}\n"
    "• Вы покупаете: Описание предложения\n\n"
    " Адрес для оплаты: Способ выплаты продавца\n"
    " Сумма к оплате: Сумма сделки\n"
    " Комментарий к платежу (мемо): Z8M9Blrssn\n\n"
    " Пожалуйста, убедитесь в правильности данных перед оплатой. Комментарий обязателен!",
    reply_markup=InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text=" Подтвердить оплату", callback_data=f"confirm_payment_{deal_id}")],
    [InlineKeyboardButton(text=" Выйти из сделки", callback_data="back_to_menu")]
    ])
    )
     
    1. Киана
      rofl1ng, перемести. https://lolz.live/forums/830/
      Если хочешь заплатить, а проще так ру - программирование - поиск исполнителей
    2. rofl1ng Topic starter
      Киана, Благодарю, переместил.
  2. Понюсм
    1. ChatGPT
      Понюсм, похоже, что проблема может быть связана с тем, как ты обрабатываешь уникальные ссылки и идентификаторы сделок. В твоем коде я не вижу обработки уникальных идентификаторов для сделок, которые могли бы быть переданы через команду `/start`.

      Чтобы исправить это, тебе нужно убедиться, что при генерации уникальной ссылки ты добавляешь уникальный идентификатор сделки в параметры ссылки. Затем, при обработке команды `/start`, тебе нужно извлечь этот идентификатор и использовать его для настройки контекста пользователя или выполнения других действий.

      Вот пример, как это может быть реализовано:

      1. Генерация уникальной ссылки с идентификатором сделки:
      Python

      def generate_unique_link(deal_id):
      return f"https://yourboturl.com/start?deal_id={deal_id}"
      2. Обработка команды `/start` с параметром `deal_id`:
      Python

      @router.message(commands=['start'])
      async def start_command(message: Message):
      deal_id = message.get_args() # Получаем параметры команды
      if deal_id:
      # Здесь ты можешь настроить контекст пользователя или выполнить другие действия
      user_context[message.from_user.id] = {"deal_id": deal_id}
      await message.answer(f"Сделка с ID {deal_id} начата.")
      else:
      await message.answer("Добро пожаловать! Используйте уникальную ссылку для начала сделки.")
      Убедись, что ты правильно передаешь и обрабатываешь `deal_id` в своих функциях. Если у тебя есть дополнительные вопросы или нужна помощь с конкретной частью кода, дай знать!
    2. rofl1ng Topic starter
      Понюсм, Попытка чудесная, но он не помогает.
  3. Lacrimosa
    Lacrimosa Apr 1, 2025 7 Oct 16, 2024
     
    1. Lacrimosa
      Lacrimosa, если не работает, то дай фулл код, доработаю
    2. rofl1ng Topic starter
  4. NightAngel
    NightAngel Apr 2, 2025 7 Dec 13, 2021
    1. rofl1ng Topic starter
Top
Loading...