有没有办法在我的论点中包含空格?
Is there a way to include spaces in my argument?
在我的 discord 机器人中,我有 2 个命令可以赋予和创建角色。它们工作得很好,但如果角色名称包含 space,我就有问题了。它将第二个单词计入第二个参数,使命令产生错误。
# Giverole
@client.command(name='giverole',
aliases=['gr'],
brief='Assgins role to a user',
pass_ctx=True)
async def giverole(ctx, rname, *, member: discord.Member):
role = get(member.guild.roles, name=rname)
await member.add_roles(role)
await ctx.send(f'Role added to user {member.mention}')
print('Giverole command executed\n- - -')
# Createrole
@client.command(name='createrole',
brief='Creates a role',
aliases=['cr','makerole'],
pass_ctx=True)
async def createrole(ctx, rname: str, clr: discord.Colour):
if ctx.author.guild_permissions.manage_roles:
await ctx.guild.create_role(name=rname, colour=clr)
await ctx.send('Role created with name: ' + rname)
print('Createrole command executed\n- - -')
else:
await ctx.send('You lack permission.')
print('Createrole command executed\n- - -')
理想情况下,我应该能够执行类似 k!giverole Bot Tester @user
的操作,但我却收到 "Invalid user" 错误。有什么办法可以支持角色名中的spaces吗?提前致谢!
您有几个选择:
使用角色转换器并要求提及角色:
async def giverole(ctx, role: discord.Role, member: discord.Member):
要求角色用引号引起来:
k!giverole "Bot Tester" @user
调换两个参数的位置,使转换后的用户排在第一位,潜在的空格名称作为仅关键字参数出现。
async def giverole(ctx, member: discord.Member, *, rname):
我会推荐第一个选项,但您也可以尝试其他选项,看看您更喜欢哪个。
在我的 discord 机器人中,我有 2 个命令可以赋予和创建角色。它们工作得很好,但如果角色名称包含 space,我就有问题了。它将第二个单词计入第二个参数,使命令产生错误。
# Giverole
@client.command(name='giverole',
aliases=['gr'],
brief='Assgins role to a user',
pass_ctx=True)
async def giverole(ctx, rname, *, member: discord.Member):
role = get(member.guild.roles, name=rname)
await member.add_roles(role)
await ctx.send(f'Role added to user {member.mention}')
print('Giverole command executed\n- - -')
# Createrole
@client.command(name='createrole',
brief='Creates a role',
aliases=['cr','makerole'],
pass_ctx=True)
async def createrole(ctx, rname: str, clr: discord.Colour):
if ctx.author.guild_permissions.manage_roles:
await ctx.guild.create_role(name=rname, colour=clr)
await ctx.send('Role created with name: ' + rname)
print('Createrole command executed\n- - -')
else:
await ctx.send('You lack permission.')
print('Createrole command executed\n- - -')
理想情况下,我应该能够执行类似 k!giverole Bot Tester @user
的操作,但我却收到 "Invalid user" 错误。有什么办法可以支持角色名中的spaces吗?提前致谢!
您有几个选择:
使用角色转换器并要求提及角色:
async def giverole(ctx, role: discord.Role, member: discord.Member):
要求角色用引号引起来:
k!giverole "Bot Tester" @user
调换两个参数的位置,使转换后的用户排在第一位,潜在的空格名称作为仅关键字参数出现。
async def giverole(ctx, member: discord.Member, *, rname):
我会推荐第一个选项,但您也可以尝试其他选项,看看您更喜欢哪个。