Загрузка...

Sho with a TG boot that I put on the Ubuntu and got stuck?

Thread in Python created by inactive_38348 Mar 8, 2025. 272 views

  1. inactive_38348
    inactive_38348 Topic starter Mar 8, 2025 2151 Aug 29, 2019
    Python
    import logging
    import json
    from aiogram import Bot, Dispatcher, types
    from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
    from aiogram.utils import executor

    TOKEN = "TOKEN"
    ADMIN_CODE = "XXXX-XXXX-XXXX-XXXX"
    ADMIN_ID = ADMIN_ID # Telegram ID

    bot = Bot(token=TOKEN)
    dp = Dispatcher(bot)
    logging.basicConfig(level=logging.INFO)

    user_data = {}
    requests = {}
    user_messages = {} # Храним последнее сообщение пользователя

    # Кнопки для первого вопроса
    first_question_kb = InlineKeyboardMarkup().add(
    InlineKeyboardButton("1", callback_data="first_1"),
    InlineKeyboardButton("2", callback_data="first_2")
    )

    # Кнопки для третьего вопроса
    third_question_kb = InlineKeyboardMarkup().add(
    InlineKeyboardButton("1", callback_data="third_1"),
    InlineKeyboardButton("2", callback_data="third_2"),
    InlineKeyboardButton("3", callback_data="third_3")
    )

    def get_admin_keyboard():
    kb = InlineKeyboardMarkup()
    for user_id, status in requests.items():
    kb.add(InlineKeyboardButton(f"{user_id} {status}", callback_data=f"admin_{user_id}"))
    return kb if requests else None

    @dp.message_handler(commands=['start'])
    async def start(message: types.Message):
    user_data[message.from_user.id] = {}
    await message.answer("Выбери 1 или 2", reply_markup=first_question_kb)

    @dp.callback_query_handler(lambda c: c.data.startswith("first_"))
    async def first_answer(callback: types.CallbackQuery):
    choice = int(callback.data.split("_")[1])
    user_data[callback.from_user.id]["first"] = choice
    await callback.message.answer("Введите число:")

    @dp.message_handler(lambda message: message.text.isdigit())
    async def handle_number(message: types.Message):
    user_id = message.from_user.id
    if "first" not in user_data.get(user_id, {}):
    return await message.answer("Сначала выберите 1 или 2.")

    choice = user_data[user_id]["first"]
    num = int(message.text)
    max_val = 1300 if choice == 1 else 900

    if num < 1:
    return await message.answer("Error (minimum 1)")
    if num > max_val:
    return await message.answer(f"Error (maximum {max_val})")

    category = "TEST MIN" if num <= 300 else "TEST MID" if num <= (700 if choice == 1 else 600) else "TEST MAX"
    user_data[user_id]["amount"] = num
    await message.answer(category)
    await message.answer("Выбери 1, 2 или 3", reply_markup=third_question_kb)

    @dp.callback_query_handler(lambda c: c.data.startswith("third_"))
    async def third_answer(callback: types.CallbackQuery):
    choice = int(callback.data.split("_")[1])
    user_id = callback.from_user.id
    user_data[user_id]["third"] = choice
    requests[user_id] = "⏳"
    await callback.message.answer("Ваши ответы записаны!")

    @dp.message_handler()
    async def save_user_message(message: types.Message):
    user_messages[message.from_user.id] = message.message_id # Запоминаем только последнее сообщение

    @dp.message_handler(lambda message: message.text == ADMIN_CODE)
    async def admin_panel(message: types.Message):
    if message.from_user.id == ADMIN_ID:
    kb = get_admin_keyboard()
    if kb:
    await message.answer("Админ-панель:", reply_markup=kb)
    else:
    await message.answer("Нет заявок.")

    @dp.callback_query_handler(lambda c: c.data.startswith("admin_"))
    async def admin_review(callback: types.CallbackQuery):
    user_id = int(callback.data.split("_")[1])
    answers = user_data.get(user_id, {})

    text = (f" **Заявка пользователя {user_id}:**\n\n"
    f"1 Выбор: {answers.get('first', '?')}\n"
    f"2 Сумма: {answers.get('amount', '?')}\n"
    f"3 Выбор: {answers.get('third', '?')}\n")

    kb = InlineKeyboardMarkup().add(
    InlineKeyboardButton("✅", callback_data=f"approve_{user_id}"),
    InlineKeyboardButton("⏳", callback_data=f"pending_{user_id}"),
    InlineKeyboardButton("❌", callback_data=f"reject_{user_id}")
    )

    await callback.message.answer(text, reply_markup=kb)

    if user_id in user_messages:
    try:
    await bot.forward_message(ADMIN_ID, user_id, user_messages[user_id])
    except Exception as e:
    print(f"Ошибка пересылки сообщения {user_id}: {e}")

    @dp.callback_query_handler(lambda c: c.data.startswith("approve_"))
    async def approve_request(callback: types.CallbackQuery):
    user_id = int(callback.data.split("_")[1])
    requests[user_id] = "✅"
    await callback.message.edit_text(f"Заявка пользователя {user_id} подтверждена ✅")

    @dp.callback_query_handler(lambda c: c.data.startswith("pending_"))
    async def pending_request(callback: types.CallbackQuery):
    await callback.answer("Заявка остается в ожидании")

    @dp.callback_query_handler(lambda c: c.data.startswith("reject_"))
    async def reject_request(callback: types.CallbackQuery):
    user_id = int(callback.data.split("_")[1])
    requests.pop(user_id, None)
    await callback.message.edit_text(f"Заявка пользователя {user_id} удалена ❌")

    if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=True)

    [IMG]

    aiogram установлен тип, :colobok_idk:
     
  2. gpt
    ты уверен что установил pip3 юзая?
    вроде как дефолт питон 3.12 в системе стоит обычно
     
  3. n3xus
    ### Ответ на ваш запрос: "В чем проблема?"

    Судя по предоставленной информации, вы пытаетесь запустить скрипт `monke_test2.py`, который представляет собой Telegram-бот, написанный с использованием библиотеки `aiogram`. Однако при запуске скрипта с помощью команды `python3 "monke_test2.py"` возникает ошибка:

    ```
    ModuleNotFoundError: No module named 'aiogram'
    ```

    Эта ошибка появляется на строке 3 вашего кода, где выполняется импорт:

    ```Python
    from aiogram import Bot, Dispatcher, types
    ```

    Давайте разберем, в чем проблема и как ее исправить.

    ---

    #### Проблема
    Ошибка `ModuleNotFoundError: No module named 'aiogram'` означает, что Python не может найти библиотеку `aiogram` в среде, в которой вы запускаете скрипт. Это происходит по одной из следующих причин:

    1. **Библиотека `aiogram` не установлена**:
    - Вы могли забыть установить эту библиотеку в вашей системе или в текущей среде Python.
    2. **Проблемы с окружением**:
    - Если вы используете виртуальное окружение, возможно, оно не активировано, или библиотека не установлена в этом окружении.
    3. **Несоответствие версии Python**:
    - Библиотека могла быть установлена для другой версии Python (например, Python 2), а вы запускаете скрипт с помощью `python3`.

    Так как вы используете команду `python3 "monke_test2.py"`, это указывает на то, что вы работаете с Python 3. Следовательно, библиотека `aiogram` должна быть установлена именно для этой версии.

    ---

    #### Решение
    Чтобы устранить проблему, вам нужно установить библиотеку `aiogram` в вашу среду Python. Вот пошаговые инструкции:

    1. **Установите библиотеку `aiogram`**:
    - Откройте терминал и выполните следующую команду:
    ```bash
    pip3 install aiogram
    ```
    - Эта команда установит `aiogram` для Python 3, который вы используете для запуска скрипта.

    2. **Проверка установки**:
    - После установки убедитесь, что библиотека доступна. Выполните в терминале:
    ```bash
    python3 -c "import aiogram"
    ```
    - Если команда выполняется без ошибок, значит, библиотека установлена корректно.

    3. **Если вы используете виртуальное окружение**:
    - Убедитесь, что виртуальное окружение активировано перед установкой библиотеки и запуском скрипта. Например:
    ```bash
    source /path/to/your/venv/bin/activate # Для Linux/MacOS
    ```
    Затем выполните `pip install aiogram` внутри активированного окружения.

    4. **Запустите скрипт снова**:
    - После установки библиотеки выполните:
    ```bash
    python3 "monke_test2.py"
    ```
    - Ошибка `ModuleNotFoundError` больше не должна появляться.

    ---

    #### Дополнительные рекомендации
    - **Проверка версии `pip`**:
    - Убедитесь, что `pip3` соответствует вашему `python3`. Выполните:
    ```bash
    pip3 --version
    ```
    Если версия указывает на другой интерпретатор Python, используйте:
    ```bash
    python3 -m pip install aiogram
    ```

    - **Работа от имени root**:
    - Вы запускаете скрипт из директории `/root@QW:/monke_test#` как пользователь `root`. Это не является причиной ошибки, но будьте осторожны при установке библиотек от имени root, так как это влияет на системную установку Python. Если это не преднамеренно, лучше работать в обычной пользовательской директории.

    - **Проверка кода**:
    - Убедитесь, что в строке импорта нет опечаток. В вашем коде все выглядит правильно:
    ```Python
    from aiogram import Bot, Dispatcher, types
    ```

    ---

    #### Итог
    Проблема заключается в том, что библиотека `aiogram` не установлена в среде Python, используемой для запуска вашего скрипта `monke_test2.py`. Чтобы исправить это, установите библиотеку с помощью команды `pip3 install aiogram`. Если вы используете виртуальное окружение, активируйте его перед установкой. После этого ваш Telegram-бот должен начать работать без ошибок.
     
  4. GG_dAc
    GG_dAc Mar 8, 2025 34 Jan 1, 2023
    Не тот возможно, обнови пакеты зайди в виртуальное окружение и пропиши pip install aiogram
     
    1. View previous comments (17)
    2. GG_dAc
    3. GG_dAc
    4. inactive_38348 Topic starter
      huzzyb001,
  5. huzzyb001
    huzzyb001 Mar 8, 2025 0 Jan 26, 2025
    так ты может юзаешь pip вместо pip3 при установке библиотек
     
    1. huzzyb001
      inactive_38348,
  6. Hack3r512
    Hack3r512 Mar 8, 2025 59 Jan 3, 2020
    Похоже у тебя стоит aiogram 3 версии, а надо второй. Сам с подобным сталкивался. Попробуй поставить версию 2.22.2 командой
    Python
    pip install aiogram==2.22.2
     
  7. TheAzot
    Кент ты venv включил?
     
    1. inactive_38348 Topic starter
      TheAzot, щас другая проблема : D
  8. TheAzot
    Понял
     
    1. View previous comments (10)
    2. TheAzot
      inactive_38348, да я чесно хз, воозможно venv возможно в коде мусор был, возможно gpt нахуярил на версии aiogram 1 , когда 2 версия клянусь
    3. inactive_38348 Topic starter
      TheAzot, можешь в другой теме хелпануть плиз
    4. View the next comments (1)
  9. TheAzot
    а сорян, тикток спамер 7 часов делал
     
Top
Loading...