我有一个带有齿轮的公共(public)机器人,但我刚刚测试过,如果我加载/卸载一个齿轮,那么它会在它所在的每个服务器上加载/卸载该齿轮,这对于公共(public)机器人来说当然是可怕的

我将显示我的加载和卸载命令:

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

 await ctx.send(f"Successfully loaded the {extension} module :thumbsup: ")

@load.error
async def load_error(ctx, error):
 await ctx.send(f"The following error occured:```\n{error}\n```")

是加载命令,并且:

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

 await ctx.send(f"Successfully unloaded the {extension} module :thumbsup: ")

@unload.error
async def unload_error(ctx, error):
 await ctx.send(f"The following error occured:```\n{error}\n```")

是卸载命令

编辑:我不介意尝试我正在尝试的东西以外的东西

最佳答案

对此的解决方案是为您不希望公开的齿轮中的每个命令添加一个简单的检查

#add a check to the top of the cog
def isPrivateCommand():
    async def predicate(ctx):
        return ctx.guild.id == YOURGUILDIDHERE
    return commands.check(predicate)

.
.
.

@commands.command
@isPrivateCommand()
async def ...

此检查应确保该命令仅在您的公会中执行(您放入检查中的公会 ID)。

可以在 here 找到有关检查的文档,用于 discord.py 重写

快乐编码!

关于python - Discord.py - 如何为每个服务器制作齿轮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56916693/

10-10 21:03