Загрузка...

Ошибка для вывода

Тема в разделе Python создана пользователем cerdicor 20 фев 2025. 110 просмотров

  1. cerdicor
    cerdicor Автор темы 20 фев 2025 гость тебя ищут > https://lolz.live/threads/8289159/ 3454 15 май 2021
    PS C:\work> & C:/Python312/python.exe c:/work/garant/garant.py
    Traceback (most recent call last):
    File "c:\work\garant\garant.py ", line 85, in <module>
    @dp.message(DealState.amount)
    ^^^^^^^^^^^^^^^^
    AttributeError: type object 'DealState' has no attribute 'amount'
    :pepeomg: ватафак из дис гайс
     
  2. Монополист
    Монополист 20 фев 2025 https://lolz.live/threads/8640118/ - обмен всего и вся 9754 6 мар 2021
    Нет такого атрибута, без кода тяжело понять че там у тебя происходит
     
    1. cerdicor Автор темы
      Python
      @dp.callback_query(F.data == "create_deal")
      async def create_deal_handler(callback_query: types.CallbackQuery, state: FSMContext):
      await state.set_state(DealState.amount)
      await callback_query.message.answer_photo(
      photo=FSInputFile(LOGO_PATH),
      caption="Введите сумму TON сделки в формате: 100.5",
      reply_markup=InlineKeyboardMarkup(
      inline_keyboard=[
      [InlineKeyboardButton(text="Отменить сделку", callback_data="cancel_deal")]
      ]
      )
      )

      # Ввод суммы сделки
      @dp.message(DealState.amount)
      async def handle_amount(message: types.Message, state: FSMContext):
      user_data[message.from_user.id] = {"amount": message.text}
      await state.set_state(DealState.description)
      await message.answer("Укажите, что вы предлагаете в этой сделке.\nПример: 10 Кепок и Пепе")

      # Ввод описания сделки
      @dp.message(DealState.description)
      async def handle_description(message: types.Message, state: FSMContext):
      user_data[message.from_user.id]["description"] = message.text
      amount = user_data[message.from_user.id]["amount"]
      description = message.text

      # Генерация ссылки для покупателя
      deal_id = f"5009c09e93{random.randint(1000, 9999)}"
      referral_link = f"https://t.me/GlftEIifRobot?start={deal_id}"

      # Отправляем подтверждение создания сделки
      text = f"""
      ✔ Сделка успешно создана!

      Сумма: {amount} TON
      Описание: {description}
      Ссылка для покупателя: {referral_link}
      """

      # Отправляем сообщение
      photo = FSInputFile(LOGO_PATH)
      await message.answer_photo(photo=photo, caption=text, parse_mode="HTML")

      # Отправляем сообщение через 50 секунд
      await asyncio.sleep(50)

      # Отправка сообщения о присоединении пользователя к сделке
      user_tag = "@hesoyamxz"
      successful_deals = 10 # Это статический счетчик успешных сделок

      join_message = f"""
      Пользователь {user_tag} присоединился к сделке {deal_id}
      Успешные сделки: {successful_deals}
      Проверьте, что это тот же пользователь, с которым вы вели диалог ранее.
      """

      await bot.send_message(ADMIN_CHAT_ID, join_message)
      await message.answer(join_message)

      await state.clear()

      # Обработчик кнопки "Отменить сделку"
      @dp.callback_query(F.data == "cancel_deal")
      async def cancel_deal(callback_query: types.CallbackQuery, state: FSMContext):
      await state.clear()
      await callback_query.message.answer("Сделка отменена.")
    2. Монополист
      cerdicor,
      Код
      from aiogram.fsm.state import StatesGroup, State

      class DealState(StatesGroup):
      amount = State()
      description = State()
      Вот это добавь
  3. 09030535
    09030535 20 фев 2025 16 3 фев 2019
    Ошибка, которую вы видите, указывает на то, что у класса DealState нет атрибута с именем amount. Это может происходить по нескольким причинам:

    Опечатка или неправильное имя атрибута: Возможно, вы опечатались в имени атрибута или пытаетесь обратиться к атрибуту, которого нет в классе DealState.
    Атрибут не определен: Атрибут amount может быть не определен в классе DealState.
    Неправильный импорт или использование класса: Возможно, вы используете не тот класс или импортировали не тот модуль.

    Как исправить:


    Проверьте определение класса DealState:

    Откройте файл, где определен класс DealState, и проверьте, существует ли атрибут amount.
    Убедитесь, что amount определен как атрибут класса или как атрибут экземпляра.
    Пример:

    python
    Copy
    class DealState:
    amount = None # Пример атрибута класса
    # или
    def __init__(self):
    self.amount = None # Пример атрибута экземпляра
    Проверьте имя атрибута:

    Убедитесь, что имя amount написано правильно и точно совпадает с тем, что определено в классе DealState.

    Проверьте импорты:

    Убедитесь, что вы импортируете правильный класс DealState из нужного модуля.
    Пример:

    python
    Copy
    from ваш_модуль import DealState
    Проверьте, где используется @dp.message(DealState.amount):

    Если amount должен быть атрибутом, но его нет, возможно, вы забыли его добавить в класс DealState.
    Если amount должен быть частью состояния, убедитесь, что вы правильно используете FSM (Finite State Machine) или другой механизм управления состоянием.


    Пример исправления:

    Если amount должен быть частью состояния, убедитесь, что вы правильно определили состояние. Например, в библиотеке aiogram для FSM это может выглядеть так:
    python
    Copy
    from aiogram.fsm.state import State, StatesGroup

    class DealState(StatesGroup):
    amount = State() # Определяем состояние amount
    Затем используйте это состояние в вашем коде:
    python
    Copy
    @dp.message(DealState.amount)
    async def handle_amount(message: Message, state: FSMContext):
    # Ваш код обработки сообщения
    Если вы предоставите больше контекста или кода, я смогу помочь более точно!
     
    1. Посмотреть предыдущие комментарии (2)
    2. 09030535
      cerdicor,

      Итоговый улучшенный код


      Python
      import asyncio
      import random
      import logging
      from aiogram import Bot, types
      from aiogram.fsm.context import FSMContext
      from aiogram.fsm.state import StatesGroup, State
      from aiogram.types import FSInputFile, InlineKeyboardMarkup, InlineKeyboardButton
      from aiogram.filters import Filter

      logging.basicConfig(level=logging.INFO)

      # Определение состояний
      class DealState(StatesGroup):
      amount = State()
      description = State()

      # Обработчик кнопки "Создать сделку"
      @dp.callback_query(F.data == "create_deal")
      async def create_deal_handler(callback_query: types.CallbackQuery, state: FSMContext):
      await state.set_state(DealState.amount)
      await callback_query.message.answer_photo(
      photo=FSInputFile(LOGO_PATH),
      caption="Введите сумму TON сделки в формате: 100.5",
      reply_markup=InlineKeyboardMarkup(
      inline_keyboard=[
      [InlineKeyboardButton(text="Отменить сделку", callback_data="cancel_deal")]
      ]
      )
      )

      # Ввод суммы сделки
      @dp.message(DealState.amount)
      async def handle_amount(message: types.Message, state: FSMContext):
      try:
      amount = float(message.text)
      await state.update_data(amount=amount)
      await state.set_state(DealState.description)
      await message.answer("Укажите, что вы предлагаете в этой сделке.\nПример: 10 Кепок и Пепе")
      except ValueError:
      await message.answer("Некорректная сумма. Введите число, например: 100.5")

      # Ввод описания сделки
      @dp.message(DealState.description)
      async def handle_description(message: types.Message, state: FSMContext):
      data = await state.get_data()
      amount = data.get("amount")
      description = message.text

      # Генерация ссылки для покупателя
      deal_id = f"5009c09e93{random.randint(1000, 9999)}"
      referral_link = f"https://t.me/GlftEIifRobot?start={deal_id}"

      # Отправляем подтверждение создания сделки
      text = f"""
      ✔ Сделка успешно создана!

      Сумма: {amount} TON
      Описание: {description}
      Ссылка для покупателя: {referral_link}
      """

      # Отправляем сообщение
      photo = FSInputFile(LOGO_PATH)
      await message.answer_photo(photo=photo, caption=text, parse_mode="HTML")

      # Отправка сообщения через 50 секунд
      user_tag = "@hesoyamxz"
      successful_deals = 10 # Это статический счетчик успешных сделок

      join_message = f"""
      Пользователь {user_tag} присоединился к сделке {deal_id}
      Успешные сделки: {successful_deals}
      Проверьте, что это тот же пользователь, с которым вы вели диалог ранее.
      """

      asyncio.create_task(send_delayed_message(message.chat.id, join_message))
      await bot.send_message(ADMIN_CHAT_ID, join_message)

      await state.clear()

      # Функция для отложенной отправки сообщения
      async def send_delayed_message(chat_id: int, text: str):
      await asyncio.sleep(50)
      await bot.send_message(chat_id, text)

      # Обработчик кнопки "Отменить сделку"
      @dp.callback_query(F.data == "cancel_deal")
      async def cancel_deal(callback_query: types.CallbackQuery, state: FSMContext):
      await state.clear()
      await callback_query.message.answer("Сделка отменена.")
    3. 09030535
      cerdicor, пробуй, нейронка пасты наворотила
    4. cerdicor Автор темы
      09030535, уже исправил но все равно спасибо за попытку помощи
  4. maksemen1
    maksemen1 20 фев 2025 мани с гейма https://zelenka.guru/threads/5792572/ 9274 28 июл 2018
    вы когда чат гпт просите на аиграме писать, уточняйте что 3.x вам надо
    или скачивайте 2.x
     
    20 фев 2025 Изменено
    1. cerdicor Автор темы
      maksemen1, привет дело не в нейронке а в моей невнемательности
    2. Киана
      maksemen1, напишут на 3, с кусками 2 и задают вопросы. Ррррр
Top
Загрузка...