Почему терминал выдает мне эту ошибку, и все модули импортируются?

#python #discord.py

Вопрос:

я новичок в discord.py и я хочу создать код загрузчика youtube, но это не работает, Вот мой код:

 @bot.event
async def on_message(message):
    if message.author == bot.user:
        return
    if message.content.startswith('-a'):
        msg = message.content        
        print(f'Mesagge content: {msg} n')
        url = re.findall(r'(?:(?:https?|ftp)://)?[w/-?=%.] .[w/-?=%.] ', msg)
        print(url)
        if url:
            if (len(url) == 1):
                validated_yt_url_1 = 'https://www.youtube.com/watch?v='
                validated_yt_url_2 = 'https://youtu.be/'
                if(validated_yt_url_1 in url[0] or validated_yt_url_2 in url[0]):
                    print('Youtube link is valid...')
                    mp3.song(url)
                    os.listdir()
                    for files in glob.glob('*.mp3'):
                        file_size = getsize(files)
                        file_size = int(file_size)
                        if file_size > 8000000:
                            print('The file size is over 8MB...n')

                            embedVar = discord.Embed(title="Something went wrong :confused:nnTry sending a song that is under 7 minutes long, nbecause of Discord's file size limit.\Check out -help and -info commands.", color=0x0066ff)
                            await message.channel.send(embed=embedVar)
                            os.remove(files)
                            print('File was removed')
                        else:                
                            await message.channel.send(file=discord.File(files))
                            print('File was sent...n')
                            os.remove(files)
                            print('File was deleted...n')  
                else:
                    await message.channel.send(embed=embedVar)
                    print('The link was not valid')
            else: 
                embedVar = discord.Embed(title="Something went wrong :confused: nnIt looks like you sent more than one url's, please send one url at time.nnCheck out -help and -info commands.", color=0x0066ff)
                await message.channel.send(embed=embedVar)
 

И ошибка в том, что:

 Mesagge content: -a https://www.youtube.com/watch?v=-LkmFwYvyd8 
['https://www.youtube.com/watch?v=-LkmFwYvyd8']
Youtube link is valid...
Ignoring exception in on_message
Traceback (most recent call last):
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "main.py", line 656, in on_message
    mp3.song(url)
AttributeError: module 'mp3' has no attribute 'song'
 

Если кто-нибудь мне поможет, я буду признателен за это, следует также отметить, что у меня есть и другие события, такие как on_message_edit

Ответ №1:

Как указано в сообщении об ошибке, модуль mp3 был импортирован, но не содержит названной функции song . Я предполагаю, что это из пакета, который вы установили. Либо он не содержит song , и вам нужно прочитать документацию по этому модулю, чтобы узнать, как его правильно использовать, либо у вас есть свой собственный файл с именем mp3.py это импортируется вместо ожидаемого модуля.