这4个代码来自同一组
create_voice
(make v) 和 create_nsfw
(make n) 正在工作
create_text
(make t) 和 create_channel
(make c) 不起作用
text
和 channel
函数没有获得应该传递的上下文,但 voice
和 nsfw
工作得很好
不要介意 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")
答案 0 :(得分:0)
显然我在不同的组中命名相同的函数时犯了一个错误。