#botkit — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #botkit, aggregated by home.social.
-
Fedify & Futures: Building the Fediverse's Backbone - Hong Minhee - Fedify, Hollo, Botkit - E83
-
Fedify & Futures: Building the Fediverse's Backbone - Hong Minhee - Fedify, Hollo, Botkit - E83
-
Ny version af Fedifys BotKit
Fedify-projektet har netop udgivet BotKit 0.4.0, der på en nem og overskuelig måde lader dig bygge bots til fediverset i TypeScript, der samtidig er deres egen instans. Botkit kan selfhostes, eller man kan f.eks bruge en af de mange Docker-kompatible udbydere. Du kan se listen over ændringer her: Changeloggen. Botkits website med eksempler: https://botkit.fedify.dev/ Bots har ofte en negativ klang i forhold til spam, men de kan også være informative, se evt. en tidligere artikel, jeg […] -
Ny version af Fedifys BotKit
Fedify-projektet har netop udgivet BotKit 0.4.0, der på en nem og overskuelig måde lader dig bygge bots til fediverset i TypeScript, der samtidig er deres egen instans. Botkit kan selfhostes, eller man kan f.eks bruge en af de mange Docker-kompatible udbydere. Du kan se listen over ændringer her: Changeloggen. Botkits website med eksempler: https://botkit.fedify.dev/ Bots har ofte en negativ klang i forhold til spam, men de kan også være informative, se evt. en tidligere artikel, jeg […] -
Building NewsDiff: Tracking How News Changes After Publication
NewsDiff — a self-hosted news article diff tracker inspired by three dead projects (newsdiffs, diffengine, NYTdiff). -
Building NewsDiff: Tracking How News Changes After Publication
NewsDiff — a self-hosted news article diff tracker inspired by three dead projects (newsdiffs, diffengine, NYTdiff). -
This might be a dumb question, but if anyone here has used #botkit by #fedify : is there any way to host more than one bot without using different subdomains?
I'd like to self-host more than just my Ralsei bot and, as far as I know, an easy way to do it would be to use different subdomains for each one. However, right now I only have access to neofox.dedyn.io and no way to register/use other subdomains through my DDNS (and I'd like to keep using that for the time being)
From what I understood through the docs there might be a chance to achieve what I'm thinking about by using a custom Bot.fetch() method instead of passing the built-in one to Deno/Bun, but I'm not too sure, and that's why I'm asking here first :neobot_think:
-
This might be a dumb question, but if anyone here has used #botkit by #fedify : is there any way to host more than one bot without using different subdomains?
I'd like to self-host more than just my Ralsei bot and, as far as I know, an easy way to do it would be to use different subdomains for each one. However, right now I only have access to neofox.dedyn.io and no way to register/use other subdomains through my DDNS (and I'd like to keep using that for the time being)
From what I understood through the docs there might be a chance to achieve what I'm thinking about by using a custom Bot.fetch() method instead of passing the built-in one to Deno/Bun, but I'm not too sure, and that's why I'm asking here first :neobot_think:
-
Did you know there's a community space for #Fedify, #Hollo, #BotKit, and other Fedify ecosystem projects?
Whether you have questions, want to share what you're building, or just want to hang out with fellow fediverse developers—come join us!
- Matrix: #fedify:matrix.org
- Discord
-
Did you know there's a community space for #Fedify, #Hollo, #BotKit, and other Fedify ecosystem projects?
Whether you have questions, want to share what you're building, or just want to hang out with fellow fediverse developers—come join us!
- Matrix: #fedify:matrix.org
- Discord
-
🔒 Security Release: BotKit 0.3.1
We've released BotKit 0.3.1 with an important security fix.
This update addresses CVE-2025-68475 (High severity, CVSS 7.5), a ReDoS vulnerability in Fedify's HTML parsing that could cause denial of service.
If you're using BotKit 0.3.x, please upgrade to 0.3.1 as soon as possible.
-
🔒 Security Release: BotKit 0.3.1
We've released BotKit 0.3.1 with an important security fix.
This update addresses CVE-2025-68475 (High severity, CVSS 7.5), a ReDoS vulnerability in Fedify's HTML parsing that could cause denial of service.
If you're using BotKit 0.3.x, please upgrade to 0.3.1 as soon as possible.
-
BotKitは、ActivityPubボットを作るためのTypeScriptフレームワークです。既存のMastodon/Misskeyボットとの違いは、ボット自体が独立したサーバーとして動作すること。プラットフォームのアカウントは不要です。
文字数制限もなければ、APIレート制限に悩まされることもありません。
bot.onMention = async (session, message) => { await message.reply(text`こんにちは、${message.actor}さん!`); };フェデレーション、HTTP Signatures、配送キューといったActivityPub周りの処理はFedifyがすべて引き受けます。ボットのロジックを書くだけです。
DenoでもNode.jsでも動きます。
-
BotKitは、ActivityPubボットを作るためのTypeScriptフレームワークです。既存のMastodon/Misskeyボットとの違いは、ボット自体が独立したサーバーとして動作すること。プラットフォームのアカウントは不要です。
文字数制限もなければ、APIレート制限に悩まされることもありません。
bot.onMention = async (session, message) => { await message.reply(text`こんにちは、${message.actor}さん!`); };フェデレーション、HTTP Signatures、配送キューといったActivityPub周りの処理はFedifyがすべて引き受けます。ボットのロジックを書くだけです。
DenoでもNode.jsでも動きます。
-
BotKit은 ActivityPub 봇을 만드는 #TypeScript 프레임워크입니다. 일반적인 Mastodon/Misskey 봇과 다른 점은, 봇 자체가 독립된 서버로 돌아간다는 겁니다. 플랫폼 계정이 필요 없습니다.
글자 수 제한도 없고, API 호출 제한에 시달릴 일도 없습니다.
bot.onMention = async (session, message) => { await message.reply(text`안녕하세요, ${message.actor}님!`); };연합(federation), HTTP Signatures, 메시지 전달 같은 #ActivityPub 관련 처리는 Fedify가 알아서 해줍니다. 봇 로직만 짜면 되는 거죠.
-
BotKit은 ActivityPub 봇을 만드는 #TypeScript 프레임워크입니다. 일반적인 Mastodon/Misskey 봇과 다른 점은, 봇 자체가 독립된 서버로 돌아간다는 겁니다. 플랫폼 계정이 필요 없습니다.
글자 수 제한도 없고, API 호출 제한에 시달릴 일도 없습니다.
bot.onMention = async (session, message) => { await message.reply(text`안녕하세요, ${message.actor}님!`); };연합(federation), HTTP Signatures, 메시지 전달 같은 #ActivityPub 관련 처리는 Fedify가 알아서 해줍니다. 봇 로직만 짜면 되는 거죠.
-
#BotKit is a #TypeScript framework for building #ActivityPub bots. The difference from typical Mastodon/Misskey bots? Your bot runs as its own independent server—no platform account needed.
This means no character limits, no rate limiting headaches, no API restrictions.
bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); };The ActivityPub stuff (federation, HTTP Signatures, delivery queues) is handled by #Fedify under the hood. You just write your bot logic.
-
#BotKit is a #TypeScript framework for building #ActivityPub bots. The difference from typical Mastodon/Misskey bots? Your bot runs as its own independent server—no platform account needed.
This means no character limits, no rate limiting headaches, no API restrictions.
bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); };The ActivityPub stuff (federation, HTTP Signatures, delivery queues) is handled by #Fedify under the hood. You just write your bot logic.
-
We're excited to announce the release of BotKit 0.3.0! This release marks a significant milestone as #BotKit now supports #Node.js alongside #Deno, making it accessible to a wider audience. The minimum required Node.js version is 22.0.0. This dual-runtime support means you can now choose your preferred #JavaScript runtime while building #ActivityPub #bots with the same powerful BotKit APIs.
One of the most requested features has landed: poll support! You can now create interactive polls in your #bot messages, allowing followers to vote on questions with single or multiple-choice options. Polls are represented as ActivityPub
Questionobjects with proper expiration times, and your bot can react to votes through the newonVoteevent handler. This feature enhances engagement possibilities and brings BotKit to feature parity with major #fediverse platforms like Mastodon and Misskey.// Create a poll with multiple choices await session.publish(text`What's your favorite programming language?`, { class: Question, poll: { multiple: true, // Allow multiple selections options: ["JavaScript", "TypeScript", "Python", "Rust"], endTime: Temporal.Now.instant().add({ hours: 24 }), }, }); // Handle votes bot.onVote = async (session, vote) => { console.log(`${vote.actor} voted for "${vote.option}"`); };The web frontend has been enhanced with a new followers page, thanks to the contribution from Hyeonseo Kim (@gaebalgom)! The
/followersroute now displays a paginated list of your bot's followers, and the follower count on the main profile page is now clickable, providing better visibility into your bot's audience. This improvement makes the web interface more complete and user-friendly.For developers looking for alternative storage backends, we've introduced the
SqliteRepositorythrough the new@fedify/botkit-sqlitepackage. This provides a production-ready SQLite-based storage solution with ACID compliance, write-ahead logging (WAL) for optimal performance, and proper indexing. Additionally, the new@fedify/botkit/repositorymodule offersMemoryCachedRepositoryfor adding an in-memory cache layer on top of any repository implementation, improving read performance for frequently accessed data.This release also includes an important security update: we've upgraded to #Fedify 1.8.8, ensuring your bots stay secure and compatible with the latest ActivityPub standards. The repository pattern has been expanded with new interfaces and types like
RepositoryGetMessagesOptions,RepositoryGetFollowersOptions, and proper support for polls storage through theKvStoreRepositoryPrefixes.pollsoption, providing more flexibility for custom implementations. -
We're excited to announce the release of BotKit 0.3.0! This release marks a significant milestone as #BotKit now supports #Node.js alongside #Deno, making it accessible to a wider audience. The minimum required Node.js version is 22.0.0. This dual-runtime support means you can now choose your preferred #JavaScript runtime while building #ActivityPub #bots with the same powerful BotKit APIs.
One of the most requested features has landed: poll support! You can now create interactive polls in your #bot messages, allowing followers to vote on questions with single or multiple-choice options. Polls are represented as ActivityPub
Questionobjects with proper expiration times, and your bot can react to votes through the newonVoteevent handler. This feature enhances engagement possibilities and brings BotKit to feature parity with major #fediverse platforms like Mastodon and Misskey.// Create a poll with multiple choices await session.publish(text`What's your favorite programming language?`, { class: Question, poll: { multiple: true, // Allow multiple selections options: ["JavaScript", "TypeScript", "Python", "Rust"], endTime: Temporal.Now.instant().add({ hours: 24 }), }, }); // Handle votes bot.onVote = async (session, vote) => { console.log(`${vote.actor} voted for "${vote.option}"`); };The web frontend has been enhanced with a new followers page, thanks to the contribution from Hyeonseo Kim (@gaebalgom)! The
/followersroute now displays a paginated list of your bot's followers, and the follower count on the main profile page is now clickable, providing better visibility into your bot's audience. This improvement makes the web interface more complete and user-friendly.For developers looking for alternative storage backends, we've introduced the
SqliteRepositorythrough the new@fedify/botkit-sqlitepackage. This provides a production-ready SQLite-based storage solution with ACID compliance, write-ahead logging (WAL) for optimal performance, and proper indexing. Additionally, the new@fedify/botkit/repositorymodule offersMemoryCachedRepositoryfor adding an in-memory cache layer on top of any repository implementation, improving read performance for frequently accessed data.This release also includes an important security update: we've upgraded to #Fedify 1.8.8, ensuring your bots stay secure and compatible with the latest ActivityPub standards. The repository pattern has been expanded with new interfaces and types like
RepositoryGetMessagesOptions,RepositoryGetFollowersOptions, and proper support for polls storage through theKvStoreRepositoryPrefixes.pollsoption, providing more flexibility for custom implementations. -
🔒 Security Update for BotKit Users
We've released #security patch versions BotKit 0.1.2 and 0.2.2 to address CVE-2025-54888, a security #vulnerability discovered in #Fedify. These updates incorporate the latest patched version of Fedify to ensure your bots remain secure.
We strongly recommend all #BotKit users update to the latest patch version immediately. Thank you for keeping the #fediverse safe! 🛡️
-
🔒 Security Update for BotKit Users
We've released #security patch versions BotKit 0.1.2 and 0.2.2 to address CVE-2025-54888, a security #vulnerability discovered in #Fedify. These updates incorporate the latest patched version of Fedify to ensure your bots remain secure.
We strongly recommend all #BotKit users update to the latest patch version immediately. Thank you for keeping the #fediverse safe! 🛡️
-
OSC京都2025でどちらの発表を聞きたいですか?
8月3日のOSC京都で10分間のセミナー発表をすることになりました。二つのテーマで迷っているので、皆さんのご意見をお聞かせください!
どちらのテーマに興味がありますか?
-
OSC京都2025でどちらの発表を聞きたいですか?
8月3日のOSC京都で10分間のセミナー発表をすることになりました。二つのテーマで迷っているので、皆さんのご意見をお聞かせください!
どちらのテーマに興味がありますか?
-
We're pleased to announce that #Node.js support has been merged and will be available in #BotKit 0.3.0.
Now you can build your #ActivityPub bots with both #Deno and Node.js, giving you more flexibility in choosing your preferred runtime environment.
Stay tuned for BotKit 0.3.0!
-
We're pleased to announce that #Node.js support has been merged and will be available in #BotKit 0.3.0.
Now you can build your #ActivityPub bots with both #Deno and Node.js, giving you more flexibility in choosing your preferred runtime environment.
Stay tuned for BotKit 0.3.0!
-
BotKit 0.2.0のリリース
BotKit 0.2.0をリリースしました!BotKitを初めて知る方のために簡単に説明すると、BotKitはTypeScriptで開発されたスタンドアロンのActivityPubボットフレームワークです。Mastodon、Misskeyなどさまざまなフェディバース(#fediverse)のプラットフォームと連携でき、既存プラットフォームの制約なしに自由にボットを作成できます。
このリリースは、フェディバースにおけるボット開発をより簡単で強力にするための旅の重要な一歩であり、コミュニティから要望のあった機能を多数導入しています。
より良いボットインタラクションへの旅
BotKitの開発において、私たちは常にボットをより表現力豊かでインタラクティブにすることに焦点を当ててきました。バージョン0.2.0では、フェディバースの社会的側面をボットに取り入れることで、さらに一歩前進しました。
カスタム絵文字でボットの個性を表現
最も要望の多かった機能の一つがカスタム絵文字のサポートです。これにより、ボットは独自の視覚要素でメッセージを目立たせ、自分だけの個性を表現できるようになりました。
// ボット用のカスタム絵文字を定義 const emojis = bot.addCustomEmojis({ botkit: { file: `${import.meta.dirname}/images/botkit.png`, type: "image/png" }, fedify: { url: "https://fedify.dev/logo.png", type: "image/png" } }); // メッセージにカスタム絵文字を使用 await session.publish( text`BotKit ${customEmoji(emojis.botkit)}は、Fedify ${customEmoji(emojis.fedify)}によって支えられています` );この新しいAPIでは、次のことが可能になりました。
Bot.addCustomEmojis()でボットにカスタム絵文字を追加customEmoji()関数でメッセージに絵文字を含める- Fedifyの
Emojiオブジェクトをtextタグテンプレートで使用する
リアクションによるコミュニケーション
コミュニケーションは単にメッセージを投稿するだけではありません。他の人のメッセージに反応することも重要です。新しいリアクションシステムは、ボットとフォロワーの間に自然な交流ポイントを作り出します。
// 標準のUnicode絵文字でメッセージにリアクション await message.react(emoji`👍`); // または定義したカスタム絵文字でリアクション await message.react(emojis.botkit); // リアクションを認識して応答するボットを作成 bot.onReact = async (session, reaction) => { await session.publish( text`${reaction.actor}さん、私のメッセージに${reaction.emoji}でリアクションしてくれてありがとうございます!`, { visibility: "direct" } ); };この機能により、ボットは次のことができるようになりました。
Message.react()を使用してUnicode絵文字でメッセージにリアクション- 定義したカスタム絵文字でリアクション
Bot.onReactとBot.onUnreactハンドラーでリアクションイベントを処理
引用による会話
議論では、他の人が言ったことを参照する必要がしばしばあります。新しい引用機能により、より結束力のある会話スレッドを作成できます。
// ボットの投稿で他のメッセージを引用 await session.publish( text`この興味深い視点について答えます...`, { quoteTarget: originalMessage } ); // ユーザーがボットのメッセージを引用した場合の処理 bot.onQuote = async (session, quoteMessage) => { await session.publish( text`${quoteMessage.actor}さん、私の考えを共有してくれてありがとうございます!`, { visibility: "direct" } ); };引用機能により、ボットは次のことができるようになりました。
quoteTargetオプションでメッセージを引用Message.quoteTargetを通じて引用されたメッセージにアクセス- 新しい
Bot.onQuoteイベントハンドラーで引用イベントを処理
視覚的な改善
コミュニケーションには視覚的要素も重要なため、ボットの表現方法を改善しました。
- ウェブインターフェースで画像添付ファイルが正しく表示されるようになりました
- ボットのコンテンツがより見やすくなり、豊かな体験を提供します
内部改善:活動の伝播の強化
フェディバースでの活動が伝播する方法も改善されました。
- 返信、共有、更新、削除のより正確な伝播
- 元のメッセージ作成者に活動が適切に送信されます
これらの改善により、様々なフェディバースプラットフォームでのボットの相互作用が一貫性と信頼性を持つようになります。
BotKit 0.2.0で最初の一歩を踏み出す
これらの新機能を体験してみたいですか?BotKit 0.2.0はJSRで利用可能で、簡単なコマンドでインストールできます。
deno add jsr:@fedify/[email protected]BotKitはTemporal API(JavaScriptではまだ試験的な機能)を使用するため、deno.jsonでこれを有効にする必要があります。
{ "imports": { "@fedify/botkit": "jsr:@fedify/[email protected]" }, "unstable": ["temporal"] }これらの簡単なステップで、最新機能を使ってフェディバースボットを作成またはアップグレードする準備が整いました。
今後の展望
#BotKit 0.2.0は、フェディバースボット開発をアクセスしやすく、強力かつ楽しいものにするための私たちの継続的な取り組みを示しています。これらの新機能が、皆さんのボットをフェディバースコミュニティでより魅力的でインタラクティブなメンバーにするのに役立つと信じています。
完全なドキュメントと詳細な例については、私たちのドキュメントサイトをご覧ください。
フィードバック、機能リクエスト、コード貢献を通じてこのリリースに貢献してくださったすべての方々に感謝します。BotKitコミュニティは成長を続けており、皆さんが作成するものを楽しみにしています!
BotKitは、ActivityPubサーバーアプリケーションを作成するための低レベルフレームワークFedifyによって支えられています。
-
BotKit 0.2.0のリリース
BotKit 0.2.0をリリースしました!BotKitを初めて知る方のために簡単に説明すると、BotKitはTypeScriptで開発されたスタンドアロンのActivityPubボットフレームワークです。Mastodon、Misskeyなどさまざまなフェディバース(#fediverse)のプラットフォームと連携でき、既存プラットフォームの制約なしに自由にボットを作成できます。
このリリースは、フェディバースにおけるボット開発をより簡単で強力にするための旅の重要な一歩であり、コミュニティから要望のあった機能を多数導入しています。
より良いボットインタラクションへの旅
BotKitの開発において、私たちは常にボットをより表現力豊かでインタラクティブにすることに焦点を当ててきました。バージョン0.2.0では、フェディバースの社会的側面をボットに取り入れることで、さらに一歩前進しました。
カスタム絵文字でボットの個性を表現
最も要望の多かった機能の一つがカスタム絵文字のサポートです。これにより、ボットは独自の視覚要素でメッセージを目立たせ、自分だけの個性を表現できるようになりました。
// ボット用のカスタム絵文字を定義 const emojis = bot.addCustomEmojis({ botkit: { file: `${import.meta.dirname}/images/botkit.png`, type: "image/png" }, fedify: { url: "https://fedify.dev/logo.png", type: "image/png" } }); // メッセージにカスタム絵文字を使用 await session.publish( text`BotKit ${customEmoji(emojis.botkit)}は、Fedify ${customEmoji(emojis.fedify)}によって支えられています` );この新しいAPIでは、次のことが可能になりました。
Bot.addCustomEmojis()でボットにカスタム絵文字を追加customEmoji()関数でメッセージに絵文字を含める- Fedifyの
Emojiオブジェクトをtextタグテンプレートで使用する
リアクションによるコミュニケーション
コミュニケーションは単にメッセージを投稿するだけではありません。他の人のメッセージに反応することも重要です。新しいリアクションシステムは、ボットとフォロワーの間に自然な交流ポイントを作り出します。
// 標準のUnicode絵文字でメッセージにリアクション await message.react(emoji`👍`); // または定義したカスタム絵文字でリアクション await message.react(emojis.botkit); // リアクションを認識して応答するボットを作成 bot.onReact = async (session, reaction) => { await session.publish( text`${reaction.actor}さん、私のメッセージに${reaction.emoji}でリアクションしてくれてありがとうございます!`, { visibility: "direct" } ); };この機能により、ボットは次のことができるようになりました。
Message.react()を使用してUnicode絵文字でメッセージにリアクション- 定義したカスタム絵文字でリアクション
Bot.onReactとBot.onUnreactハンドラーでリアクションイベントを処理
引用による会話
議論では、他の人が言ったことを参照する必要がしばしばあります。新しい引用機能により、より結束力のある会話スレッドを作成できます。
// ボットの投稿で他のメッセージを引用 await session.publish( text`この興味深い視点について答えます...`, { quoteTarget: originalMessage } ); // ユーザーがボットのメッセージを引用した場合の処理 bot.onQuote = async (session, quoteMessage) => { await session.publish( text`${quoteMessage.actor}さん、私の考えを共有してくれてありがとうございます!`, { visibility: "direct" } ); };引用機能により、ボットは次のことができるようになりました。
quoteTargetオプションでメッセージを引用Message.quoteTargetを通じて引用されたメッセージにアクセス- 新しい
Bot.onQuoteイベントハンドラーで引用イベントを処理
視覚的な改善
コミュニケーションには視覚的要素も重要なため、ボットの表現方法を改善しました。
- ウェブインターフェースで画像添付ファイルが正しく表示されるようになりました
- ボットのコンテンツがより見やすくなり、豊かな体験を提供します
内部改善:活動の伝播の強化
フェディバースでの活動が伝播する方法も改善されました。
- 返信、共有、更新、削除のより正確な伝播
- 元のメッセージ作成者に活動が適切に送信されます
これらの改善により、様々なフェディバースプラットフォームでのボットの相互作用が一貫性と信頼性を持つようになります。
BotKit 0.2.0で最初の一歩を踏み出す
これらの新機能を体験してみたいですか?BotKit 0.2.0はJSRで利用可能で、簡単なコマンドでインストールできます。
deno add jsr:@fedify/[email protected]BotKitはTemporal API(JavaScriptではまだ試験的な機能)を使用するため、deno.jsonでこれを有効にする必要があります。
{ "imports": { "@fedify/botkit": "jsr:@fedify/[email protected]" }, "unstable": ["temporal"] }これらの簡単なステップで、最新機能を使ってフェディバースボットを作成またはアップグレードする準備が整いました。
今後の展望
#BotKit 0.2.0は、フェディバースボット開発をアクセスしやすく、強力かつ楽しいものにするための私たちの継続的な取り組みを示しています。これらの新機能が、皆さんのボットをフェディバースコミュニティでより魅力的でインタラクティブなメンバーにするのに役立つと信じています。
完全なドキュメントと詳細な例については、私たちのドキュメントサイトをご覧ください。
フィードバック、機能リクエスト、コード貢献を通じてこのリリースに貢献してくださったすべての方々に感謝します。BotKitコミュニティは成長を続けており、皆さんが作成するものを楽しみにしています!
BotKitは、ActivityPubサーバーアプリケーションを作成するための低レベルフレームワークFedifyによって支えられています。
-
BotKit 0.2.0 Released
We're pleased to announce the release of BotKit 0.2.0! For those new to our project, #BotKit is a #TypeScript framework for creating standalone #ActivityPub bots that can interact with Mastodon, Misskey, and other #fediverse platforms without the constraints of these existing platforms.
This release marks an important step in our journey to make fediverse bot development more accessible and powerful, introducing several features that our community has been requesting.
The Journey to Better Bot Interactions
In building BotKit, we've always focused on making bots more expressive and interactive. With version 0.2.0, we're taking this to the next level by bringing the social aspects of the fediverse to your bots.
Expressing Your Bot's Personality with Custom Emojis
One of the most requested features has been #custom_emoji support. Now your bots can truly express their personality with unique visuals that make their messages stand out.
// Define custom emojis for your bot const emojis = bot.addCustomEmojis({ botkit: { file: `${import.meta.dirname}/images/botkit.png`, type: "image/png" }, fedify: { url: "https://fedify.dev/logo.png", type: "image/png" } }); // Use these custom emojis in your messages await session.publish( text`BotKit ${customEmoji(emojis.botkit)} is powered by Fedify ${customEmoji(emojis.fedify)}` );With this new API, you can:
- Add custom emojis to your bot with
Bot.addCustomEmojis() - Include these emojis in messages with the
customEmoji()function - Use the
texttagged template with FedifyEmojiobjects
Engaging Through Reactions
Communication isn't just about posting messages—it's also about responding to others. The new reaction system creates natural interaction points between your bot and its followers:
// React to a message with a standard Unicode emoji await message.react(emoji`👍`); // Or use one of your custom emojis as a reaction await message.react(emojis.botkit); // Create a responsive bot that acknowledges reactions bot.onReact = async (session, reaction) => { await session.publish( text`Thanks for reacting with ${reaction.emoji} to my message, ${reaction.actor}!`, { visibility: "direct" } ); };This feature allows your bot to:
- React to messages with Unicode emojis using
Message.react() - React with the custom emojis you've defined
- Handle reaction events with
Bot.onReactandBot.onUnreacthandlers
Conversations Through Quotes
Discussions often involve referencing what others have said. Our new #quote support enables more cohesive conversation threads:
// Quote another message in your bot's post await session.publish( text`Responding to this interesting point...`, { quoteTarget: originalMessage } ); // Handle when users quote your bot's messages bot.onQuote = async (session, quoteMessage) => { await session.publish( text`Thanks for sharing my thoughts, ${quoteMessage.actor}!`, { visibility: "direct" } ); };With quote support, your bot can:
- Quote messages with
quoteTargetoption - Access quoted messages via
Message.quoteTarget - Handle quote events with the new
Bot.onQuoteevent handler
Visual Enhancements
Because communication is visual too, we've improved how your bot presents itself:
- Image attachments now properly display in the web interface
- Your bot's content looks better and provides a richer experience
Behind the Scenes: Enhanced Activity Propagation
We've also improved how activities propagate through the fediverse:
- More precise propagation of replies, shares, updates, and deletes
- Activities are now properly sent to the original message authors
These improvements ensure your bot's interactions are consistent and reliable across different fediverse platforms.
Taking Your First Steps with BotKit 0.2.0
Ready to experience these new features? BotKit 0.2.0 is available on JSR and can be installed with a simple command:
deno add jsr:@fedify/[email protected]Since BotKit uses the Temporal API (which is still evolving in JavaScript), remember to enable it in your deno.json:
{ "imports": { "@fedify/botkit": "jsr:@fedify/[email protected]" }, "unstable": ["temporal"] }With these simple steps, you're ready to create or upgrade your fediverse bot with our latest features.
Looking Forward
BotKit 0.2.0 represents our ongoing commitment to making fediverse bot development accessible, powerful, and enjoyable. We believe these new features will help your bots become more engaging and interactive members of the fediverse community.
For complete docs and more examples, visit our docs site.
Thank you to everyone who contributed to this release through feedback, feature requests, and code contributions. The BotKit community continues to grow, and we're excited to see what you'll create!
BotKit is powered by Fedify, a lower-level framework for creating ActivityPub server applications.
- Add custom emojis to your bot with
-
BotKit 0.2.0 Released
We're pleased to announce the release of BotKit 0.2.0! For those new to our project, #BotKit is a #TypeScript framework for creating standalone #ActivityPub bots that can interact with Mastodon, Misskey, and other #fediverse platforms without the constraints of these existing platforms.
This release marks an important step in our journey to make fediverse bot development more accessible and powerful, introducing several features that our community has been requesting.
The Journey to Better Bot Interactions
In building BotKit, we've always focused on making bots more expressive and interactive. With version 0.2.0, we're taking this to the next level by bringing the social aspects of the fediverse to your bots.
Expressing Your Bot's Personality with Custom Emojis
One of the most requested features has been #custom_emoji support. Now your bots can truly express their personality with unique visuals that make their messages stand out.
// Define custom emojis for your bot const emojis = bot.addCustomEmojis({ botkit: { file: `${import.meta.dirname}/images/botkit.png`, type: "image/png" }, fedify: { url: "https://fedify.dev/logo.png", type: "image/png" } }); // Use these custom emojis in your messages await session.publish( text`BotKit ${customEmoji(emojis.botkit)} is powered by Fedify ${customEmoji(emojis.fedify)}` );With this new API, you can:
- Add custom emojis to your bot with
Bot.addCustomEmojis() - Include these emojis in messages with the
customEmoji()function - Use the
texttagged template with FedifyEmojiobjects
Engaging Through Reactions
Communication isn't just about posting messages—it's also about responding to others. The new reaction system creates natural interaction points between your bot and its followers:
// React to a message with a standard Unicode emoji await message.react(emoji`👍`); // Or use one of your custom emojis as a reaction await message.react(emojis.botkit); // Create a responsive bot that acknowledges reactions bot.onReact = async (session, reaction) => { await session.publish( text`Thanks for reacting with ${reaction.emoji} to my message, ${reaction.actor}!`, { visibility: "direct" } ); };This feature allows your bot to:
- React to messages with Unicode emojis using
Message.react() - React with the custom emojis you've defined
- Handle reaction events with
Bot.onReactandBot.onUnreacthandlers
Conversations Through Quotes
Discussions often involve referencing what others have said. Our new #quote support enables more cohesive conversation threads:
// Quote another message in your bot's post await session.publish( text`Responding to this interesting point...`, { quoteTarget: originalMessage } ); // Handle when users quote your bot's messages bot.onQuote = async (session, quoteMessage) => { await session.publish( text`Thanks for sharing my thoughts, ${quoteMessage.actor}!`, { visibility: "direct" } ); };With quote support, your bot can:
- Quote messages with
quoteTargetoption - Access quoted messages via
Message.quoteTarget - Handle quote events with the new
Bot.onQuoteevent handler
Visual Enhancements
Because communication is visual too, we've improved how your bot presents itself:
- Image attachments now properly display in the web interface
- Your bot's content looks better and provides a richer experience
Behind the Scenes: Enhanced Activity Propagation
We've also improved how activities propagate through the fediverse:
- More precise propagation of replies, shares, updates, and deletes
- Activities are now properly sent to the original message authors
These improvements ensure your bot's interactions are consistent and reliable across different fediverse platforms.
Taking Your First Steps with BotKit 0.2.0
Ready to experience these new features? BotKit 0.2.0 is available on JSR and can be installed with a simple command:
deno add jsr:@fedify/[email protected]Since BotKit uses the Temporal API (which is still evolving in JavaScript), remember to enable it in your deno.json:
{ "imports": { "@fedify/botkit": "jsr:@fedify/[email protected]" }, "unstable": ["temporal"] }With these simple steps, you're ready to create or upgrade your fediverse bot with our latest features.
Looking Forward
BotKit 0.2.0 represents our ongoing commitment to making fediverse bot development accessible, powerful, and enjoyable. We believe these new features will help your bots become more engaging and interactive members of the fediverse community.
For complete docs and more examples, visit our docs site.
Thank you to everyone who contributed to this release through feedback, feature requests, and code contributions. The BotKit community continues to grow, and we're excited to see what you'll create!
BotKit is powered by Fedify, a lower-level framework for creating ActivityPub server applications.
- Add custom emojis to your bot with
-
Coming soon in #BotKit 0.2.0: Native #quote post support!
We're excited to share a preview of the upcoming quoting features in BotKit 0.2.0. This update will make it easier for your bots to engage with quoted content across the fediverse.
The quoting feature set includes:
- Detecting when someone quotes your bot's posts with the new
Bot.onQuoteevent handler - Accessing quoted content through the
Message.quoteTargetproperty - Creating quote posts using the
quoteTargetoption inSession.publish()andMessage.reply()methods
Here's a quick example of how you can use the quote detection:
bot.onQuote = async (session, quote) => { // The quote parameter is a Message object representing the post that quoted your bot await quote.reply(text`Thanks for quoting my post, ${quote.actor}!`); // You can access the original quoted message const originalPost = quote.quoteTarget; console.log(`Original message: ${originalPost?.text}`); };And creating quote posts is just as simple:
// Quote in a new post await session.publish( text`I'm quoting this interesting message!`, { quoteTarget: someMessage } ); // Or quote in a reply await message.reply( text`Interesting point! I'm quoting another relevant post here.`, { quoteTarget: anotherMessage } );Remember that quoting behavior may vary across different #ActivityPub implementations—some platforms like Misskey display quotes prominently, while others like Mastodon might implement them differently.
Want to try these features right now? You can install the development version from JSR:
deno add jsr:@fedify/[email protected]+d6ab4bdcWe're looking forward to seeing how you use these quoting capabilities in your bots!
- Detecting when someone quotes your bot's posts with the new
-
Coming soon in #BotKit 0.2.0: Native #quote post support!
We're excited to share a preview of the upcoming quoting features in BotKit 0.2.0. This update will make it easier for your bots to engage with quoted content across the fediverse.
The quoting feature set includes:
- Detecting when someone quotes your bot's posts with the new
Bot.onQuoteevent handler - Accessing quoted content through the
Message.quoteTargetproperty - Creating quote posts using the
quoteTargetoption inSession.publish()andMessage.reply()methods
Here's a quick example of how you can use the quote detection:
bot.onQuote = async (session, quote) => { // The quote parameter is a Message object representing the post that quoted your bot await quote.reply(text`Thanks for quoting my post, ${quote.actor}!`); // You can access the original quoted message const originalPost = quote.quoteTarget; console.log(`Original message: ${originalPost?.text}`); };And creating quote posts is just as simple:
// Quote in a new post await session.publish( text`I'm quoting this interesting message!`, { quoteTarget: someMessage } ); // Or quote in a reply await message.reply( text`Interesting point! I'm quoting another relevant post here.`, { quoteTarget: anotherMessage } );Remember that quoting behavior may vary across different #ActivityPub implementations—some platforms like Misskey display quotes prominently, while others like Mastodon might implement them differently.
Want to try these features right now? You can install the development version from JSR:
deno add jsr:@fedify/[email protected]+d6ab4bdcWe're looking forward to seeing how you use these quoting capabilities in your bots!
- Detecting when someone quotes your bot's posts with the new
-
We're excited to introduce emoji reactions in the upcoming #BotKit 0.2.0 release!
With the new
Message.react()method, your bot can now react to messages using standard Unicode #emojis:await message.react(emoji`👍`);#Custom_emoji support is also included, allowing your bot to react with server-specific emojis:
const emojis = bot.addCustomEmojis({ // Use a remote image URL: yesBlob: { url: "https://cdn3.emoji.gg/emojis/68238-yesblob.png", mediaType: "image/png", }, // Use a local image file: noBlob: { file: `${import.meta.dirname}/emojis/no_blob.png`, mediaType: "image/webp", }, }); await message.react(emojis.yesBlob);Reactions can be removed using the
AuthorizedReaction.unreact()method:const reaction = await message.react(emoji`❤️`); await reaction.unreact();Want to try these features now? You can install the development version from JSR today:
deno add jsr:@fedify/[email protected]+c997c6a6We're looking forward to seeing how your bots express themselves with this new feature!
-
We're excited to introduce emoji reactions in the upcoming #BotKit 0.2.0 release!
With the new
Message.react()method, your bot can now react to messages using standard Unicode #emojis:await message.react(emoji`👍`);#Custom_emoji support is also included, allowing your bot to react with server-specific emojis:
const emojis = bot.addCustomEmojis({ // Use a remote image URL: yesBlob: { url: "https://cdn3.emoji.gg/emojis/68238-yesblob.png", mediaType: "image/png", }, // Use a local image file: noBlob: { file: `${import.meta.dirname}/emojis/no_blob.png`, mediaType: "image/webp", }, }); await message.react(emojis.yesBlob);Reactions can be removed using the
AuthorizedReaction.unreact()method:const reaction = await message.react(emoji`❤️`); await reaction.unreact();Want to try these features now? You can install the development version from JSR today:
deno add jsr:@fedify/[email protected]+c997c6a6We're looking forward to seeing how your bots express themselves with this new feature!
-
We're excited to announce that #BotKit 0.2.0 will introduce custom emoji support! This feature allows your bots to express themselves with more personality and engagement.
What's included:
- Add custom emojis to your bot with
Bot.addCustomEmojis() - Use emoji in messages with the
customEmoji()function - Support for both local image files and remote URLs as emoji sources
- Full integration with BotKit's text formatting system
Simple example:
// Define custom emojis const emojis = bot.addCustomEmojis({ botkit: { file: "./botkit.png", type: "image/png" }, fedify: { url: "https://fedify.dev/logo.png", type: "image/png" } }); // Use in messages await session.publish( text`Hello world! ${customEmoji(emojis.botkit)}` );Want to try it early? You can install the development version from JSR today:
deno add jsr:@fedify/[email protected]+8a0438e6 - Add custom emojis to your bot with
-
We're excited to announce that #BotKit 0.2.0 will introduce custom emoji support! This feature allows your bots to express themselves with more personality and engagement.
What's included:
- Add custom emojis to your bot with
Bot.addCustomEmojis() - Use emoji in messages with the
customEmoji()function - Support for both local image files and remote URLs as emoji sources
- Full integration with BotKit's text formatting system
Simple example:
// Define custom emojis const emojis = bot.addCustomEmojis({ botkit: { file: "./botkit.png", type: "image/png" }, fedify: { url: "https://fedify.dev/logo.png", type: "image/png" } }); // Use in messages await session.publish( text`Hello world! ${customEmoji(emojis.botkit)}` );Want to try it early? You can install the development version from JSR today:
deno add jsr:@fedify/[email protected]+8a0438e6 - Add custom emojis to your bot with
-
First, I'm adding custom emoji support to #BotKit…
-
First, I'm adding custom emoji support to #BotKit…
-
I've been considering what to add in the next version of BotKit (v0.2.0) and wanted to share my current plans. After reviewing feedback and examining the #ActivityPub ecosystem, I've identified three key features that would significantly enhance the framework's capabilities:
-
Custom emoji support. This would allow bots to use server-defined custom emojis in their messages, making communication more expressive and allowing better integration with instance culture.
-
Emoji reactions. I plan to implement both sending and receiving emoji reactions to messages. This provides a lightweight interaction model that many users prefer for simple acknowledgments or responses. This would manifest as new event handlers (like
Bot.onReaction) and methods (likeMessage.react()). -
Quote posts. The ability to reference other posts with commentary is an important discourse feature in the fediverse. Supporting both sending quotes and detecting when bot posts have been quoted would enable more sophisticated conversational patterns.
These additions should make #BotKit more capable while maintaining its simple, developer-friendly API. I expect implementation to involve extending the
Messageclass and adding newTextprocessing capabilities, all while keeping backward compatibility with existing bots. Having built both Hollo and Hackers' Pub, I already have deep familiarity with how various ActivityPub implementations handle these features across the fediverse. I welcome any community feedback on priorities or implementation details before I begin coding. -
-
I've been considering what to add in the next version of BotKit (v0.2.0) and wanted to share my current plans. After reviewing feedback and examining the #ActivityPub ecosystem, I've identified three key features that would significantly enhance the framework's capabilities:
-
Custom emoji support. This would allow bots to use server-defined custom emojis in their messages, making communication more expressive and allowing better integration with instance culture.
-
Emoji reactions. I plan to implement both sending and receiving emoji reactions to messages. This provides a lightweight interaction model that many users prefer for simple acknowledgments or responses. This would manifest as new event handlers (like
Bot.onReaction) and methods (likeMessage.react()). -
Quote posts. The ability to reference other posts with commentary is an important discourse feature in the fediverse. Supporting both sending quotes and detecting when bot posts have been quoted would enable more sophisticated conversational patterns.
These additions should make #BotKit more capable while maintaining its simple, developer-friendly API. I expect implementation to involve extending the
Messageclass and adding newTextprocessing capabilities, all while keeping backward compatibility with existing bots. Having built both Hollo and Hackers' Pub, I already have deep familiarity with how various ActivityPub implementations handle these features across the fediverse. I welcome any community feedback on priorities or implementation details before I begin coding. -
-
By the way, #BotKit also needs to be updated… I have so much work left to do.
-
By the way, #BotKit also needs to be updated… I have so much work left to do.
-
#フェディバース(#fediverse)用のボットを作りたいですか?#BotKit by Fedifyを使えば、わずか数行のコードでスタンドアロンのActivityPubボットを構築できます!従来のMastodonやMisskeyボットとは異なり、BotKitはプラットフォームの制約なしに完全なActivityPubサーバーを作成できます。
BotKitでできること:
- メンション、フォロー、メッセージに応答するボットの構築
- 整形されたテキスト、メンション、メディアを含む豊かなコンテンツの作成
- 予約投稿の公開と会話の自動管理
- Deno Deploy、Docker、または自己ホスティングサーバーへの簡単なデプロイ
ドキュメントはhttps://botkit.fedify.dev/で確認し、今からフェディバースボットの構築を始めましょう!
-
#フェディバース(#fediverse)用のボットを作りたいですか?#BotKit by Fedifyを使えば、わずか数行のコードでスタンドアロンのActivityPubボットを構築できます!従来のMastodonやMisskeyボットとは異なり、BotKitはプラットフォームの制約なしに完全なActivityPubサーバーを作成できます。
BotKitでできること:
- メンション、フォロー、メッセージに応答するボットの構築
- 整形されたテキスト、メンション、メディアを含む豊かなコンテンツの作成
- 予約投稿の公開と会話の自動管理
- Deno Deploy、Docker、または自己ホスティングサーバーへの簡単なデプロイ
ドキュメントはhttps://botkit.fedify.dev/で確認し、今からフェディバースボットの構築を始めましょう!
-
#연합우주(#fediverse)를 위한 봇을 만들고 싶으신가요? #BotKit by Fedify를 사용하면 몇 줄의 코드만으로 독립형 #ActivityPub 봇을 구축할 수 있습니다! 일반적인 Mastodon 또는 Misskey 봇과 달리, BotKit은 플랫폼 제약 없이 완전한 ActivityPub 서버를 만들 수 있게 도와줍니다.
BotKit으로 할 수 있는 것:
- 멘션, 팔로우 및 메시지에 응답하는 봇 만들기
- 형식화된 텍스트, 멘션 및 미디어가 포함된 풍부한 콘텐츠 생성
- 예약된 게시물 발행 및 대화 자동 관리
- Deno Deploy, Docker 또는 자체 호스팅 서버에 쉽게 배포
문서는 https://botkit.fedify.dev/에서 확인하시고 지금 바로 연합우주 봇을 만들어 보세요!
-
#연합우주(#fediverse)를 위한 봇을 만들고 싶으신가요? #BotKit by Fedify를 사용하면 몇 줄의 코드만으로 독립형 #ActivityPub 봇을 구축할 수 있습니다! 일반적인 Mastodon 또는 Misskey 봇과 달리, BotKit은 플랫폼 제약 없이 완전한 ActivityPub 서버를 만들 수 있게 도와줍니다.
BotKit으로 할 수 있는 것:
- 멘션, 팔로우 및 메시지에 응답하는 봇 만들기
- 형식화된 텍스트, 멘션 및 미디어가 포함된 풍부한 콘텐츠 생성
- 예약된 게시물 발행 및 대화 자동 관리
- Deno Deploy, Docker 또는 자체 호스팅 서버에 쉽게 배포
문서는 https://botkit.fedify.dev/에서 확인하시고 지금 바로 연합우주 봇을 만들어 보세요!
-
Want to create a #bot for the #fediverse? #BotKit by @fedify lets you build standalone #ActivityPub bots with just a few lines of code! Unlike traditional Mastodon bots, BotKit helps you create complete ActivityPub servers without platform constraints.
With BotKit, you can:
- Build bots that respond to mentions, follows, and messages
- Create rich content with formatted text, mentions, and media
- Publish scheduled posts and automatically manage conversations
- Deploy easily on Deno Deploy, Docker, or self-hosted servers
Check out our documentation at https://botkit.fedify.dev/ and start building your fediverse bot today!
-
Want to create a #bot for the #fediverse? #BotKit by @fedify lets you build standalone #ActivityPub bots with just a few lines of code! Unlike traditional Mastodon bots, BotKit helps you create complete ActivityPub servers without platform constraints.
With BotKit, you can:
- Build bots that respond to mentions, follows, and messages
- Create rich content with formatted text, mentions, and media
- Publish scheduled posts and automatically manage conversations
- Deploy easily on Deno Deploy, Docker, or self-hosted servers
Check out our documentation at https://botkit.fedify.dev/ and start building your fediverse bot today!
-
Fedifyの関連プロジェクトをご紹介したいと思います。ActivityPubアプリケーション開発をより簡単にするツール群です:
Fedify :fedify:
Fedify(@fedify)はActivityPubやその他のフェディバース標準を活用する連合型サーバーアプリケーションを構築するためのTypeScriptライブラリです。Activity Vocabularyの型安全なオブジェクト、WebFingerクライアント・サーバー、HTTP Signaturesなどを提供し、ボイラープレートコードを削減してアプリケーションロジックに集中できるようにします。
Hollo :hollo:
Hollo(@hollo)はFedifyで動作するお一人様用マイクロブログサーバーです。個人向けに設計されていますが、ActivityPubを通じて完全に連合化されており、フェディバース全体のユーザーと交流することができます。HolloはMastodon互換APIを実装しているため、独自のウェブインターフェースがなくても、ほとんどのMastodonクライアントと互換性があります。
Holloはまた、正式リリース前の最新Fedify機能をテストする実験場としても活用されています。
BotKit :botkit:
BotKit(@botkit)は私たちの最も新しいメンバーで、ActivityPubボットを作成するために特別に設計されたフレームワークです。従来のMastodonボットとは異なり、BotKitはプラットフォーム固有の制限(文字数制限など)に縛られない独立したActivityPubサーバーを作成します。
BotKitのAPIは意図的にシンプルに設計されており、単一のTypeScriptファイルで完全なボットを作成できます!
これら三つのプロジェクトはすべて@fedify-dev GitHubオーガニゼーションでオープンソースとして公開されています。それぞれ異なる目的を持っていますが、ActivityPub開発をより身近にし、フェディバースのエコシステムを拡大するという共通の目標を共有しています。
これらのプロジェクトを試してみたり、開発に貢献したりすることに興味がある場合は、以下をご覧ください:
- Fedify:https://fedify.dev/
- Hollo:https://docs.hollo.social/
- BotKit:https://botkit.fedify.dev/
#Fedify #ActivityPub #フェディバース #fediverse #Hollo #BotKit #fedidev
-
Fedifyの関連プロジェクトをご紹介したいと思います。ActivityPubアプリケーション開発をより簡単にするツール群です:
Fedify :fedify:
Fedify(@fedify)はActivityPubやその他のフェディバース標準を活用する連合型サーバーアプリケーションを構築するためのTypeScriptライブラリです。Activity Vocabularyの型安全なオブジェクト、WebFingerクライアント・サーバー、HTTP Signaturesなどを提供し、ボイラープレートコードを削減してアプリケーションロジックに集中できるようにします。
Hollo :hollo:
Hollo(@hollo)はFedifyで動作するお一人様用マイクロブログサーバーです。個人向けに設計されていますが、ActivityPubを通じて完全に連合化されており、フェディバース全体のユーザーと交流することができます。HolloはMastodon互換APIを実装しているため、独自のウェブインターフェースがなくても、ほとんどのMastodonクライアントと互換性があります。
Holloはまた、正式リリース前の最新Fedify機能をテストする実験場としても活用されています。
BotKit :botkit:
BotKit(@botkit)は私たちの最も新しいメンバーで、ActivityPubボットを作成するために特別に設計されたフレームワークです。従来のMastodonボットとは異なり、BotKitはプラットフォーム固有の制限(文字数制限など)に縛られない独立したActivityPubサーバーを作成します。
BotKitのAPIは意図的にシンプルに設計されており、単一のTypeScriptファイルで完全なボットを作成できます!
これら三つのプロジェクトはすべて@fedify-dev GitHubオーガニゼーションでオープンソースとして公開されています。それぞれ異なる目的を持っていますが、ActivityPub開発をより身近にし、フェディバースのエコシステムを拡大するという共通の目標を共有しています。
これらのプロジェクトを試してみたり、開発に貢献したりすることに興味がある場合は、以下をご覧ください:
- Fedify:https://fedify.dev/
- Hollo:https://docs.hollo.social/
- BotKit:https://botkit.fedify.dev/
#Fedify #ActivityPub #フェディバース #fediverse #Hollo #BotKit #fedidev