我可以用不和谐消息的输入更改命令吗



我想制作一个审核机器人。在这个审核机器人是一个自动命令,但我有一个问题。这是命令:

async def on_member_join(ctx):
role = discord.utils.get(ctx.guild.roles, name = "Member") 
await ctx.add_roles(role)

但我想让人们可以打字!autorole@[Role],然后如果有人加入,他们将获得该角色,而不是Member角色。我不知道如何从不和中得到意见。我在网上找不到任何关于in的信息。提前感谢!:(

您可以通过全局变量来实现这一点,即所有函数都可以访问和修改的变量。

你的代码可能看起来像这样:

role_to_assign = None
@client.command()
async def autorole(ctx, role: discord.Role):
global role_to_assign
role_to_assign = role
@client.event
async def on_member_join(member):
await member.add_roles(role_to_assign)

您可以将角色名称存储在jsonyamltxt文件中。然后,您可以随时更改该角色。

@client.command()
async def autorole(ctx, role: discord.Role):
file = open('autorole.txt', 'w')
file.write(role.id)

然后,当您向某人添加自动角色时,您可以访问此文件,获取角色id,然后添加到成员中。

此外,最好在on_member_join事件中调用参数member,而不是ctx

@client.event
async def on_member_join(member):
role_id = open('autorole.txt', 'r').read()
role = discord.utils.get(member.guild.roles, id = int(role_id)) 
await member.add_roles(role)

最新更新