如何检测用户是否向机器人私信发送指定名称的.mp4文件
可行性结论
该需求完全可实现,不存在平台接口或框架能力层面的卡点,所有支持私信事件监听、消息附件解析的机器人开发方案都能落地该逻辑。
通用实现步骤
- 注册机器人的私信(DM)消息监听事件,提前过滤掉群聊、频道等非私信场景的消息,减少无效计算
- 从监听到的私信消息体中提取全部附件信息,先筛选出文件后缀为
.mp4的视频类附件 - 对筛选出的mp4附件做文件名匹配:建议将文件名统一转为小写后再比对,兼容
Pizza.MP4、PIZZA.mp4这类大小写差异的情况,匹配规则可根据业务需求选择精确匹配、前缀匹配或者模糊匹配 - 匹配命中预设文件名规则后,直接调用消息发送接口,向当前私信会话推送预设的响应消息即可
开发避坑点
- 不要直接取平台存储文件的CDN链接文件名做判断,多数平台会给上传文件自动加随机字符串重命名,要读取用户上传时携带的原始文件名字段做匹配
- 若需要严格校验格式,可增加一层MP4文件头校验,避免用户将其他格式文件手动改后缀为.mp4误触发逻辑
- 可根据业务需求调整匹配宽容度,比如是否将
pizza (1).mp4、pizza_副本.mp4这类带系统自动添加标记的文件判定为匹配成功
逻辑伪代码参考
# 通用逻辑伪代码,可适配Discord、飞书、企业微信、QQ等任意平台的机器人SDK @bot.listen_dm_message() async def check_pizza_mp4(message): for attachment in message.attachments: origin_filename = attachment.origin_name.lower() # 此处判断规则可根据需求调整 if origin_filename.endswith(".mp4") and "pizza" in origin_filename: await message.send_reply("检测到你发送了指定的pizza视频文件,已为你触发对应处理流程~") return
内容的提问来源于stack exchange,提问作者enderport
相关产品推荐
相关产品推荐

