Ошибка с модулями айограмма 3.0, как исправить?Python

Программы на Python
Ответить
Anonymous
 Ошибка с модулями айограмма 3.0, как исправить?

Сообщение Anonymous »

Вчера я работал над ботом для Telegram, используя aiogram 3.0. Я установил все необходимые библиотеки в виртуальную среду (venv) и несколько раз все перепроверил. Однако, когда я пытаюсь запустить код, я постоянно получаю сообщение об ошибке. Любая помощь будет оценена по достоинству!

Код: Выделить всё


Exception has occurred: ModuleNotFoundError

No module named 'aiogram'

File "/home/nwlie/Giveaway/bot.py", line 2, in 

from aiogram import Bot, Dispatcher, types

ModuleNotFoundError: No module named 'aiogram'
Код:

Код: Выделить всё


import asyncio

import sqlite3

from datetime import datetime

from aiogram import Bot, Dispatcher, types

from aiogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery, FSInputFile

from aiogram.filters import CommandStart, Command

from aiogram.fsm.storage.memory import MemoryStorage

from aiogram.exceptions import TelegramBadRequest

# =======================

# НАСТРОЙКИ

# =======================

TOKEN = "YOUR_BOT_TOKEN"  # Вставьте ваш токен

ADMIN_IDS = {5042914354, 5871506949}  # ID администраторов

CHANNEL_ID = "@community_so2"   # Канал для проверки подписки

bot = Bot(token=TOKEN, parse_mode="HTML")

storage = MemoryStorage()

dp = Dispatcher(storage=storage)

# =======================

# БАЗА ДАННЫХ

# =======================

def init_db():

conn = sqlite3.connect('bot.db')

c = conn.cursor()

c.execute('''CREATE TABLE IF NOT EXISTS users (

telegram_id INTEGER UNIQUE,

username TEXT,

coins INTEGER DEFAULT 0,

invited_by INTEGER,

blocked INTEGER DEFAULT 0

)''')

c.execute('''CREATE TABLE IF NOT EXISTS raffles (

id INTEGER PRIMARY KEY AUTOINCREMENT,

title TEXT,

description TEXT,

image TEXT,

end_date TEXT,

participants TEXT DEFAULT ''

)''')

conn.commit()

conn.close()

def add_user(telegram_id, username, invited_by=None):

conn = sqlite3.connect('bot.db')

c = conn.cursor()

c.execute('SELECT * FROM users WHERE telegram_id = ?', (telegram_id,))

if not c.fetchone():

c.execute('INSERT INTO users (telegram_id, username, invited_by) VALUES (?, ?, ?)',

(telegram_id, username, invited_by))

if invited_by:

c.execute('UPDATE users SET coins = coins + 5 WHERE telegram_id = ?', (invited_by,))

c.execute('UPDATE users SET coins = coins + 2 WHERE telegram_id = ?', (telegram_id,))

conn.commit()

conn.close()

def update_coins(telegram_id, amount):

conn = sqlite3.connect('bot.db')

c = conn.cursor()

c.execute('UPDATE users SET coins = coins + ? WHERE telegram_id = ?', (amount, telegram_id))

conn.commit()

conn.close()

def add_participant(raffle_id, user_id):

conn = sqlite3.connect('bot.db')

c = conn.cursor()

c.execute('SELECT participants FROM raffles WHERE id = ?', (raffle_id,))

participants = c.fetchone()[0]

if str(user_id) not in participants.split(","):

participants += f",{user_id}"

c.execute('UPDATE raffles SET participants = ? WHERE id = ?', (participants, raffle_id))

conn.commit()

conn.close()

# =======================

# ПРОВЕРКА ПОДПИСКИ

# =======================

async def check_subscription(user_id):

try:

user_status = await bot.get_chat_member(CHANNEL_ID, user_id)

return user_status.status in ["member", "administrator", "creator"]

except:

return False

# =======================

# ХЭНДЛЕРЫ

# =======================

@dp.message(CommandStart())

async def start_handler(message: Message):

add_user(message.from_user.id, message.from_user.username)

markup = InlineKeyboardMarkup(inline_keyboard=[

[InlineKeyboardButton(text="👤 Профиль", callback_data="profile")],

[InlineKeyboardButton(text="🎉 Розыгрыши", callback_data="raffles")]

])

await message.answer("Добро пожаловать! Выберите действие:", reply_markup=markup)

@dp.callback_query(lambda c: c.data == "profile")

async def profile_handler(callback: CallbackQuery):

conn = sqlite3.connect('bot.db')

c = conn.cursor()

c.execute('SELECT coins FROM users WHERE telegram_id = ?', (callback.from_user.id,))

coins = c.fetchone()

if coins:

await callback.message.edit_text(f"👤 Ваш профиль:\n💰 Баланс Coins: {coins[0]}")

else:

await callback.message.edit_text("Профиль не найден.")

@dp.callback_query(lambda c: c.data == "raffles")

async def raffles_handler(callback:  CallbackQuery):

conn = sqlite3.connect('bot.db')

c = conn.cursor()

c.execute('SELECT id, title, description FROM raffles')

raffles = c.fetchall()

if not raffles:

await callback.message.edit_text("🎉 Розыгрышей пока нет.")

else:

for raffle in raffles:

await callback.message.answer(f"🎁 {raffle[1]}\n{raffle[2]}\n\nУчаствуйте!")

conn.close()

@dp.message(Command("admin"))

async def admin_panel(message: Message):

if message.from_user.id not in ADMIN_IDS:

await message.reply("У вас нет доступа к этой панели.")

return

markup = InlineKeyboardMarkup(inline_keyboard=[

[InlineKeyboardButton(text="➕ Создать розыгрыш", callback_data="create_raffle")],

[InlineKeyboardButton(text="💰 Выдать Coins", callback_data="give_coins")],

])

await message.answer("Админ-панель:", reply_markup=markup)

@dp.callback_query(lambda c: c.data == "create_raffle")

async def create_raffle(callback: CallbackQuery):

await callback.message.answer("Отправьте информацию о розыгрыше в формате:\n\n||")

@dp.message(lambda m: "|" in m.text and m.from_user.id in ADMIN_IDS)

async def save_raffle(message: Message):

title, description, end_date = message.text.split("|")

conn = sqlite3.connect('bot.db')

c = conn.cursor()

c.execute('INSERT INTO raffles (title, description, end_date) VALUES (?, ?, ?)', (title, description, end_date))

conn.commit()

conn.close()

await message.reply(f"🎉 Розыгрыш '{title}' создан!")

# =======================

# ЗАПУСК БОТА

# =======================

async def main():

init_db()

await dp.start_polling(bot)

if __name__ == '__main__':

asyncio.run(main())

Все библиотеки установлены в виртуальную среду, которая подключена к папке бота, но все равно выдает ошибку. :( ChatGPT не помог и просто продолжал давать мне общие ответы.

Подробнее здесь: https://stackoverflow.com/questions/793 ... how-to-fix
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»