跳转到主要内容

概览

本页是 AT Protocol 官方 bot 教程 的 Laravel 版。介绍如何用 laravel-bluesky 包,通过 PHP/Laravel 实现原本面向 TypeScript 的内容。 官方教程会通过 lex 命令每次下载 Lexicon 文件,但 laravel-bluesky 已经从 atproto-lexicon-contracts 事先导入了全部 Lexicon,所以不需要这一步。通过 Artisan 命令和 HasShortHand trait 的方法,几乎可以完成所有操作。

前置条件

  • 已经安装 laravel-bluesky
  • 已经准备好 Bluesky 账号和 App Password
安装方法请参考 Laravel Bluesky

第 1 部分:基础 bot(发帖)

创建 Artisan 命令

使用 php artisan make:command 创建 bot 用的命令。
编辑生成的 app/Console/Commands/BotPostCommand.php

手动执行

使用定时任务自动执行

routes/console.php 中添加定时执行的设置。
要启用调度器,请在 cron 中配置以下条目。

用 GitHub Actions 自动执行

如果没有服务器,也可以用 GitHub Actions 自动执行。
请把 BLUESKY_IDENTIFIERBLUESKY_APP_PASSWORD 注册到 GitHub Actions 的 secrets 中。

第 2 部分:回复 bot(监听 mention)

创建一个对 mention 自动回复的 bot。同时也介绍使用 AI 生成回复的示例。

获取通知并对 mention 回复

如果 thread 的 root 与父帖不同,请通过 app.bsky.feed.getPostThread 获取 thread 信息并设置到 root。这里的简易实现直接把父帖当作 root。

定时轮询

用 AI 生成回复

结合 laravel/ai 包和 laravel-amazon-bedrock 驱动,可以根据 mention 内容生成 AI 回复。
创建 AI agent。
在命令中使用 AI 回复。
laravel-amazon-bedrock 的配置方法请参考 Amazon Bedrock 驱动

第 3 部分:label bot

对应官方教程中的 labelAsBot。给 bot 账号的个人资料添加 self label,明确表明这是一个自动化账号。
label 只需要在初次设置时执行一次。它作为独立于第 1、2 部分的命令来实现。

创建 label bot 命令

执行

请在 bot 初次设置时执行一次即可。label 会持久保存在个人资料中。
!bot 是 Bluesky 的标准 self label。官方推荐所有 bot 账号都应设置。

其他官方教程

AT Protocol 的官方教程还有其他几个主题。以下是 laravel-bluesky 的对应情况。

自定义 feed

Feed Generator 中详细介绍了用 Laravel 实现自定义 feed generator 的方法。

OAuth 认证

Socialite 中介绍了如何用 Laravel Socialite 实现 OAuth 认证。比官方教程更易于实现。

社交应用(statusphere)

Laravel 版的 statusphere 以 invokable/statusphere 公开发布。它基于尚未使用 lextap 命令的旧版 statusphere,因此与最新官方教程略有差异。

参考链接

最后修改于 2026年7月18日