You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动