<p>BotKit 0.2.0 Released</p><p>We're pleased to announce the release of <a href="https://botkit.fedify.dev/" rel="nofollow">BotKit</a> 0.2.0! For those new to our project, <a href="/tags/botkit/" rel="tag">#BotKit</a> is a <a href="/tags/typescript/" rel="tag">#TypeScript</a> framework for creating standalone <a href="/tags/activitypub/" rel="tag">#ActivityPub</a> bots that can interact with Mastodon, Misskey, and other <a href="/tags/fediverse/" rel="tag">#fediverse</a> platforms without the constraints of these existing platforms.</p><p>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.</p><p>The Journey to Better Bot Interactions</p><p>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.</p><p>Expressing Your Bot's Personality with Custom Emojis</p><p>One of the most requested features has been <a href="/tags/custom_emoji/" rel="tag">#custom_emoji</a> support. Now your bots can truly express their personality with unique visuals that make their messages stand out.</p><p>// Define custom emojis for your botconst emojis = bot.addCustomEmojis({ botkit: { file: `${import.meta.dirname}/images/botkit.png`, type: "image/png" }, fedify: { url: "<a href="https://fedify.dev/logo.png" rel="nofollow"><span class="invisible">https://</span>fedify.dev/logo.png</a>", type: "image/png" }});// Use these custom emojis in your messagesawait session.publish( text`BotKit ${customEmoji(emojis.botkit)} is powered by Fedify ${customEmoji(emojis.fedify)}`);</p><p>With this new API, you can:</p><p>Add custom emojis to your bot with Bot.addCustomEmojis()<br>Include these emojis in messages with the <a href="https://botkit.fedify.dev/concepts/text#custom-emojis" rel="nofollow">customEmoji()</a> function<br><a href="https://botkit.fedify.dev/concepts/text#emoji" rel="nofollow">Use the text tagged template with Fedify Emoji objects</a></p><p>Engaging Through Reactions</p><p>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:</p><p>// React to a message with a standard Unicode emojiawait message.react(emoji`👍`);// Or use one of your custom emojis as a reactionawait message.react(emojis.botkit);// Create a responsive bot that acknowledges reactionsbot.onReact = async (session, reaction) => { await session.publish( text`Thanks for reacting with ${reaction.emoji} to my message, ${reaction.actor}!`, { visibility: "direct" } );};</p><p>This feature allows your bot to:</p><p>React to messages with Unicode emojis using <a href="https://botkit.fedify.dev/concepts/message#reacting-to-a-message-with-an-emoji" rel="nofollow">Message.react()</a><br>React with the custom emojis you've defined<br>Handle reaction events with <a href="https://botkit.fedify.dev/concepts/events#emoji-reaction" rel="nofollow">Bot.onReact</a> and <a href="https://botkit.fedify.dev/concepts/events#undoing-emoji-reaction" rel="nofollow">Bot.onUnreact</a> handlers</p><p>Conversations Through Quotes</p><p>Discussions often involve referencing what others have said. Our new <a href="/tags/quote/" rel="tag">#quote</a> support enables more cohesive conversation threads:</p><p>// Quote another message in your bot's postawait session.publish( text`Responding to this interesting point...`, { quoteTarget: originalMessage });// Handle when users quote your bot's messagesbot.onQuote = async (session, quoteMessage) => { await session.publish( text`Thanks for sharing my thoughts, ${quoteMessage.actor}!`, { visibility: "direct" } );};</p><p>With quote support, your bot can:</p><p>Quote messages with <a href="https://botkit.fedify.dev/concepts/message#quoting" rel="nofollow">quoteTarget</a> option<br>Access quoted messages via <a href="https://botkit.fedify.dev/concepts/message#quotes" rel="nofollow">Message.quoteTarget</a><br>Handle quote events with the new <a href="https://botkit.fedify.dev/concepts/events#quote" rel="nofollow">Bot.onQuote</a> event handler</p><p>Visual Enhancements</p><p>Because communication is visual too, we've improved how your bot presents itself:</p><p>Image attachments now properly display in the web interface<br>Your bot's content looks better and provides a richer experience</p><p>Behind the Scenes: Enhanced Activity Propagation</p><p>We've also improved how activities propagate through the fediverse:</p><p>More precise propagation of replies, shares, updates, and deletes<br>Activities are now properly sent to the original message authors</p><p>These improvements ensure your bot's interactions are consistent and reliable across different fediverse platforms.</p><p>Taking Your First Steps with BotKit 0.2.0</p><p>Ready to experience these new features? BotKit 0.2.0 is available on <a href="https://jsr.io/@fedify/[email protected]" rel="nofollow">JSR</a> and can be installed with a simple command:</p><p>deno add jsr:@fedify/[email protected]</p><p>Since BotKit uses the Temporal API (which is still evolving in JavaScript), remember to enable it in your deno.json:</p><p>{ "imports": { "@fedify/botkit": "jsr:@fedify/[email protected]" }, "unstable": ["temporal"]}</p><p>With these simple steps, you're ready to create or upgrade your fediverse bot with our latest features.</p><p>Looking Forward</p><p>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.</p><p>For complete docs and more examples, visit our <a href="https://botkit.fedify.dev/" rel="nofollow">docs site</a>.</p><p>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!</p><p>BotKit is powered by <a href="https://fedify.dev/" rel="nofollow">Fedify</a>, a lower-level framework for creating ActivityPub server applications.</p><p><a href="/tags/fedidev/" rel="tag">#fedidev</a> <a href="/tags/emoji_reaction/" rel="tag">#emoji_reaction</a></p>
botkit
<p><a href="/tags/fedify/" rel="tag">#Fedify</a> 1.4.0 has been released, and <a href="/tags/botkit/" rel="tag">#BotKit</a> 0.1.0 will be based on Fedify 1.4.0. BotKit 0.1.0 is also about to be released, so please stay tuned!</p><p><a href="https://hollo.social/@fedify/0194d42d-ee82-7a21-b66e-f88702278099" rel="nofollow" class="ellipsis" title="hollo.social/@fedify/0194d42d-ee82-7a21-b66e-f88702278099"><span class="invisible">https://</span><span class="ellipsis">hollo.social/@fedify/0194d42d-</span><span class="invisible">ee82-7a21-b66e-f88702278099</span></a></p>
<p>🎉 Announcing <a href="https://jsr.io/@fedify/[email protected]" rel="nofollow">BotKit 0.1.0</a>: A new framework for creating ActivityPub bots!</p><p>We're thrilled to announce the initial release of <a href="/tags/botkit/" rel="tag">#BotKit</a>, a <a href="/tags/typescript/" rel="tag">#TypeScript</a> framework that makes creating standalone <a href="/tags/activitypub/" rel="tag">#ActivityPub</a> bots simpler than ever before. With BotKit, you can create a complete fediverse bot in just a single TypeScript file!</p><p>Key features:</p><p>🔋 Standalone bot creation—no need for a Mastodon/Misskey account<br>🧩 Simple, developer-friendly API<br>🚀 Easy deployment on <a href="https://botkit.fedify.dev/deploy/deno-deploy" rel="nofollow">Deno Deploy</a>, <a href="https://botkit.fedify.dev/deploy/docker#deploying-to-fly-io" rel="nofollow">Fly.io</a>, <a href="https://botkit.fedify.dev/deploy/docker#deploying-to-railway" rel="nofollow">Railway</a>, or <a href="https://botkit.fedify.dev/deploy/self-hosting" rel="nofollow">your own server</a><br><img src="https://neodb.social/media/emoji/hollo.social/fedify.png" class="emoji" alt=":fedify:" title=":fedify:"> Powered by <span class="h-card"><a href="https://hollo.social/@fedify" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>fedify</span></a></span> for robust ActivityPub protocol handling</p><p>Getting started is as simple as:</p><p>deno add jsr:<span class="h-card"><a href="https://hollo.social/@fedify" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>fedify</span></a></span>/botkit@^0.1.0</p><p>Here's a quick example of a weather bot:</p><p>const kv = await Deno.openKv();const bot = createBot<void>({ username: "weatherbot", name: "Seoul Weather Bot", summary: text`I post daily weather updates for Seoul!`, kv: new DenoKvStore(kv), queue: new DenoKvMessageQueue(kv),});// Reply to mentionsbot.onMention = async (session, message) => { await message.reply(text`Current temperature in Seoul is 18°C!`);};// Post scheduled updatesconst session = bot.getSession("<a href="https://weather.example.com" rel="nofollow"><span class="invisible">https://</span>weather.example.com</a>");setInterval(async () => { await session.publish( text`Seoul Weather Update 🌡️ Current: 18°C Humidity: 65% Forecast: Clear skies ☀️` );}, 1000 * 60 * 60); // Hourly updates</p><p>While BotKit currently supports <a href="/tags/deno/" rel="tag">#Deno</a>, we're working on bringing Node.js and Bun support in future releases.</p><p>Ready to create your first fediverse bot? Check out our docs at <a href="https://botkit.fedify.dev/" rel="nofollow"><span class="invisible">https://</span>botkit.fedify.dev/</a> to get started! 🚀</p><p><a href="/tags/fedidev/" rel="tag">#fedidev</a></p>
<p>Now we have a dedicated <a href="/tags/matrix/" rel="tag">#Matrix</a> room for <a href="/tags/botkit/" rel="tag">#BotKit</a> (<a href="/tags/botkit-users:matrix.org/" rel="tag">#botkit-users:matrix.org</a>) in the Fedify community (<a href="/tags/fedify:matrix.org/" rel="tag">#fedify:matrix.org</a>), so join us!</p>
<p>We'd like to introduce the <a href="/tags/fedify/" rel="tag">#Fedify</a> project family—a set of related tools that make building <a href="/tags/activitypub/" rel="tag">#ActivityPub</a> applications more accessible:</p><p><span class="h-card"><a href="https://hollo.social/@fedify" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>Fedify</span></a></span> <img src="https://neodb.social/media/emoji/hollo.social/fedify.png" class="emoji" alt=":fedify:" title=":fedify:"></p><p><span class="h-card"><a href="https://hollo.social/@fedify" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>Fedify</span></a></span> (<span class="h-card"><a href="https://hollo.social/@fedify" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>fedify</span></a></span>) is a <a href="/tags/typescript/" rel="tag">#TypeScript</a> library for building federated server applications powered by ActivityPub and other <a href="/tags/fediverse/" rel="tag">#fediverse</a> standards. It provides <a href="https://fedify.dev/manual/vocab" rel="nofollow">type-safe objects for Activity Vocabulary</a>, WebFinger client/server, HTTP Signatures, and more—eliminating boilerplate code so you can focus on your application logic.</p><p><span class="h-card"><a href="https://hollo.social/@hollo" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>Hollo</span></a></span> <img src="https://neodb.social/media/emoji/hollo.social/hollo.png" class="emoji" alt=":hollo:" title=":hollo:"></p><p><span class="h-card"><a href="https://hollo.social/@hollo" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>Hollo</span></a></span> (<span class="h-card"><a href="https://hollo.social/@hollo" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>hollo</span></a></span>) is a single-user microblogging server powered by Fedify. While designed for individual users, it's fully federated through ActivityPub, allowing interaction with users across the fediverse. <a href="/tags/hollo/" rel="tag">#Hollo</a> implements Mastodon-compatible APIs, making it <a href="https://docs.hollo.social/clients/" rel="nofollow">compatible with most Mastodon clients</a> without needing its own web interface.</p><p>Hollo also serves as our testing ground for bleeding-edge Fedify features before they're officially released.</p><p><span class="h-card"><a href="https://hollo.social/@botkit" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>BotKit</span></a></span> <img src="https://neodb.social/media/emoji/hollo.social/botkit.png" class="emoji" alt=":botkit:" title=":botkit:"></p><p><span class="h-card"><a href="https://hollo.social/@botkit" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>BotKit</span></a></span> (<span class="h-card"><a href="https://hollo.social/@botkit" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>botkit</span></a></span>) is our newest family member—a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, <a href="/tags/botkit/" rel="tag">#BotKit</a> creates standalone ActivityPub servers that aren't constrained by platform-specific limitations (like character counts).</p><p>BotKit's API is intentionally simple—you can create a complete bot in a single TypeScript file!</p><p>All three projects are open source and hosted under the <a href="https://github.com/fedify-dev" rel="nofollow">@fedify-dev</a> GitHub organization. While they serve different purposes, they share common goals: making ActivityPub development more accessible and expanding the fediverse ecosystem.</p><p>If you're interested in trying any of these projects or contributing to their development, check out:</p><p>Fedify: <a href="https://fedify.dev/" rel="nofollow"><span class="invisible">https://</span>fedify.dev/</a><br>Hollo: <a href="https://docs.hollo.social/" rel="nofollow"><span class="invisible">https://</span>docs.hollo.social/</a><br>BotKit: <a href="https://botkit.fedify.dev/" rel="nofollow"><span class="invisible">https://</span>botkit.fedify.dev/</a></p><p><a href="/tags/fedidev/" rel="tag">#fedidev</a></p>
<p>I'm currently brainstorming a framework for creating fediverse bots called <a href="/tags/botkit/" rel="tag">#BotKit</a>, based on <a href="/tags/fedify/" rel="tag">#Fedify</a>. It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?</p><p><a href="/tags/fedidev/" rel="tag">#fedidev</a> <a href="/tags/activitypub/" rel="tag">#ActivityPub</a></p>
<p><img src="https://neodb.social/media/emoji/hollo.social/botkit.png" class="emoji" alt=":botkit:" title=":botkit:"> Introducing <a href="/tags/botkit/" rel="tag">#BotKit</a>: A <a href="/tags/typescript/" rel="tag">#TypeScript</a> framework for creating truly standalone <a href="/tags/activitypub/" rel="tag">#ActivityPub</a> bots!</p><p>Unlike traditional Mastodon bots, BotKit lets you build fully independent <a href="/tags/fediverse/" rel="tag">#fediverse</a> bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.</p><p>Currently <a href="/tags/deno/" rel="tag">#Deno</a>-only, with Node.js & Bun support planned. Built on the robust <a href="/tags/fedify/" rel="tag">#Fedify</a> foundation.</p><p><a href="https://bokit.fedify.dev/" rel="nofollow"><span class="invisible">https://</span>bokit.fedify.dev/</a></p>
<p>Trying out <span class="h-card"><a href="https://hollo.social/@hongminhee" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>hongminhee</span></a></span> 's <a href="/tags/botkit/" rel="tag">#BotKit</a>.</p><p>Wow this might actually work 😮 Just roughly 50 lines of code & 3 dependencies 🤯</p>
<p>I guess @iss-location-bot now joins <span class="h-card"><a href="https://fedichatbot.deno.dev/" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>FediChatBot</span></a></span> as potentially the 2nd(?) bot built with <span class="h-card"><a href="https://hollo.social/@hongminhee" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>hongminhee</span></a></span> 's <a href="/tags/botkit/" rel="tag">#BotKit</a> 🍻</p><p>Learn more:<br>- BotKit: <a href="https://botkit.fedify.dev/" rel="nofollow"><span class="invisible">https://</span>botkit.fedify.dev/</a><br>- ISS Location bot repo: <a href="https://github.com/cheeaun/iss-location-bot" rel="nofollow" class="ellipsis" title="github.com/cheeaun/iss-location-bot"><span class="invisible">https://</span><span class="ellipsis">github.com/cheeaun/iss-locatio</span><span class="invisible">n-bot</span></a><br>- Previous thread: <a href="https://mastodon.social/@cheeaun/113826068433133218" rel="nofollow" class="ellipsis" title="mastodon.social/@cheeaun/113826068433133218"><span class="invisible">https://</span><span class="ellipsis">mastodon.social/@cheeaun/11382</span><span class="invisible">6068433133218</span></a></p>
<p><img src="https://neodb.social/media/emoji/hollo.social/botkit.png" class="emoji" alt=":botkit:" title=":botkit:"> Introducing <a href="/tags/botkit/" rel="tag">#BotKit</a>: A <a href="/tags/typescript/" rel="tag">#TypeScript</a> framework for creating truly standalone <a href="/tags/activitypub/" rel="tag">#ActivityPub</a> bots!</p><p>Unlike traditional Mastodon bots, <a href="https://botkit.fedify.dev/" rel="nofollow">BotKit</a> lets you build fully independent <a href="/tags/fediverse/" rel="tag">#fediverse</a> bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.</p><p>Currently <a href="/tags/deno/" rel="tag">#Deno</a>-only, with Node.js & Bun support planned. Built on the robust <span class="h-card"><a href="https://hollo.social/@fedify" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>fedify</span></a></span> foundation.</p><p><a href="https://botkit.fedify.dev/" rel="nofollow"><span class="invisible">https://</span>botkit.fedify.dev/</a></p>
<p>The <a href="/tags/botkit/" rel="tag">#BotKit</a> docs now have <a href="https://botkit.fedify.dev/recipes" rel="nofollow">Recipes</a>! It contains practical examples for common tasks like:</p><p><a href="https://botkit.fedify.dev/recipes#sending-a-direct-message" rel="nofollow">Sending a direct message</a><br><a href="https://botkit.fedify.dev/recipes#following-back" rel="nofollow">Following back</a><br><a href="https://botkit.fedify.dev/recipes#automatically-deleting-old-messages" rel="nofollow">Automatically deleting old messages</a><br><a href="https://botkit.fedify.dev/recipes#scheduled-messages" rel="nofollow">Scheduled messages</a><br><a href="https://botkit.fedify.dev/recipes#automatically-replying-to-mentions" rel="nofollow">Automatically replying to mentions</a><br><a href="https://botkit.fedify.dev/recipes#thread-creation" rel="nofollow">Thread creation</a><br><a href="https://botkit.fedify.dev/recipes#thread-traversal" rel="nofollow">Thread traversal</a></p><p>More recipes are on the way. <a href="https://botkit.fedify.dev/recipes" rel="nofollow">Check it out now.</a></p><p><a href="/tags/activitypub/" rel="tag">#ActivityPub</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <a href="/tags/fedidev/" rel="tag">#fedidev</a> <a href="/tags/botdev/" rel="tag">#botdev</a> <a href="/tags/botkit/" rel="tag">#BotKit</a></p>
<p><a href="/tags/botkit/" rel="tag">#BotKit</a> now allows <a href="https://botkit.fedify.dev/concepts/message#updating-a-message" rel="nofollow">messages to update()</a>.</p>
<p>Exciting update on <a href="/tags/botkit/" rel="tag">#BotKit</a>: we've introduced a new <a href="https://botkit.fedify.dev/concepts/repository" rel="nofollow">Repository</a> abstraction layer that provides cleaner data access. While previously data operations went directly through <a href="https://fedify.dev/manual/kv" rel="nofollow">KvStore</a>, they now go through <a href="https://botkit.fedify.dev/concepts/repository" rel="nofollow">Repository</a>—improving separation of concerns and making the codebase more maintainable. Don't worry though—there are no breaking changes to the public API that BotKit users rely on!</p><p>Key benefits:</p><p>Better abstraction over data sources<br>Cleaner internal architecture<br>Fully backwards compatible</p><p>Check out our docs for the technical details: <a href="https://botkit.fedify.dev/concepts/repository" rel="nofollow" class="ellipsis" title="botkit.fedify.dev/concepts/repository"><span class="invisible">https://</span><span class="ellipsis">botkit.fedify.dev/concepts/rep</span><span class="invisible">ository</span></a>.</p><p><a href="/tags/activitypub/" rel="tag">#ActivityPub</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <a href="/tags/fedidev/" rel="tag">#fedidev</a> <a href="/tags/botkit/" rel="tag">#BotKit</a></p><p><a href="https://hollo.social/@hongminhee/0194a0d4-1d67-7c81-80ba-e7ade212d27a" rel="nofollow" class="ellipsis" title="hollo.social/@hongminhee/0194a0d4-1d67-7c81-80ba-e7ade212d27a"><span class="invisible">https://</span><span class="ellipsis">hollo.social/@hongminhee/0194a</span><span class="invisible">0d4-1d67-7c81-80ba-e7ade212d27a</span></a></p>
<p><a href="/tags/botkit/" rel="tag">#BotKit</a> now comes with a built-in web interface! Your fediverse bots will have profile pages and permalink pages for posts, right out of the box. Check out the screenshot to see how it looks. <img src="https://neodb.social/media/emoji/hollo.social/botkit.png" class="emoji" alt=":botkit:" title=":botkit:"></p>
<p><a href="/tags/botkit/" rel="tag">#BotKit</a>'s web interface now supports theme customization! 🎨 You can set your preferred color theme using the <a href="https://botkit.fedify.dev/concepts/bot#createbotoptions-pages" rel="nofollow">pages.color</a> option in <a href="https://botkit.fedify.dev/concepts/bot#instantiation" rel="nofollow">createBot()</a>. Here are some examples showing the same interface in different colors: "violet", "pumpkin", "azure", and "green" (default).</p><p>const bot = createBot<void>({ // ... other options pages: { color: "violet" // or "pumpkin", "azure", etc. }});</p><p>We support all color themes from Pico CSS—including "amber", "fuchsia", "indigo", "jade", "lime", "pink", "sand", "slate", "yellow", "zinc", and more! Check out <a href="https://picocss.com/docs/colors" rel="nofollow">Pico CSS's Colors docs</a> for the full list of available themes.</p><p>Which color is your favorite? 🤔</p><p><a href="/tags/activitypub/" rel="tag">#ActivityPub</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <a href="/tags/fedidev/" rel="tag">#fedidev</a></p>
Edited 1y ago
<p>📢 Important announcement! <a href="/tags/botkit/" rel="tag">#BotKit</a>'s <a href="/tags/github/" rel="tag">#GitHub</a> repository has moved to a new home! 🏠</p><p>The repository is now located at <a href="https://github.com/fedify-dev/botkit" rel="nofollow">@fedify-dev/botkit</a> (previously <a href="https://github.com/dahlia/botkit" rel="nofollow">@dahlia/botkit</a>). All future development will continue at the new location.</p><p>Don't worry—everything's the same, just a new address! Please update your bookmarks and project references. Thanks for being part of our community! <img src="https://neodb.social/media/emoji/hollo.social/botkit.png" class="emoji" alt=":botkit:" title=":botkit:"></p><p><a href="/tags/fedify/" rel="tag">#Fedify</a> <a href="/tags/activitypub/" rel="tag">#ActivityPub</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <a href="/tags/fedidev/" rel="tag">#fedidev</a></p><p><a href="https://hollo.social/@fedify/0194a851-581d-779c-b777-dc39e753ef14" rel="nofollow" class="ellipsis" title="hollo.social/@fedify/0194a851-581d-779c-b777-dc39e753ef14"><span class="invisible">https://</span><span class="ellipsis">hollo.social/@fedify/0194a851-</span><span class="invisible">581d-779c-b777-dc39e753ef14</span></a></p>
<p>Are you interested in creating bots for the <a href="/tags/fediverse/" rel="tag">#fediverse</a>? Meet <a href="/tags/botkit/" rel="tag">#BotKit</a>, a <a href="/tags/typescript/" rel="tag">#TypeScript</a> framework that makes bot development easier than ever!</p><p>Key Features:</p><p>True Independence</p><p>Create standalone <a href="/tags/activitypub/" rel="tag">#ActivityPub</a> bots<br>No need for a Mastodon or Misskey account<br>Free from platform-specific limitations</p><p>Simple and Intuitive API</p><p>Create a complete bot in a single TypeScript file<br>Intuitive event handlers for mentions, follows, and messages<br>Rich text formatting with Markdown support</p><p>Modern Deployment</p><p>Deploy on Deno Deploy, <a href="http://Fly.io" rel="nofollow">Fly.io</a>, Railway, or any virtual server<br>Minimal dependencies<br>Designed for modern cloud platforms</p><p>Enterprise-Ready Foundation</p><p>Built on Fedify, a rock-solid ActivityPub framework<br>Seamless federation with Mastodon, Misskey, and other platforms<br>Robust compatibility across the fediverse</p><p>Developer Experience</p><p>Full TypeScript support with great IDE integration<br>Comprehensive documentation<br>Built-in testing utilities</p><p>Here's a quick example of how simple it is to create a bot:</p><p>import { createBot, mention, text } from "@fedify/botkit";const bot = createBot<void>({ username: "greetbot", name: "Greet Bot", summary: text`A friendly bot that greets people!`, // ... configuration ...});// Respond to mentionsbot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);};export default bot;</p><p>Getting Started:</p><p>Install <a href="/tags/deno/" rel="tag">#Deno</a><br>Run: deno add jsr:@fedify/botkit@^0.1.0-dev<br>Create your bot with just a few lines of code</p><p>Check out our documentation at <a href="https://botkit.fedify.dev/" rel="nofollow"><span class="invisible">https://</span>botkit.fedify.dev/</a> to learn more!</p><p><a href="/tags/fedidev/" rel="tag">#fedidev</a></p>
<p><a href="/tags/botkit/" rel="tag">#BotKit</a> now supports <a href="/tags/hashtags/" rel="tag">#hashtags</a> in your bot messages!</p><p>You can now add searchable hashtags to your bot's posts using either our dedicated <a href="https://botkit.fedify.dev/concepts/text#hashtags" rel="nofollow">hashtag()</a> function or through <a href="https://botkit.fedify.dev/concepts/text#hashtags-1" rel="nofollow">BotKit's extended Markdown syntax</a>. This makes your bot's content more discoverable across the fediverse and helps engage with broader conversations.</p><p>Whether you're building a news bot, content curator, or community engagement tool, hashtags can help your bot reach the right audience.</p><p>Check out <a href="https://botkit.fedify.dev/concepts/text" rel="nofollow">our docs</a> to learn more about implementing hashtags in your bots!</p><p><a href="/tags/activitypub/" rel="tag">#ActivityPub</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a> <a href="/tags/fedidev/" rel="tag">#fedidev</a> <a href="/tags/botdev/" rel="tag">#botdev</a></p>
<p><a href="/tags/botkit/" rel="tag">#BotKit</a> now allows your bot to <a href="https://botkit.fedify.dev/concepts/message#liking-a-message" rel="nofollow">like or unlike other messages</a>!</p>
<p><span class="h-card"><a href="https://fedichatbot.deno.dev/" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>FediChatBot</span></a></span> I heard that now you may like messages replying to you or mentioning you if these are positive, thanks to <a href="/tags/botkit/" rel="tag">#BotKit</a>'s recent changes (see the attached screenshots too). Is it true?</p><p>(Please don't answer me in Korean, but English.)</p>
<p>The <a href="/tags/botkit/" rel="tag">#BotKit</a> docs now have deployment guides!</p><p><a href="https://botkit.fedify.dev/deploy/store-mq" rel="nofollow">Key–value store and message queue</a><br><a href="https://botkit.fedify.dev/deploy/deno-deploy" rel="nofollow">Deno Deploy</a><br><a href="https://botkit.fedify.dev/deploy/docker" rel="nofollow">Docker</a><br><a href="https://botkit.fedify.dev/deploy/self-hosting" rel="nofollow">Self-hosted deployment</a></p>
<p><a href="https://github.com/fedify-dev/botkit/releases/tag/0.1.1" rel="nofollow">BotKit 0.1.1</a> is out!</p><p>This security update fixes a message visibility bug where direct/followers-only replies to bots were unintentionally forwarded to bot followers. Upgrade recommended. Download at <a href="https://jsr.io/@fedify/[email protected]" rel="nofollow">JSR</a>:</p><p>deno add jsr:@fedify/botkit@^0.1.1</p><p><a href="/tags/botkit/" rel="tag">#BotKit</a> <a href="/tags/activitypub/" rel="tag">#ActivityPub</a> <a href="/tags/fedidev/" rel="tag">#fedidev</a></p>
<p>Sorry, last one, I promise. </p><p>Built another <span class="h-card"><a href="https://hollo.social/@botkit" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>botkit</span></a></span> bot, if you tag <span class="h-card"><a href="https://logos.deno.dev/" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>tmnt</span></a></span> w/ some text it will generate a TMNT logo for you using an API on a <span class="h-card"><a href="https://mastodon.social/@glitchdotcom" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>glitchdotcom</span></a></span> site:<br><a href="https://tmnt-logo.glitch.me/" rel="nofollow"><span class="invisible">https://</span>tmnt-logo.glitch.me/</a>.</p><p><a href="https://xkcd.com/1412/" rel="nofollow">Relevant XKCD</a><br><a href="https://github.com/TomCasavant/tmnt-logo-bot" rel="nofollow">Bot Source Code</a><br><a href="https://github.com/TomCasavant/tmnt-logo-generator" rel="nofollow">Glitch Logo Generator Source Code</a></p>
<p>We're pleased to announce that <a href="/tags/node/" rel="tag">#Node</a>.js support has been merged and will be available in <a href="/tags/botkit/" rel="tag">#BotKit</a> 0.3.0.</p><p>Now you can build your <a href="/tags/activitypub/" rel="tag">#ActivityPub</a> bots with both <a href="/tags/deno/" rel="tag">#Deno</a> and Node.js, giving you more flexibility in choosing your preferred runtime environment.</p><p>Stay tuned for BotKit 0.3.0!</p><p><a href="/tags/fedidev/" rel="tag">#fedidev</a> <a href="/tags/fediverse/" rel="tag">#fediverse</a></p>
<p><a href="/tags/botkit/" rel="tag">#BotKit</a> is a <a href="/tags/typescript/" rel="tag">#TypeScript</a> framework for building <a href="/tags/activitypub/" rel="tag">#ActivityPub</a> bots. The difference from typical Mastodon/Misskey bots? Your bot runs as its own independent server—no platform account needed.</p><p>This means no character limits, no rate limiting headaches, no API restrictions.</p><p>bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`);};</p><p>The ActivityPub stuff (federation, HTTP Signatures, delivery queues) is handled by <a href="/tags/fedify/" rel="tag">#Fedify</a> under the hood. You just write your bot logic.</p><p>Works with both <a href="/tags/deno/" rel="tag">#Deno</a> and <a href="/tags/node/" rel="tag">#Node</a>.js.</p><p><a href="https://botkit.fedify.dev/" rel="nofollow"><span class="invisible">https://</span>botkit.fedify.dev/</a></p>
