如何在discord.py齿轮中创建别名?

时间:2020-07-23 20:34:30

标签: python python-3.x discord.py-rewrite

我已经设置好discord.py齿轮了,可以使用了。有一个问题,如何为命令设置别名?我将在下面给您我的代码,以查看我还需要做些什么:

# 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))

在这种情况下,如何在ping下为@commands.command()命令设置别名?

1 个答案:

答案 0 :(得分:2)

discord.ext.commands.Command对象具有aliases属性。使用方法如下:

@commands.command(aliases=['testcommand', 'testing'])
async def test(self, ctx):
    await ctx.send("This a test command")

然后,您可以通过编写!test!testcommand!testing(如果命令前缀为!)来调用命令。
另外,如果您打算对日志系统进行编码,则Context对象具有invoked_with属性,该属性采用调用命令的别名作为值。

参考discord.py documentation
编辑:如果您只想让齿轮管理员成为管理员,则可以覆盖现有的cog_check函数,该函数将在调用该齿轮命令时触发:

from discord.ext import commands
from discord.utils import get

class Admin(commands.Cog):
    def __init__(self, bot)
        self.bot = bot

    async def check_cog(self, ctx):
        admin = get(ctx.guild.roles, name="Admin")
        #False -> won't trigger the command
        return admin in ctx.author.role