使用Facebook Graph API向评论用户发送private_replies的实现问题
实现Facebook评论自动私信回复的代码调整方案
前置校验要求
先确认你已经满足以下前提,否则接口会直接返回权限错误:
- 你的Facebook应用已申请并通过
pages_manage_metadata、pages_messaging权限的App Review - 你调用接口使用的是当前管理主页的Page Access Token,而非普通用户Token
- 你监控的帖子归属于你当前认证的Facebook官方主页,非第三方主页帖子
代码调整说明
你原有代码的核心问题是private_reply方法调用的接口端点错误,Facebook官方针对评论私信回复的专属端点是private_replies,不是conversations。另外原有监控逻辑缺少重复回复拦截,容易触发平台风控。
调整后的完整代码如下:
# 新增缓存,存储已经回复过的评论ID,避免重复发送 replied_comment_ids = set() def monitor_comment(): print("Bot is monitoring comments") # 从Facebook接口拉取最新评论 comment_data = graph.get_connections(COMBINED_POST_ID_TO_MONITOR,"comments",order='reverse_chronological') latest_comments = [] for comment in comment_data['data'][:10]: latest_comments.append(comment) # 过滤掉已经回复过的评论,取最新的未回复评论 for comment in latest_comments: comment_id = str(comment['id']) if comment_id not in replied_comment_ids: return comment_id # 没有新评论就返回空 return None # 私信回复方法 def private_reply(comment_id): if not comment_id: return try: # 调用官方private_replies端点发送私信 reply_result = graph.put_object( parent_object=comment_id, connection_name="private_replies", message="Hello This is a test" ) # 发送成功后把评论ID加入缓存 replied_comment_ids.add(comment_id) return reply_result except Exception as e: print(f"私信发送失败,错误信息:{str(e)}") return None
注意事项
- 仅可在用户发布评论后的7天内发送私信,超过时限接口会返回错误
- 单条评论仅支持发送1条私人回复,重复调用同个评论ID的接口会被拒绝
- 私信内容需符合Facebook平台运营政策,违规内容会导致功能被限制
- 若程序重启后缓存会清空,建议把已回复的评论ID存入本地文件或数据库做持久化存储
内容的提问来源于stack exchange,提问作者Caivy
相关产品推荐
相关产品推荐

