Загрузка...

Шо с ботом тг который я поставил на убунту и обкекался ?

Тема в разделе Python создана пользователем inactive_38348 8 мар 2025. 262 просмотра

  1. inactive_38348
    inactive_38348 Автор темы 8 мар 2025 2151 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 в системе стоит обычно
     
    8 мар 2025 Изменено
    1. inactive_38348 Автор темы
  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-бот должен начать работать без ошибок.
     
    1. inactive_38348 Автор темы
  4. GG_dAc
    GG_dAc 8 мар 2025 34 1 янв 2023
    Не тот возможно, обнови пакеты зайди в виртуальное окружение и пропиши pip install aiogram
     
    1. Посмотреть предыдущие комментарии (17)
    2. GG_dAc
    3. GG_dAc
    4. inactive_38348 Автор темы
      huzzyb001,
  5. huzzyb001
    huzzyb001 8 мар 2025 0 26 янв 2025
    так ты может юзаешь pip вместо pip3 при установке библиотек
     
    1. huzzyb001
      inactive_38348,
  6. Hack3r512
    Hack3r512 8 мар 2025 59 3 янв 2020
    Похоже у тебя стоит aiogram 3 версии, а надо второй. Сам с подобным сталкивался. Попробуй поставить версию 2.22.2 командой
    Python
    pip install aiogram==2.22.2
     
  7. TheAzot
    Кент ты venv включил?
     
    1. inactive_38348 Автор темы
      TheAzot, щас другая проблема : D
  8. TheAzot
    Понял
     
    1. Посмотреть предыдущие комментарии (11)
    2. inactive_38348 Автор темы
      TheAzot, можешь в другой теме хелпануть плиз
  9. TheAzot
    а сорян, тикток спамер 7 часов делал
     
Top
Загрузка...