禁止用户外部+内部服务器
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)
我正在尽力制作一个禁止服务器内外人员的命令。这可能吗?
@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)