问题描述
我设置了一个 discord.py cog,可以使用了.有一个问题,如何为命令设置别名?我会在下面给你我的代码,看看我还需要做什么:
I have a discord.py cog set up, ready to use. There is one issue, how do I set up aliases for commands? I'll give you my code below to see what else I need to do:
# Imports from discord.ext import commands import bot # My own custom module # Client commands class Member(commands.Cog): def __init__(self, client): self.client = client # Events @commands.Cog.listener() async def on_ready(self): print(bot.online) # Commands @commands.command() async def ping(self, ctx): pass # Setup function def setup(client): client.add_cog(Member(client))
这种情况下,@commands.command()
推荐答案
discord.ext.commands.Command 对象有一个 aliases 属性.使用方法如下:
discord.ext.commands.Command objects have a aliases attribute. Here's how to use it:
@commands.command(aliases=['testcommand', 'testing']) async def test(self, ctx): await ctx.send("This a test command")
然后您就可以通过编写 !test、!testcommand 或 !testing 来调用您的命令(如果您的命令前缀是!).
此外,如果您计划编写日志系统,Context 对象有一个 invoked_with 属性,它将调用命令时使用的别名作为值.
You'll then be able to invoke your command by writing !test, !testcommand or !testing (if your command prefix is !).
Also, if you plan on coding a log system, Context objects have a invoked_with attribute which takes the aliase the command was invoked with as a value.
参考: discord.py 文档
如果您只想让您的 cog 管理员,您可以覆盖现有的 cog_check 函数,该函数将在调用来自该 cog 的命令时触发:
If you want to make your cog ***** only, you can overwrite the existing cog_check function that will trigger when a command from this cog is invoked:
from discord.ext import commands from discord.utils import get class *****(commands.Cog): def __init__(self, bot): self.bot = bot async def check_cog(self, ctx): ***** = get(ctx.guild.roles, name="*****") #False -> Won't trigger the command return ***** in ctx.author.role