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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:15:01