You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.py开发中Python相等运算符无法匹配Discord ID的问题

判断分支无法进入的原因

这是Python不同类型值做相等比较导致的逻辑失效,和打印输出的ID数值完全一致没有冲突。

  • Discord.py 返回的所有ID类属性(包括ctx.message.author.id、ctx.message.channel.id、ctx.message.author.dm_channel.id)都是整数类型。
  • 代码里硬编码的my_id = "285538805728149504"是字符串类型。
  • Python 中哪怕两个值的打印显示完全相同,整数和字符串做==比较的结果永远是False(比如123 == "123"的运行结果就是False),所以代码从第一个用户ID判断就直接被跳过,根本执行不到后续的频道ID对比逻辑。
修复方法
  • 把硬编码的用户ID去掉外层引号,改成整数类型即可匹配判断:
    my_id = 285538805728149504
  • 可以优化频道判断逻辑规避空值报错:原来的手动对比DM频道ID的写法有隐患——如果用户从未主动给机器人发过私聊,ctx.message.author.dm_channel可能返回None,会直接触发程序报错。不需要手动对比频道ID,直接通过ctx.guild is None判断当前频道是否为DM私聊(没有关联服务器的频道就是DM频道),逻辑更可靠。

内容的提问来源于stack exchange,提问作者TheKingElessar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.02 14:54:05