Pycord机器人封禁逻辑问题及特定Discord用户ID获取方法咨询
Pycord机器人封禁逻辑问题及特定Discord用户ID获取方法咨询
嘿,我来帮你搞定这个Pycord机器人的问题~
先说说你现有代码里的几个问题:
- 你现在是先执行了封禁操作,之后才做判断,这会导致即便对方是你指定的特殊ID,也已经被封禁了,逻辑顺序完全搞反啦
user = client.get_member()这里没有传入具体的用户ID,这个方法需要你传入目标用户的ID才能获取到对应的用户对象,所以这行代码现在是无效的- 对比用户身份的时候,直接对比ID会更可靠,对比用户对象偶尔会出现意外不匹配的情况
接下来教你怎么获取特定用户的Discord ID:
想要拿到某个用户的Discord ID,你得先开启Discord的开发者模式:
- 打开Discord客户端,点击左下角的用户设置(齿轮图标)
- 找到「高级」选项卡,开启「开发者模式」开关
- 之后右键你想要获取ID的用户头像或者用户名,就能看到「复制ID」的选项,点击就能把ID复制到剪贴板了
最后给你修正后的代码示例,直接用就能实现需求:
@bot.command(description="Bans a user from the server") async def ban(ctx, member: discord.Member, *, reason=None): # 把这里的数字换成你要禁止封禁的用户ID,注意是整数类型 FORBIDDEN_USER_ID = 123456789012345678 # 先判断目标用户是否是禁止封禁的ID if member.id == FORBIDDEN_USER_ID: await ctx.send("Can not perform this action.") return # 直接终止命令,不执行后续封禁操作 # 如果不是禁止的用户,正常执行封禁 await member.ban(reason=reason) await ctx.send(f"已封禁用户 {member.mention},原因:{reason if reason else '无'}")
这个修正的核心逻辑是先做权限判断,再执行操作,避免出现误封禁的情况,同时用ID对比的方式也更稳定。
备注:内容来源于stack exchange,提问作者SkinWalkersAreHere




