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
相关产品推荐
相关产品推荐

