这是我的代码:
@commands.group(name=f'{prefix}stop', hidden=True)
@commands.is_owner()
async def stop(self, ctx):
await ctx.message.add_reaction('\N{THUMBS UP SIGN}')
await self.bot.logout()
sys.exit()
我想知道命令名称中是否可以包含前缀。
我尝试在__init__
中添加一个额外的输入,例如:__init__(self, bot, prefix='')
能够管理是否需要前缀。然后,以我尝试的名称为f'{self.prefix}stop'
,但它返回了我NameError: name 'self' is not defined
否,您的group
装饰器是在创建类时而不是在实例创建时进行评估的。但是,由于Cog.__new__
为每个实例创建了组/命令的副本,因此我们可以在Cog.__init__
中修改名称:
from discord.ext import commands
class MyCog(commands.Cog):
def __init__(self, bot, prefix=''):
self.stop.name = prefix + self.stop.name
@commands.group(hidden=True)
async def stop(self, ctx):
await ctx.send(self.stop.name)