“If you have good friends, no matter how much life is sucking , they can make you laugh.” ~ P. C. Cast
quote
“The mind can go in a thousand directions, but on this beautiful path, I walk in peace. With each step, the wind blows. With each step, a flower blooms.” ~ Thich Nhat Hanh
"Life is a hard battle anyway. If we laugh and sing a little as we fight the good fight of freedom, it makes it all go easier. I will not allow my life's light to be determined by the darkness around me." ~ Sojourner Truth
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 botconst 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 messagesawait 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 text tagged template with Fedify Emoji objects
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 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" } );};
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.onReact and Bot.onUnreact handlers
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 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" } );};
With quote support, your bot can:
Quote messages with quoteTarget option
Access quoted messages via Message.quoteTarget
Handle quote events with the new Bot.onQuote event 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/botkit@0.2.0
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/botkit@0.2.0" }, "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.
“Where justice is denied, where poverty is enforced, where ignorance prevails, and where any one class is made to feel that society is an organized conspiracy to oppress, rob and degrade them, neither persons nor property will be safe.” ~ Frederick Douglass
"Privacy is not for sale, and human rights should not be compromised out of fear or greed." ~ Pavel Durov
“When adversity strikes, you have two choices: Let the adversity define, destroy, or strengthen you. Your reaction is what will determine your destiny.” ~ Serena Williams
“You don’t have to be positive all the time. It’s perfectly okay to feel sad, angry, annoyed, frustrated, scared and anxious. Having feelings doesn’t make you a negative person. It makes you human.” ~ Lori Deschene
"Gratitude unlocks the fullness of life. It turns what we have into enough, and more. It turns denial into acceptance, chaos to order, confusion to clarity. It can turn a meal into a feast, a house into a home, a stranger into a friend." ~ Melody Beattie
"也许你知道,巫师是第一次诞生的人。我猜我们都曾有过这种美好的经历,我们都曾有机会使用魔法。但对我们大部分人来说,这个机会出现在历史长河无聊的初始时期,我们把我们最好的咒语都浪费在了蛇颈龙或是原生质,又或是手持火剑的天使身上。它们当然都懂魔法,所以对我们的咒语不屑一顾。如今,巫师是很少见的,但可能没有你想的那么少见。他们什么都不记得,于是什么都不懂,也不会感到无聊。所有事他们都要从头学起,除了魔法,魔法可以说是唯一真正意义上的原罪。在有魔法的人看来,只有魔法是寻常事物,而其他一切都是未知的、没被想到过的,于是也不会被鄙视。魔法人士总是很显眼——他们在人群中太过显眼,以至于我们这些老灵魂几乎没法理解他们。他们完全不懂得为人处世的微妙之处,而且,尽管他们是新灵魂,却丝毫不现代。你可以愤世嫉俗地告诉他们,只有今天是真实的,除了前天,再没有什么比昨天更不值得一提的了。他们会赞叹你的聪明,但下一刻你就会发现一个女巫为丁尼生的诗歌落泪,一个男巫对埃德温·兰西尔爵士的奇特想象力报以微笑。你根本没法把魔法人士和普通人类混起来。你我都经过了历史上万千生命的历程,最终达到了一种太过精微的卓越。在我们的时代——在我们历史的大多数时候——我们已经膜拜过任何能想象的到的东西,现在我们只能去膜拜那些想象不到的东西了。我们把我们的偶像倒立起来,因为这样做很新潮,而且我们觉得我们更喜欢他们头脚颠倒的造型。我们不停地说话,眼上蒙着手绢,踉踉跄跄地在永恒中前行。如果我们幸运的话,在二十几次人生中有那么一两次,遮蔽我们眼睛的手绢滑落了,我们挣扎着睁开一只眼,便看到像大树一样的神行走在我们身边。这可了不得了!这一瞥就足够我们谈论两三辈子!女巫和男巫不被任何观点遮蔽。他们只是四处看看,并被他们所见之物震惊和吸引。"
— Stella Benson: 独居, pp. 23-25
@reading #reading #quote #在读引用 #bookstodon #StellaBenson #LivingAlone
"All respect for the office of the presidency aside, I assumed that the obvious and unadulterated decline of freedom and constitutional sovereignty, not to mention the efforts to curb the power of judicial review, spoke for itself." ~ Ruth Bader Ginsburg
"Much protective self-criticism stems from growing up around people who wouldn't or couldn't love you, and it's likely they still can't or won't. In general, however, the more you let go of the tedious delusion of your own unattractiveness, the easier it will be for others to connect with you, and the more accepted you'll feel." ~ Martha Beck
"No dictator can last forever. History shows that in the end, people around the dictator bring about change. Of course, a lot of high-ranking officials don't want change because they want to keep power. But there are other good people who want change. I believe they are waiting for the chance." ~ Lee Hyeon-seo
Fela, Music & Revolution
https://amf.didiermary.fr/qotd-fela-kuti-music-revolution/
In Africa, music cannot be for enjoyment.
Music has to be for revolution.
Fela Kuti
"Be soft. Do not let the world make you hard. Do not let pain make you hate. Do not let the bitterness steal your sweetness." ~ Khalil Gibran
“I am no longer accepting the things I cannot change. I am changing the things I cannot accept.” ~ Angela Davis
“Those we love and lose are always connected by heartstrings into infinity." ~ Terri Guillemets
“Democracy is not just the right to vote; it is the right to live in dignity.” ~ Naomi Klein
"[...] until the basic human rights are equally guaranteed to all without regard to race, there is war. And until that day, the dream of lasting peace, world citizenship, rule of international morality, will remain but a fleeting illusion to be pursued, but never attained... now everywhere is war.”
- Haile Selassie (1963)
Bob Marley - WAR (live -1979)
https://www.youtube.com/watch?v=loFDn94oZJ0
"Aging is not lost youth but a new stage of opportunity and strength." ~ Betty Friedan
”You may shoot me with your words, you may cut me with your eyes, you may kill me with your hatefulness, but still, like air, I’ll rise.” ~ Maya Angelou
"The mother's battle for her child with sickness, with poverty, with war, with all the forces of exploitation and callousness that cheapen human life needs to become a common human battle, waged in love and in the passion for survival." ~ Adrienne Rich
"Like music and art, love of nature is a common language that can transcend political or social boundaries." ~ Jimmy Carter