Загрузка...

В чем проблема?

Тема в разделе Python создана пользователем rofl1ng 1 апр 2025. 140 просмотров

  1. rofl1ng
    rofl1ng Автор темы 1 апр 2025 Предприниматель. 312 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. inletah
      rofl1ng, перемести. https://lolz.live/forums/830/
      Если хочешь заплатить, а проще так ру - программирование - поиск исполнителей
    2. rofl1ng Автор темы
      inletah, Благодарю, переместил.
  2. Понюсм
    Понюсм 1 апр 2025 5 22 окт 2021
    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 Автор темы
      Понюсм, Попытка чудесная, но он не помогает.
  3. Lacrimosa
    Lacrimosa 1 апр 2025 7 16 окт 2024
     
    1. Lacrimosa
      Lacrimosa, если не работает, то дай фулл код, доработаю
    2. rofl1ng Автор темы
      1 апр 2025 Изменено
  4. NightAngel
    NightAngel 2 апр 2025 7 13 дек 2021
Загрузка...
Top