有没有办法在我的论点中包括空格?

2024-05-16 18:27:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的不和谐机器人,我有两个命令做给予和创建角色。它们工作得很好,但是如果角色名包含空格,我就有问题了。它将第二个单词计数到第二个参数中,使命令产生错误。在

# 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的操作,但是我得到了一个“无效用户”错误。我有没有办法支持角色名中的空格?提前谢谢!在


Tags: namesend角色awaitcommandrolememberctx
1条回答
网友
1楼 · 发布于 2024-05-16 18:27:34

你有几个选择:

  1. 使用角色转换器并要求提及角色:

    async def giverole(ctx, role: discord.Role, member: discord.Member):
    
  2. 要求角色用引号括起来:

    k!giverole "Bot Tester" @user
    
  3. 切换两个参数的位置,使转换后的用户排在第一位,而可能隔开的名称作为仅限关键字的参数出现。在

    async def giverole(ctx, member: discord.Member, *, rname):
    

我推荐第一种选择,但你也可以试试其他的,看看你喜欢哪一种。在

相关问题 更多 >