如何在discord.py

时间:2018-12-11 11:49:24

标签: python python-3.x discord discord.py

因此,我一直在尝试执行验证命令(.ver​​ify),该命令需要一个参数名称,并应使用其名称来充当角色并将其分配给它们,并且还应以特定的方式发送通道,所以不允许人们自己扮演角色,我起初以为是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!')

如果感谢, 真诚的 面包

1 个答案:

答案 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!')