因此,我一直在尝试执行验证命令(.verify),该命令需要一个参数名称,并应使用其名称来充当角色并将其分配给它们,并且还应以特定的方式发送通道,所以不允许人们自己扮演角色,我起初以为是channel.id,但是我输入了print(ctx.message.channel.id),并且相同,所以我知道那不是错误,但是它没有作用,也没有任何作用,甚至没有错误!请帮我。到目前为止,这是我的代码。
@client.command(pass_context=True)
async def verify(ctx, name):
print(ctx.message.channel.id)
if ctx.message.channel.id == 521645091098722305:
await client.create_role(author.server, name=name)
await client.say('Done! Welcome!')
如果感谢, 真诚的 面包
答案 0 :(得分:0)
在异步分支中,使用字符串而不是整数作为id。您还需要捕获Role
制造的create_role
,并将其传递给add_roles
@client.command(pass_context=True)
async def verify(ctx, name):
print(ctx.message.channel.id)
if ctx.message.channel.id == '521645091098722305:
role = await client.create_role(ctx.message.author.server, name=name)
await client.add_roles(ctx.message.author, role)
await client.say('Done! Welcome!')
等效的重写命令为
@client.command()
async def verify(ctx, name):
print(ctx.channel.id)
if ctx.channel.id == 521645091098722305:
role = await ctx.guild.create_role(name=name)
await ctx.message.author.add_roles(role)
await ctx.send('Done! Welcome!')