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

Python开发Discord机器人无法识别Hearthstone截图附件问题求助

问题原因
  • 拼写错误:代码中messsage.author.mention里的message多写了一个s,会触发未定义变量的NameError,导致代码执行直接中断
  • 大小写匹配问题:startswith是大小写敏感的,如果上传的截图文件名存在大小写变化(比如系统自动转成全小写/大写),就会匹配失败
  • 权限&意图未开启:Discord API v10及以上版本默认禁用机器人读取消息内容、附件文件名的权限,若未在开发者后台开启Message Content Intent,机器人无法正常获取附件的文件名属性
  • 容错不足:没有对文件名空值等异常情况做兼容,特殊场景下会触发报错打断逻辑
修复方案
  • 第一步:修正拼写错误,把messsage改为正确的message
  • 第二步:优化匹配逻辑为大小写不敏感,先将文件名转为全小写再匹配
  • 第三步:检查并开启机器人权限:
    • 进入Discord开发者平台的对应应用页,在「Bot」标签页的Privileged Gateway Intents分类下,开启Message Content Intent开关
    • 确认机器人进服时授予了「发送消息」「读取消息/查看频道」「读取消息历史」的必要权限
  • 第四步:增加基础容错判断,避免空文件名导致的异常

修复后参考代码

if message.attachments:
    for m in message.attachments:
        # 兼容空文件名+大小写不敏感匹配
        if m.filename and m.filename.lower().startswith("hearthstone_screenshot"):
            await message.channel.send(f"Did you win? {message.author.mention}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:36:05