Python 3.x 如何使用discord.py创建和分配角色?

Python 3.x 如何使用discord.py创建和分配角色?,python-3.x,discord,discord.py,Python 3.x,Discord,Discord.py,我试图在discord中扮演一个全新的角色(使用discord.py),但我尝试的一切都不起作用。我已经试过了 await guild.create_role(name("R3KT")) #NameError: name 'guild' not defined 及 我试着把ctx和公会改成“客户”,但还是不起作用。如果需要,我会发送整个代码(没有不一致的名称和bot密钥) 以下是完整的代码: import discord token = "bot-key" client = discord.

我试图在discord中扮演一个全新的角色(使用discord.py),但我尝试的一切都不起作用。我已经试过了

await guild.create_role(name("R3KT")) #NameError: name 'guild' not defined

我试着把ctx和公会改成“客户”,但还是不起作用。如果需要,我会发送整个代码(没有不一致的名称和bot密钥)

以下是完整的代码:

import discord

token = "bot-key"
client = discord.Client()


@client.event
async def on_ready():
    print("Bot is online and connected to Discord")


@client.event
async def on_message(message):

    message.content = message.content.upper()

    if message.author == client.user:
        return

    if message.content.startswith("AS HELLO"):
        await message.channel.send("works")

    elif message.content.startswith("AS CREATEROLE"):
        if str(message.author) == "myDiscName#6969":
            author = message.author
            await discord.create_role(author.server, name="R3KT")

    elif message.content.startswith("AS GIVEROLE"):
        if str(message.author) == "myDiscName#6969":
            print("give role")


client.run(token)

在您提供的第二个示例中,看起来您正在使用旧的d.py(
0.16.x
)文档和d.py重写(
1.x
)之间的混合

确保安装了最新版本(重写),因为异步不再被维护

下面是一个使用decorator命令的示例(用法:
!newrole Member

@client.command()
异步def newrole(ctx,*,rolename=None):
如果不是rolename:
等待ctx.send(“您忘了提供名称!”)
其他:
role=wait ctx.guild.create_role(name=rolename,indicatable=True)
等待ctx.author.add_角色(角色)
等待ctx.send(f“已成功创建并分配了{role.antify}!”)
可提及的
kwarg不是强制性的-如果没有指定,它默认为
False
-我只是将其设置为
True
。您还可以为角色编写自己的权限


另一个例子是在消息上使用
,建议改用命令装饰器,因为arg更容易处理

async def on_消息(消息):
args=message.content.split(“”[2:]#2:因为前缀包含空格
如果message.content.lower().startswith(“作为createrole”):
role=wait message.guild.create_角色(name=”“.join(args))
等待消息。作者。添加角色(角色)
wait message.channel.send(f“已成功创建并分配了{role.antify}!”)

参考文献:


在您提供的第二个示例中,看起来您正在使用旧的d.py(
0.16.x
)文档和d.py重写(
1.x
)之间的混合

确保安装了最新版本(重写),因为异步不再被维护

下面是一个使用decorator命令的示例(用法:
!newrole Member

@client.command()
异步def newrole(ctx,*,rolename=None):
如果不是rolename:
等待ctx.send(“您忘了提供名称!”)
其他:
role=wait ctx.guild.create_role(name=rolename,indicatable=True)
等待ctx.author.add_角色(角色)
等待ctx.send(f“已成功创建并分配了{role.antify}!”)
可提及的
kwarg不是强制性的-如果没有指定,它默认为
False
-我只是将其设置为
True
。您还可以为角色编写自己的权限


另一个例子是在消息上使用
,建议改用命令装饰器,因为arg更容易处理

async def on_消息(消息):
args=message.content.split(“”[2:]#2:因为前缀包含空格
如果message.content.lower().startswith(“作为createrole”):
role=wait message.guild.create_角色(name=”“.join(args))
等待消息。作者。添加角色(角色)
wait message.channel.send(f“已成功创建并分配了{role.antify}!”)

参考文献:


您不想按姓名和号码进行检查(如果您有nitro,您可以更改),您应该按ID进行检查,该ID对每个用户都是唯一的,并且是不可变的

还要注意的是,
discord.py
中的
server
被称为
guild

elif message.content.startswith(“作为CREATEROLE”):
如果message.author.id==您的_id _转到这里:#通过右键单击您自己并在选项菜单底部选择“复制id”来查找您的id
author=message.author
#创建一个名为“R3KT”的角色,该角色具有“管理员”权限,该权限的颜色为“白色”,不会单独显示,也不会被所有人提及
等待消息.guild.create_角色(name=“R3KT”,权限=discord.permissions(8),color=discord.color.from_rgb(255,255,255),起重机=False,可提及=False)

给自己一个角色:

elif message.content.startswith(“作为给定角色”):
如果message.author.id==您的\u id\u出现在这里:
user=message.author
等待用户。添加角色(message.guild.get角色(角色ID在这里),reason='Someone's do giverole bot command')。#左键单击角色并单击“复制ID”


您不想按名称和编号进行检查(如果您有nitro,您可以更改),您应该按ID进行检查,该ID对每个用户都是唯一的,并且是不可变的

还要注意的是,
discord.py
中的
server
被称为
guild

elif message.content.startswith(“作为CREATEROLE”):
如果message.author.id==您的_id _转到这里:#通过右键单击您自己并在选项菜单底部选择“复制id”来查找您的id
author=message.author
#创建一个名为“R3KT”的角色,该角色具有“管理员”权限,该权限的颜色为“白色”,不会单独显示,也不会被所有人提及
等待消息.guild.create_角色(name=“R3KT”,权限=discord.permissions(8),color=discord.color.from_rgb(255,255,255),起重机=False,可提及=False)

给自己一个角色:

elif message.content.startswith(“作为给定角色”):
如果message.author.id==您的\u id\u出现在这里:
user=message.author
等待用户。添加角色(message.guild.get角色(角色ID在这里),reason='Someone's do a giverole bot command')#lef
import discord

token = "bot-key"
client = discord.Client()


@client.event
async def on_ready():
    print("Bot is online and connected to Discord")


@client.event
async def on_message(message):

    message.content = message.content.upper()

    if message.author == client.user:
        return

    if message.content.startswith("AS HELLO"):
        await message.channel.send("works")

    elif message.content.startswith("AS CREATEROLE"):
        if str(message.author) == "myDiscName#6969":
            author = message.author
            await discord.create_role(author.server, name="R3KT")

    elif message.content.startswith("AS GIVEROLE"):
        if str(message.author) == "myDiscName#6969":
            print("give role")


client.run(token)