我如何在私人房间中添加用户,当他们被提及时使用命令?



我正在创建一个命令,在这个命令中,当我运行它时,它必须创建一个房间并添加提到的人。相反,它会添加使用该命令的用户。我如何修复我的代码?

@client.command()
async def real1v1(ctx, member: discord.Member, arg, product, *, stars):
embed = discord.Embed(title = f "New realistic 1v1 wager for {arg}", description = f "** Team 1: {product} vs Team 2: {stars} **", color = discord.Color.red())
guild = ctx.guild
member = ctx.author
member2 = ctx.author.member
admin_role = get(guild.roles, name = "RoleTestAdmin")
overwrites = {
guild.default_role:discord.PermissionOverwrite(read_messages = False),
member:discord.PermissionOverwrite(read_messages = True),
member2:discord.PermissionOverwrite(read_messages = True),
admin_role:discord.PermissionOverwrite(read_messages = True)
}
channel = await guild.create_text_channel(f'Team1-Team2 ', overwrites = overwrites)
#await channel.send(f"{product} {stars}")
embed.set_footer(text = f"{ctx.guild.name}")
await ctx.send(embed = embed)

您可以使用discord.Greedy。例如:

async def real1v1(ctx, target_members: discord.Greedy[discord.Member]):
# `target_members` is a list of members
# do stuff
#await ctx.send(f'member 0 of {len(members)} is {members[0].display_name}')

这可以像real1v1 @member name#1111 @anothermember一样被调用,你会得到一个成员列表。

对于您的覆盖,您可以像这样添加新成员:

overwrites = {
guild.default_role: discord.PermissionOverwrite(read_messages = False),
member: discord.PermissionOverwrite(read_messages = True),
member2: discord.PermissionOverwrite(read_messages = True),
admin_role: discord.PermissionOverwrite(read_messages = True)
}
overwrites.update({member: discord.PermissionOverwrite(read_messages=True) for member in target_members})

相关内容

最新更新