当我将命令放入单独的文件时,找不到命令错误

Posted

技术标签:

【中文标题】当我将命令放入单独的文件时,找不到命令错误【英文标题】:Command not found error when i put command into a separate file 【发布时间】:2021-07-26 08:14:51 【问题描述】:

我最近刚刚尝试清理我的 main.py 文件,因为其中有很多代码。我想将每个命令存储到一个文件中。我从清除/清除命令开始。每当我输入>clean 时,我都会收到错误消息“找不到命令”。我该如何解决?一些 main.py 和 clear.py 的代码如下。任何帮助,将不胜感激! :D

MAIN.PY

import discord
from discord import User
import os
from keep_alive import keep_alive
from discord.ext import commands
import random
import requests
import json
import asyncio
from discord.ext.commands import MissingPermissions
from discord.ext.commands import Bot, Greedy
from discord.ext.commands import CommandNotFound
bot=commands.Bot(command_prefix = '>')
bot.remove_command("help")

@bot.event
async def on_ready():
 print('The bot is online')
 await bot.change_presence(activity=discord.Game('>help | Bot made by ColeTMK'))

CLEAR.PY

from discord.ext import commands
import asyncio
from discord.ext.commands import MissingPermissions
bot=commands.Bot(command_prefix = '>')

class Clear():
    def __init__(self, bot):
        self.bot = bot

@bot.command()
@commands.has_permissions(manage_messages=True)
async def clear(ctx, amount=5):
 await ctx.channel.purge(limit=amount+1)
 embed=discord.Embed(title="Clear Messages", description=f'amount messages were deleted!', color=0x00FFFF)
 await ctx.send(embed=embed)
 await asyncio.sleep(3)
 await ctx.channel.purge(limit=1)

@clear.error
async def clear_error(ctx, error):
   if isinstance(error, MissingPermissions):
       await ctx.send(f"ctx.author.mention, Sorry, you do not have permission to do that!")

def setup(bot):
  bot.add_cog(Clear(bot))

【问题讨论】:

这能回答你的问题吗? How do I use cogs with discord.py? 【参考方案1】:

编辑:使用 COGS 的更好解决方案

实际上 discord.py 允许“cogs”,请参阅此处的文档:https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html

这里也是一个例子:https://gist.github.com/leovoel/46cd89ed6a8f41fd09c5

【讨论】:

我试过了,但没有用。它说 import clear 未使用。 它不起作用,因为您没有使用相同的机器人实例,您在 main.py 和 clear.py 中定义了机器人。我建议将机器人作为参数传递。 那么在我的 clear.py 文件或 main.py 文件中传递 bot 作为参数? 更新了我的答案以使用 cogs 而不是相同的机器人实例。 @Stoobish 好的,我想我正确地添加了这个 cog.. 如果我这样做了.. 我仍然收到错误说 >clear 不是命令。我更新了问题中的代码。

以上是关于当我将命令放入单独的文件时,找不到命令错误的主要内容,如果未能解决你的问题,请参考以下文章

“apktool:找不到命令”错误

找不到快速命令

环回错误:找不到模型:书:当我使用命令创建新模型后尝试运行时

制作:c:找不到命令

MSYS 错误“rem:找不到命令”

易语言问题 错误(36): 找不到指定的对象成员命令名称“取文本长度”。