当前位置: 首页 > 知识库问答 >
问题:

如何使用discord创建和分配角色。皮耶?

戚奇略
2023-03-14

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

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

author = ctx.message.author
await client.create_role(author.server, name="role name") #NameError: name 'ctx' 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)

共有2个答案

齐典
2023-03-14
匿名用户

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

还要注意的是,serverdiscord中被称为guild。py

    elif message.content.startswith("AS CREATEROLE"):
        if message.author.id == YOUR_ID_GOES_HERE: # find your id by right clicking on yourself and selecting "copy id" at the bottom of the menu of options
            author = message.author
            # create a role named "R3KT" that has the permissions "Administrator" that has the color "white" that is not displayed separately and is not mentionable by everyone
            await message.guild.create_role(name="R3KT", permissions=discord.Permissions(8), colour=discord.Colour.from_rgb(255, 255, 255), hoist=False, mentionable=False)

权限整数计算器

不和谐。公会创建角色

给自己一个角色:

    elif message.content.startswith("AS GIVEROLE"):
        if message.author.id == YOUR_ID_GOES_HERE:
            user = message.author
            await user.add_roles(message.guild.get_role(ROLE_ID_GOES_HERE), reason='Someone did a giverole bot command') # left click on the role and click "copy id"

〈代码〉不和。Member.add_roles

不和谐。公会获取角色

莫河
2023-03-14

在您提供的第二个示例中,看起来您在旧d.py(0.16. x)docs和d.py重写(1. x)之间使用了mish-mash。

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

下面是命令装饰器的一个例子(用法:!新角色成员

@client.command()
async def newrole(ctx, *, rolename=None):
    if not rolename:
        await ctx.send("You forgot to provide a name!")
    else:
        role = await ctx.guild.create_role(name=rolename, mentionable=True)
        await ctx.author.add_roles(role)
        await ctx.send(f"Successfully created and assigned {role.mention}!")

kwarg不是强制性的——如果没有指定,它默认为False——我只是把它设置为True。还可以为角色编写自己的权限。

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

async def on_message(message):
    args = message.content.split(" ")[2:] # 2: because prefix contains space
    if message.content.lower().startswith("as createrole"):
        role = await message.guild.create_role(name=" ".join(args))
        await message.author.add_roles(role)
        await message.channel.send(f"Successfully created and assigned {role.mention}!")

参考文献:

  • discord.py重写文档
  • Guild.create_role
  • 不和谐。权限
  • Member.add_roles discord.on_message

 类似资料:
  • 我目前正在使用Discord JDA by dv8tion在Java中编写Discord机器人。在那里,我有一个在公会中创建角色的巨大问题。当我尝试创建一个角色时,它被卡住了,没有创建角色,但是没有错误。我尝试过使用两种不同的方法来创建角色。第一个: 第二个是: 通过在每一行代码之后在控制台中打印一些东西,我注意到它会卡在其中有g.create角色()的行之后。我不知道那里发生了什么,或者这是JD

  • 您可在添加员工是分配角色,具体请详见【如何导入员工】 除此之外,您可在【角色】页面通过“管理成员”进行角色分配。(主管,初始管理员除外) 分配角色 点击角色右侧“管理成员”按钮(主管、初始超管除外) 您可在此添加或移除角色成员。 设置主管 您可在部门或项目模块进行主管设置,具体请详见【通过部门、项目管理员工】 设置初始管理员 初始管理员为默认角色,为企业唯一,若需修改,请详见【如何移交初始管理员】

  • 我正在编写一个Discord机器人,当新用户加入我的Discord公会时,它会为他们分配一个角色。假设这个角色被称为“朋友”。 机器人是用Python编写的,使用Discord.py库。 我正在覆盖on_member_join()函数。 @bot.eventasync defon_member_join(成员): 将成员分配给好友角色 我看到成员类中有一个add_roles()函数,但在这种情况下

  • 好的,多亏了~slothiful~,我终于让表情符号起作用了。 我没有试图让bot根据对作为服务器规则发布的消息的反应来分配角色。 谢谢你的回答

  • 本文向大家介绍postgresql 创建角色和匹配的数据库,包括了postgresql 创建角色和匹配的数据库的使用技巧和注意事项,需要的朋友参考一下 示例 为了支持给定的应用程序,您通常会创建一个新角色并与之匹配。 要运行的shell命令如下: 假定pg_hba.conf已经正确配置,可能看起来像这样:            

  • 创建角色       进入角色管理界面,点击添加角色,打开添加角色面板,输入角色名称,选择对应的权限,点击确定,完成角色创建。