discord.py : 在发布禁令之前,我如何检查用户是否在服务器中?
discord.py : How can I check to see if a user is in the server or not before issuing a ban?
我正在努力做到这一点,如果我的一位版主去禁止某个用户,如果他们在对他们采取行动之前离开,我的机器人会告诉他们该用户是否不再在服务器中。这是我的禁令命令的开始:
@client.command()
@commands.has_any_role("Head Honcho", "Discord Moderator")
async def ban(ctx, member : discord.Member, *, reason=None):
if member is None:
return await ctx.send("This member could not be found, or you did not provide an ID.")
if reason is None:
return await ctx.send("Please provide a reason for banning this user.")
if user not in ctx.guild.members:
return await ctx.send("This user is not in the server.")
if ctx.channel.id == 805651955841236993:
reaction_emote = ("<:Checkmark:820467149554319410>")
await ctx.message.add_reaction(reaction_emote)
我遇到的问题是这里的这一点:
if user not in ctx.guild.members:
return await ctx.send("This user is not in the server.")
我正在尝试的一切似乎都不起作用。任何帮助将不胜感激!
您可以检查会员是否不在 this
等频道中
if guild.get_member(ID_OF_MEMBER) == None:
您的代码实际上不需要检查,因为您在定义函数参数时将参数 member
转换为 discord.Member
对象。成员对象将始终在公会中,因此您不必担心获得无效用户。现在,如果您想捕获异常,可以使用 on_command_error
事件。
@client.event
async def on_command_error(ctx, error):
if isinstance(error, commands.errors.MemberNotFound):
return await ctx.send("This user is not in the server.")
我有自己的方法。
@client.command() # Ban command
@commands.has_permissions(manage_roles=True, kick_members=True, ban_members=True)
async def ban(ctx, member: discord.Member, *, reason=None):
if member in ctx.guild.members():
await ctx.channel.send(f"{member.mention} is not a server member!")
else:
# Do Stuff
这将检查服务器中的成员。
谢谢 :D
我正在努力做到这一点,如果我的一位版主去禁止某个用户,如果他们在对他们采取行动之前离开,我的机器人会告诉他们该用户是否不再在服务器中。这是我的禁令命令的开始:
@client.command()
@commands.has_any_role("Head Honcho", "Discord Moderator")
async def ban(ctx, member : discord.Member, *, reason=None):
if member is None:
return await ctx.send("This member could not be found, or you did not provide an ID.")
if reason is None:
return await ctx.send("Please provide a reason for banning this user.")
if user not in ctx.guild.members:
return await ctx.send("This user is not in the server.")
if ctx.channel.id == 805651955841236993:
reaction_emote = ("<:Checkmark:820467149554319410>")
await ctx.message.add_reaction(reaction_emote)
我遇到的问题是这里的这一点:
if user not in ctx.guild.members:
return await ctx.send("This user is not in the server.")
我正在尝试的一切似乎都不起作用。任何帮助将不胜感激!
您可以检查会员是否不在 this
等频道中if guild.get_member(ID_OF_MEMBER) == None:
您的代码实际上不需要检查,因为您在定义函数参数时将参数 member
转换为 discord.Member
对象。成员对象将始终在公会中,因此您不必担心获得无效用户。现在,如果您想捕获异常,可以使用 on_command_error
事件。
@client.event
async def on_command_error(ctx, error):
if isinstance(error, commands.errors.MemberNotFound):
return await ctx.send("This user is not in the server.")
我有自己的方法。
@client.command() # Ban command
@commands.has_permissions(manage_roles=True, kick_members=True, ban_members=True)
async def ban(ctx, member: discord.Member, *, reason=None):
if member in ctx.guild.members():
await ctx.channel.send(f"{member.mention} is not a server member!")
else:
# Do Stuff
这将检查服务器中的成员。
谢谢 :D