discord.ext.commands.errors.ExtensionNotFound: Расширение 'cogs.random' не может быть загружено - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь запустить мой диск-бот с расширением команд, чтобы я мог хранить все свои команды отдельно в папке commands, однако каждый раз, когда я хочу запустить бот, я получаю кучу ошибок в терминале, вот и все :

Терминал: ./bot.py

Traceback (most recent call last):
  File "/home/xinto/.local/lib/python3.6/site-packages/discord/ext/commands/bot.py", line 621, in load_extension
    lib = importlib.import_module(name)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'cogs.random'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "handlerbot.py", line 36, in <module>
    client.load_extension(f'cogs.{filename[:-3]}')
  File "/home/xinto/.local/lib/python3.6/site-packages/discord/ext/commands/bot.py", line 623, in load_extension
    raise errors.ExtensionNotFound(name, e) from e
discord.ext.commands.errors.ExtensionNotFound: Extension 'cogs.random' could not be loaded.

bot.py:

#!/usr/bin/python3.6

import discord
from dotenv import load_dotenv
import random
from discord.ext import commands
import os

load_dotenv()
TOKEN = os.getenv('TOKEN')

client = commands.Bot(command_prefix = '!')

#this script types "Connected!" in terminal if nothing has gone wrong    
@client.event
async def on_ready():
    print('Connected!')        

#this script makes sure that bot doesn't reply to itself
@client.event
async def on_message(message):
    if message.author == client.user:
        return

@client.command()
async def load(ctx, extension):
    client.load_extension(f'cogs.{extension}')

@client.command()
async def unload(ctx, extension):
    client.unload_extension(f'cogs.{extension}')

for filename in os.listdir('./commands'):
    if filename.endswith('.py'):
        client.load_extension(f'cogs.{filename[:-3]}')

client.run(TOKEN)

случайно .py:

import discord
import os
from discord.ext import commands

class random(commands.Cog):

    def __init__(self, client):
        self.client = client

    @commands.command()
    async def random(self, ctx):
        for filename in os.listdir(./images):
        list = '1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg', '10.jpg', '11.jpg', '12.jpg'
        await ctx.send('take this', file=discord.File(random.choice(list)))

def setup(client):
    client.add_cog(random(client))

Я не могу винить random.py, поскольку он делает то же самое с другими моими командами, я проверил код и не смог найти никаких причин, почему он не должен ' т работа. любая помощь будет высоко ценится, спасибо!

1 Ответ

0 голосов
/ 07 января 2020

Хорошо, я понял это. Мне пришлось переименовать f'cogs{extension} В f'commands{extension}

Если у кого-то есть такая же проблема, вы должны переименовать cogs с именем папки, в которой у вас есть команды, т.е. для моего случая это называется commands, надеюсь я кому-то помог

...