概览
本页是 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
第 1 部分:基础 bot(发帖)
创建 Artisan 命令
使用php artisan make:command 创建 bot 用的命令。
app/Console/Commands/BotPostCommand.php。
手动执行
使用定时任务自动执行
在routes/console.php 中添加定时执行的设置。
用 GitHub Actions 自动执行
如果没有服务器,也可以用 GitHub Actions 自动执行。第 2 部分:回复 bot(监听 mention)
创建一个对 mention 自动回复的 bot。同时也介绍使用 AI 生成回复的示例。获取通知并对 mention 回复
如果 thread 的 root 与父帖不同,请通过
app.bsky.feed.getPostThread 获取 thread 信息并设置到 root。这里的简易实现直接把父帖当作 root。定时轮询
用 AI 生成回复
结合laravel/ai 包和 laravel-amazon-bedrock 驱动,可以根据 mention 内容生成 AI 回复。
第 3 部分:label bot
对应官方教程中的labelAsBot。给 bot 账号的个人资料添加 self label,明确表明这是一个自动化账号。
label 只需要在初次设置时执行一次。它作为独立于第 1、2 部分的命令来实现。
创建 label bot 命令
执行
其他官方教程
AT Protocol 的官方教程还有其他几个主题。以下是laravel-bluesky 的对应情况。
自定义 feed
Feed Generator 中详细介绍了用 Laravel 实现自定义 feed generator 的方法。OAuth 认证
Socialite 中介绍了如何用 Laravel Socialite 实现 OAuth 认证。比官方教程更易于实现。社交应用(statusphere)
Laravel 版的 statusphere 以 invokable/statusphere 公开发布。它基于尚未使用lex 或 tap 命令的旧版 statusphere,因此与最新官方教程略有差异。