如何查看会员是否被封禁?不和谐.py

时间:2021-02-10 10:47:31

标签: python-3.x discord.py

是否有任何可能的方法可以从公会中获取被禁止用户的列表,以便在有人没有被禁止但仍有用户尝试取消禁止他们时,将发送一条错误消息,提示 User is not Banned

    @commands.command()
    @commands.has_permissions(administrator = True)
    async def unban1(self, ctx, *, member):
        banned_members = await ctx.guild.bans()
        member_name, member_discriminator = member.split("#")

        for ban_entry in banned_users:
            user = ban_entry.user

            if (user.name, user.discriminator) == (member_name, member_discriminator):
                await ctx.guild.unban(user)
                await ctx.send(f'Unbanned {user.mention}')

3 个答案:

答案 0 :(得分:0)

您还没有指定通过什么方法来检查用户是否在禁止列表中。例如,您可以通过传入要检查的用户的 id 来完成。举个例子:

library(dplyr)
library(purrr)

filenames <- list.files('/path/to/csv', pattern = '\\.csv', full.names = TRUE)

result <- map_df(filenames, 
                 ~read.csv(.x) %>% 
                   mutate(dataset = tools::file_path_sans_ext(basename(.x))))

要使用它,您必须在服务器中运行 @client.command() async def is_banned(ctx, user_id : int): user = await client.get_user(user_id) try: entry = await ctx.guild.get_ban(user) except discord.NotFound: await user.send(You are not in the ban list') return await ctx.send(f'{user.name} is in the ban list') 。这将检查用户是否被禁止。如果用户没有被禁止,则机器人会向用户发送一条 DM,说 <command_prefix>is_banned <id_of_user>。但是,如果用户被禁止,则机器人将在服务器中打印出 You are not in the ban list

答案 1 :(得分:0)

基本上,您可以使用 member.ban() 命令来禁止成员。这将使该成员被禁止并将其添加到禁止用户列表中,您可以在 ctx.guild.bans() 中找到该列表。

如果您想要实现的是能够在取消禁止之前将某人禁止并检查他是否在禁止用户列表中,您可以使用以下示例命令:

@client.command()
@commands.has_permissions(ban_members = True)
async def ban(ctx, member : discord.Member, *, reason = None):
    await member.ban(reason = reason)

@client.command()
@commands.has_permissions(administrator = True)
async def unban(ctx, *, member):
    banned_members = await ctx.guild.bans()
    member_name, member_discriminator = member.split("#")

    for ban_entry in banned_users:
        user = ban_entry.user

        if (user.name, user.discriminator) == (member_name, member_discriminator):
            await ctx.guild.unban(user)
            await ctx.send(f'Unbanned {user.mention}')

答案 2 :(得分:0)

查看您发布的代码后,这是我的新答案:

@commands.command()
@commands.has_permissions(administrator = True)
async def unban1(self, ctx, member):
    user = await client.get_user(member.id)
    try:
        entry = await ctx.guild.get_ban(user)
    except discord.NotFound:
        await user.send('You are not in the ban list')
        return
    await ctx.send(f'{user.name} is in the ban list')