Ctx 是缺少 discrd.py 的必需参数

时间:2021-07-21 11:25:49

标签: python discord discord.py

这4个代码来自同一组

create_voice(make v) 和 create_nsfw(make n) 正在工作

create_text(make t) 和 create_channel(make c) 不起作用

textchannel 函数没有获得应该传递的上下文,但 voicensfw 工作得很好

不要介意 Namerror 我只是想证明它使用相同的语法很奇怪,但其中 1/2 不起作用

@commands.group()
async def make(self, ctx):
    """make channel c,t,v,n [name]"""
    if ctx.invoked_subcommand is None:
        await ctx.send('Invalid sub command passed...')
@make.command(pass_context=True, aliases=['category'])
async def c(self, ctx, name):
    """create Category"""
    existing_category = discord.utils.get(ctx.guild.categories, name=name)
    if existing_category is None:
        await ctx.create_category_channel(name=name)
        embed = discord.Embed(title=f"Creating {name}", color=0x5cbac4, timestamp=datetime.now())
        await ctx.send(embed=embed)
        await ctx.send(f"{discord.utils.get(ctx.guild.categories, name=name).mention}")
    else:
        ctx.send(f"{name} already exists")
@make.command(pass_context=True, aliases=['text', "Text"])
async def t(self, ctx, name, category=None):
     """create Text channel"""
     channel = discord.utils.get(ctx.guild.channels, name=name, category=category)
     if channel is None:
        await ctx.guild.create_text_channel(name=name, category=category)
        embed = discord.Embed(title=f"Creating {name}: ", color=0x5cbac4,
                              timestamp=datetime.now())
        await ctx.send(embed=embed)
        await ctx.send(f"{discord.utils.get(ctx.guild.channels, name=name).mention}")
     else:
        ctx.send(f"{name} already exists")
@make.command(pass_context=True, aliases=['voice', "Voice"])
async def v(self, ctx, name, category=None):
     """create Voice channel"""
     channel = discord.utils.get(ctx.guild.channels, name=name, category=category)
     if existing_channel is None:
         await ctx.guild.create_voice_channel(name=name, category=category)
         embed = discord.Embed(title=f"Creating {name}: ", color=0x5cbac4,
                               timestamp=datetime.now())
         await ctx.send(embed=embed)
         await ctx.send(f"{discord.utils.get(ctx.guild.channels, name=name).mention}")
     else:
         ctx.send(f"{name} already exists")
@make.command(pass_contex=True, aliases=['nsfw', "NSFW"])
@commands.has_permissions(manage_channels=True)
async def n(self, ctx, name, category=None):
    existing_channel = discord.utils.get(ctx.guild.channels, name=name, category=category)
    if existing_channel is None:
        await ctx.guild.create_text_channel(name=name, category=category, nsfw=True)
        embed = discord.Embed(title=f"Creating {name}:", color=0x5cbac4, timestamp=datetime.now())
        await ctx.send(embed=embed)
        await ctx.send(f"{discord.utils.get(ctx.guild.channels, name=name).mention}")
    else:
        ctx.send(f"{name} already exists")

My result in discord.py

1 个答案:

答案 0 :(得分:0)

显然我在不同的组中命名相同的函数时犯了一个错误。