禁止用户外部+内部服务器

Banning user outside + inside server

我正在尽力制作一个禁止服务器内外人员的命令。这可能吗?

@client.command(aliases=["banmember", "banuser"])
async def ban(ctx, member: discord.Member, *, reason=None):
    await ctx.message.delete()
    if reason is None:
        reason = ""

        if reason is not None:
            reason = reason
            try:
                await member.ban(reason=reason)
            except:
                user = await commands.converter.UserConverter().convert(ctx, user)
                banneduser = await client.fetch_user(user.id)
                await ctx.guild.ban(banneduser, reason=reason)

这看起来不可能,就像我使用 UserConverter 它不会禁止服务器内的成员一样,如果我使用 Members 它不会禁止服务器外的人。我怎样才能两者兼顾?

您可以使用 use typing-union,它允许命令接受任何特定类型而不是单一类型。

这是一个发送名称以验证它是否适用于两者的简单示例。

import typing

@bot.command()
async def union(ctx, member: typing.Union[discord.Member, discord.User]):
    await ctx.send(member.name)