What is Hackers' Pub?

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

I came across information that the original quote in Futurism which said 99% electricity use was incorrect.
futurism.com/google-ceo-congre

The transcript says “3% to 9%”.
techpolicy.press/transcript-us

The larger point remains, though. AI and data center energy and water use is surging, and we are only at the beginning of this whole thing. For years, data centers energy use stayed below 1% and we were told not to worry. In countries like Ireland, data center energy use is now already over 20%

0
0
0

「陰謀論」「カルト」「無知」「トンデモ」を通り越しとる…何なんだこりゃ………
語彙が見つからない😨

黒猫ドラネコ氏のX x.com/kurodoraneko15/status/19
“どうなる財務省解体デモ。どんどん「濃く」なっていく珍ブーム

書きました。現地がどんな様子なのか、何が叫ばれているのか知っていただけたらと思います。ぜひご覧ください”

※「自民党解体デモ」だけは必要かと思うが笑、
この面々と、この主催者(誰?)と、こんな主旨(主旨あんのか?)では、絶対にやってはいかん‼️

そそ「インフルエンサー」たちは煽っといて責任取らない😱

“数々のアレなデモと決定的に違ったのは、Youtuberヒカルらの影響力だ。
彼らの発信で、日頃「利権がうんちゃら」「グローバリズムがどうたら」と言っているわけでもない若者たちまで「面白そうだから行ってみよう」となってしまった。
数十万規模のフォロワーを抱えるなどの大小さまざまな動画配信者らが再生数稼ぎでどんどん乗ってきた。”

→【解説】「財務省解体デモ」のすべて。有志もカルトもごった煮でインフルエンサーが煽った珍ブーム | 黒猫ドラネコ【トンデモ観察記】

kurodoraneko15.theletter.jp/po

0

If you are using Cloudflared / Cloudflare Tunnels to expose some of your services today - have a look at Pangolin. I’m blown away by the ease of use and the fact that it is yours - not a ginormous entity with all keys to your kingdom.

github.com/fosrl/pangolin

0
1
0
0
6
0

BotKit 0.2.0 릴리스

BotKit 0.2.0 버전이 릴리스되었습니다! BotKit을 처음 접하시는 분들을 위해 간단히 소개하자면, BotKit은 TypeScript로 개발된 독립형 봇 프레임워크입니다. Mastodon, Misskey 등 다양한 () 플랫폼과 상호작용할 수 있으며, 기존 플랫폼의 제약에서 벗어나 자유롭게 봇을 만들 수 있습니다.

이번 릴리스는 연합우주 봇 개발을 더 쉽고 강력하게 만들기 위한 여정에서 중요한 발걸음입니다. 커뮤니티에서 요청해 왔던 여러 기능들을 새롭게 선보입니다.

더 나은 봇 상호작용을 위한 여정

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를 통해 다음과 같은 기능을 사용할 수 있습니다.

반응을 통한 소통

소통은 단순히 메시지를 게시하는 것만이 아닙니다. 다른 사람의 메시지에 반응하는 것도 중요합니다. 새로운 반응 시스템은 봇과 팔로워 사이에 자연스러운 상호작용 지점을 만들어 줍니다.

// 표준 유니코드 에모지로 메시지에 반응하기
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()를 사용하여 유니코드 에모지로 메시지에 반응하기
  • 정의한 커스텀 에모지로 반응하기
  • Bot.onReactBot.onUnreact 핸들러로 반응 이벤트 처리하기

인용을 통한 대화

토론에서는 종종 다른 사람이 말한 내용을 참조해야 할 때가 있습니다. 새로운 기능은 더 응집력 있는 대화 스레드를 만들어 줍니다.

// 봇의 게시물에서 다른 메시지 인용하기
await session.publish(
  text`이 흥미로운 관점에 대한 답변입니다...`,
  { quoteTarget: originalMessage }
);

// 사용자가 봇의 메시지를 인용할 때 처리하기
bot.onQuote = async (session, quoteMessage) => {
  await session.publish(
    text`${quoteMessage.actor}님, 제 생각을 공유해 주셔서 감사합니다!`,
    { visibility: "direct" }
  );
};

인용 기능을 통해 봇은 다음과 같은 작업을 수행할 수 있습니다.

시각적 개선

소통은 시각적인 요소도 중요하기 때문에 봇의 표현 방식을 개선했습니다.

  • 웹 인터페이스에서 이미지 첨부파일이 제대로 표시됩니다
  • 봇의 콘텐츠가 더 보기 좋아지고 풍부한 경험을 제공합니다

내부 개선: 향상된 액티비티 전파

연합우주에서 액티비티가 전파되는 방식도 개선했습니다.

  • 답글, 공유, 업데이트, 삭제의 더 정확한 전파
  • 원본 메시지 작성자에게 액티비티가 제대로 전송됩니다

이러한 개선 사항은 다양한 연합우주 플랫폼에서 봇의 상호작용이 일관되고 안정적으로 이루어지도록 보장합니다.

BotKit 0.2.0으로 첫 걸음 떼기

이러한 새로운 기능을 경험해 보고 싶으신가요? BotKit 0.2.0은 JSR에서 받을 수 있으며 간단한 명령어로 설치할 수 있습니다.

deno add jsr:@fedify/botkit@0.2.0

BotKit은 Temporal API(JavaScript에서 아직 시범적인 기능)를 사용하므로 deno.json에서 이를 활성화해야 합니다.

{
  "imports": {
    "@fedify/botkit": "jsr:@fedify/botkit@0.2.0"
  },
  "unstable": ["temporal"]
}

이 간단한 단계를 통해 최신 기능으로 연합우주 봇을 만들거나 업그레이드할 준비가 완료되었습니다.

앞으로의 전망

BotKit 0.2.0은 연합우주 봇 개발을 접근하기 쉽고, 강력하며, 즐겁게 만들기 위한 우리의 지속적인 노력을 보여줍니다. 이러한 새로운 기능들이 여러분의 봇이 연합우주 커뮤니티에서 더 매력적이고 상호작용이 풍부한 구성원이 되는 데 도움이 될 것이라고 믿습니다.

전체 문서와 더 많은 예제는 저희 문서 사이트에서 확인하실 수 있습니다.

피드백, 기능 요청, 코드 기여를 통해 이번 릴리스에 도움을 주신 모든 분들께 감사드립니다. BotKit 커뮤니티는 계속 성장하고 있으며, 여러분이 만들어낼 작품들을 기대합니다!


BotKit은 ActivityPub 서버 애플리케이션을 만들기 위한 하위 레벨 프레임워크인 Fedify의 지원을 받습니다.

BotKit 0.2.0のリリース

BotKit 0.2.0をリリースしました!BotKitを初めて知る方のために簡単に説明すると、BotKitはTypeScriptで開発されたスタンドアロンのActivityPubボットフレームワークです。Mastodon、Misskeyなどさまざまなフェディバース()のプラットフォームと連携でき、既存プラットフォームの制約なしに自由にボットを作成できます。

このリリースは、フェディバースにおけるボット開発をより簡単で強力にするための旅の重要な一歩であり、コミュニティから要望のあった機能を多数導入しています。

より良いボットインタラクションへの旅

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では、次のことが可能になりました。

リアクションによるコミュニケーション

コミュニケーションは単にメッセージを投稿するだけではありません。他の人のメッセージに反応することも重要です。新しいリアクションシステムは、ボットとフォロワーの間に自然な交流ポイントを作り出します。

// 標準の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.onReactBot.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/botkit@0.2.0

BotKitはTemporal API(JavaScriptではまだ試験的な機能)を使用するため、deno.jsonでこれを有効にする必要があります。

{
  "imports": {
    "@fedify/botkit": "jsr:@fedify/botkit@0.2.0"
  },
  "unstable": ["temporal"]
}

これらの簡単なステップで、最新機能を使ってフェディバースボットを作成またはアップグレードする準備が整いました。

今後の展望

0.2.0は、フェディバースボット開発をアクセスしやすく、強力かつ楽しいものにするための私たちの継続的な取り組みを示しています。これらの新機能が、皆さんのボットをフェディバースコミュニティでより魅力的でインタラクティブなメンバーにするのに役立つと信じています。

完全なドキュメントと詳細な例については、私たちのドキュメントサイトをご覧ください。

フィードバック、機能リクエスト、コード貢献を通じてこのリリースに貢献してくださったすべての方々に感謝します。BotKitコミュニティは成長を続けており、皆さんが作成するものを楽しみにしています!


BotKitは、ActivityPubサーバーアプリケーションを作成するための低レベルフレームワークFedifyによって支えられています。

3
0
0

: enseignant spécialisé en Gironde depuis plus de 20 ans, j’ai également vécu 3 ans à Mayotte. Je fais de la photographie sans rien y connaître, mais certains trouvent mes images sensibles. J’ai longtemps joué du saxophone, et j’envisage de m’y remettre un jour. J’ai pas tout dit, ce serait long. Mes silences ressemblent aux vôtres.

0
0
1

참고로 팔레스타인 사람들은 팔레스타인 콜라를 먹는다고 하네요 그치!!!! 콜라 끊기 힘든거 나뿐만이 아니구나!!! 8ㅁ8 함 팔레스타인 콜라는 미국에서 안 팔지만 노브랜드나 코카콜라 브랜드 외의 콜라를 찾아서 마시고 있습니다(아 긑쎄 콜라를 끊으라고(힘들다고....

RE: https://bsky.app/profile/did:plc:mh4iq7mjiqqredsomhaqxcan/post/3lncktuigl22d

1
0
0
0
0
0
0
0
0
0
0
0
0

So knowing what we knew, we went out to ask people who were adults at the time of the deed. We asked them where they were living and which newspaper they had back then. After establishing that, we started asking about the murder.

And again we got the famous "I didn't know" again and again. We had copies of the newspaper from the incident and confronted them with it. They stuck to it. Nobody knew anything at all. The thing happened, became top news and nobody ever even heard of it.

They became angry at us for asking. Sometimes we were chased away. This was because we clearly noticed that they were lyiing and being teenager, we were not good at hiding the fact that we knew.

4/5

The frustrating thing about history is: When you study it, you see it all happening again. When one day the grandchildren of the young adults in the U.S. today will ask "Why didn't you say something when they deported innocent people to camps in El Salvador?" I can already tell their answer today "I didn't know."

5/5

Comic of an old man telling a young man "Those Who Do Not Learn History Are Doomed To Repeat It. Yet those who do study history are doomed to stand by helplessly while everyone else repeats it."
0
0
0

This didn't happen in secret. We went to the archive of the local newspaper and got articles about the event from back then. And it was all in there. The newspaper (which still exists today) stumbled over his own feet in order to justify the lynching. I couldn't believe what I was reading: "We strongly condemn any lynching but this case was clearly justified". The newspaper argued against any prosecution of the lynch mob. They said that "gesundes Volksempfinden" (healthy popular sentiment) made the event inevitable.

It was a huge story back then that dominated the news for quite so time. It was not hidden on the second page, but the top news of the month. There were quotes from local Nazi politicians who claimed to be proud of the deed. All was there in broad daylight. The SS wasn't even attempting to hide it.

3/5

So knowing what we knew, we went out to ask people who were adults at the time of the deed. We asked them where they were living and which newspaper they had back then. After establishing that, we started asking about the murder.

And again we got the famous "I didn't know" again and again. We had copies of the newspaper from the incident and confronted them with it. They stuck to it. Nobody knew anything at all. The thing happened, became top news and nobody ever even heard of it.

They became angry at us for asking. Sometimes we were chased away. This was because we clearly noticed that they were lyiing and being teenager, we were not good at hiding the fact that we knew.

4/5

0
0
0

We started out in school by analysing the murder of Friedrich Schumm on April 1st 1933. He was a jewish lawyer born in and where his parents still lived. On the day of a visit at home due to the marriage of his little sister, the SS was enforcing a boycott of the shop his father was operating.

He wanted to the enter the shop of his father but was hindered by the SS picket. A short fight ensued, a shot rang out and a man from the SS was seriously injured. Schumm fled, presented himself at a police station and was arrested.

Later that day, a lynch mob compromised of members of the SA/SS formed. The ransacked the shop of his father and with the help of Nazi politicians they entered the prison and his cell. They shot him 30 times.

2/5

Memorial stone for Friedrich Schumm

This didn't happen in secret. We went to the archive of the local newspaper and got articles about the event from back then. And it was all in there. The newspaper (which still exists today) stumbled over his own feet in order to justify the lynching. I couldn't believe what I was reading: "We strongly condemn any lynching but this case was clearly justified". The newspaper argued against any prosecution of the lynch mob. They said that "gesundes Volksempfinden" (healthy popular sentiment) made the event inevitable.

It was a huge story back then that dominated the news for quite so time. It was not hidden on the second page, but the top news of the month. There were quotes from local Nazi politicians who claimed to be proud of the deed. All was there in broad daylight. The SS wasn't even attempting to hide it.

3/5

0

I didn't know

When I learned about the holocaust as teenager in Germany, many people from the Nazi era were still alive and lived all around me. Being the curious person I always was, I asked them about what happened and their role in it.

"I didn't know" was the boilerplate answer. And as they were relatives and friends, I believed them at first.

Then in 1981 we got a new teacher for history and he exposed the lie. Or more precise: he got us exposing those lies.

1/5

We started out in school by analysing the murder of Friedrich Schumm on April 1st 1933. He was a jewish lawyer born in and where his parents still lived. On the day of a visit at home due to the marriage of his little sister, the SS was enforcing a boycott of the shop his father was operating.

He wanted to the enter the shop of his father but was hindered by the SS picket. A short fight ensued, a shot rang out and a man from the SS was seriously injured. Schumm fled, presented himself at a police station and was arrested.

Later that day, a lynch mob compromised of members of the SA/SS formed. The ransacked the shop of his father and with the help of Nazi politicians they entered the prison and his cell. They shot him 30 times.

2/5

Memorial stone for Friedrich Schumm
0

I didn't know

When I learned about the holocaust as teenager in Germany, many people from the Nazi era were still alive and lived all around me. Being the curious person I always was, I asked them about what happened and their role in it.

"I didn't know" was the boilerplate answer. And as they were relatives and friends, I believed them at first.

Then in 1981 we got a new teacher for history and he exposed the lie. Or more precise: he got us exposing those lies.

1/5

0
0
1
1
0
0
0
0
0

讀:

> 車上的本地嚮導說,其實本地的情況也沒有我們想得那麼誇張,倒塌的房子估計最多佔全市的5%,然而,所有外觀看起來完好的房子,裏面都會有裂縫。

>我在拍攝時,會感到緬甸大部分成年人對於鏡頭有着強烈的抗拒,即便在很遠的地方看到有人在拍攝,不少人也會把頭趕緊扭到一邊,或者趕緊放下手中的東西捂着臉。軍政府一直嚴格把控媒體和網絡,不希望外界了解這個國家發生着什麼,上鏡採訪對本地人來說是一種極為危險的行為。

theinitium.com/visual/images/2

0

Ex-Millionär warnt: „Überreichtum ist eine der größten Gefahren unserer Zeit“

taz.de/Ex-Millionaer-warnt/!60

> Sebastian Klein war mal mehrfacher Millionär. Heute engagiert er sich gegen Superreiche. Über gierige Start-Up-Jungs, Nazigeld und die Leistungslüge.

0
0
0

There are so many (decades of) excellent demos!

The "blending adjacent frames together for YouTube is definitely cheating" reminds me of the quip from a Razor1911 prod, "Insert No Coins" (https://www.pouet.net/prod.php?which=55991):

"Our intro runs better in realtime than on YouTube"

Some relatively recent (within the last decade or so) favs of mine:

Neonsky by Ephidrena (Amiga, AGA): https://www.pouet.net/prod.php?which=67789

subside by Unique (Amiga, AGA) I dig mostly because it takes a sample, "Computers aren't the thing; they're the thing that gets us to the thing." from Halt & Catch Fire (which I mostly hated as a show) and puts it to good use: https://www.pouet.net/prod.php?which=67140

"another one"/"Number One" by CNCD & Fairlight (this was ostensibly made in @notchvfx@graphics.social [as were some other more recent CNCD & FLT prods like ziphead maybe?] It inspired me to get a laptop with an RTX1080 to take a class back in 2019 which was a fun couple of days! Now, if only I could figure out how to do that sort of stuff for income instead of a happy money sink? I sold that laptop in 2020 though, so I would need something newer [hopefully lighter?] with a decent [presumably now better?] GPU for such fun. ;) : https://www.pouet.net/prod.php?which=77399

CC: @cwebber@social.coopChristine Lemmer-Webber
0
0
0
0
0
0

바이에른 뮌헨은 센터백들이 심각한 부상으로 이탈한 상태에서 아픈 몸 갈아가며 뛰어주는 김민재 선수에게, 영리하고 활동량 많은, 맨시티의 로드리 같은 월클 수미도 없는 상태에서 극도로 라인 끌어올린 전술의 부담을 지운 상태임. 상시 역적 후보 자리라고 보면 됨.

누구도 잘할 수 없는 상황에서 내부에서조차 판단력 안 좋네, 못하네, 팔아야 하네, 같은 소리 하는 거 보면 명성과 인기에 비해 운영 수준은 떨어지는 듯. 감독은 상황을 이해하고 있는 거 같은데 정작 윗자리의 바바리안 할배들이 여엉... 이러니 우승을 못하지, 싶음.

0
0
0

BotKit 0.2.0 Released

We're pleased to announce the release of BotKit 0.2.0! For those new to our project, is a framework for creating standalone bots that can interact with Mastodon, Misskey, and other 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 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:

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:

Conversations Through Quotes

Discussions often involve referencing what others have said. Our new 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:

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.

BotKit 0.2.0 릴리스

BotKit 0.2.0 버전이 릴리스되었습니다! BotKit을 처음 접하시는 분들을 위해 간단히 소개하자면, BotKit은 TypeScript로 개발된 독립형 봇 프레임워크입니다. Mastodon, Misskey 등 다양한 () 플랫폼과 상호작용할 수 있으며, 기존 플랫폼의 제약에서 벗어나 자유롭게 봇을 만들 수 있습니다.

이번 릴리스는 연합우주 봇 개발을 더 쉽고 강력하게 만들기 위한 여정에서 중요한 발걸음입니다. 커뮤니티에서 요청해 왔던 여러 기능들을 새롭게 선보입니다.

더 나은 봇 상호작용을 위한 여정

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를 통해 다음과 같은 기능을 사용할 수 있습니다.

반응을 통한 소통

소통은 단순히 메시지를 게시하는 것만이 아닙니다. 다른 사람의 메시지에 반응하는 것도 중요합니다. 새로운 반응 시스템은 봇과 팔로워 사이에 자연스러운 상호작용 지점을 만들어 줍니다.

// 표준 유니코드 에모지로 메시지에 반응하기
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()를 사용하여 유니코드 에모지로 메시지에 반응하기
  • 정의한 커스텀 에모지로 반응하기
  • Bot.onReactBot.onUnreact 핸들러로 반응 이벤트 처리하기

인용을 통한 대화

토론에서는 종종 다른 사람이 말한 내용을 참조해야 할 때가 있습니다. 새로운 기능은 더 응집력 있는 대화 스레드를 만들어 줍니다.

// 봇의 게시물에서 다른 메시지 인용하기
await session.publish(
  text`이 흥미로운 관점에 대한 답변입니다...`,
  { quoteTarget: originalMessage }
);

// 사용자가 봇의 메시지를 인용할 때 처리하기
bot.onQuote = async (session, quoteMessage) => {
  await session.publish(
    text`${quoteMessage.actor}님, 제 생각을 공유해 주셔서 감사합니다!`,
    { visibility: "direct" }
  );
};

인용 기능을 통해 봇은 다음과 같은 작업을 수행할 수 있습니다.

시각적 개선

소통은 시각적인 요소도 중요하기 때문에 봇의 표현 방식을 개선했습니다.

  • 웹 인터페이스에서 이미지 첨부파일이 제대로 표시됩니다
  • 봇의 콘텐츠가 더 보기 좋아지고 풍부한 경험을 제공합니다

내부 개선: 향상된 액티비티 전파

연합우주에서 액티비티가 전파되는 방식도 개선했습니다.

  • 답글, 공유, 업데이트, 삭제의 더 정확한 전파
  • 원본 메시지 작성자에게 액티비티가 제대로 전송됩니다

이러한 개선 사항은 다양한 연합우주 플랫폼에서 봇의 상호작용이 일관되고 안정적으로 이루어지도록 보장합니다.

BotKit 0.2.0으로 첫 걸음 떼기

이러한 새로운 기능을 경험해 보고 싶으신가요? BotKit 0.2.0은 JSR에서 받을 수 있으며 간단한 명령어로 설치할 수 있습니다.

deno add jsr:@fedify/botkit@0.2.0

BotKit은 Temporal API(JavaScript에서 아직 시범적인 기능)를 사용하므로 deno.json에서 이를 활성화해야 합니다.

{
  "imports": {
    "@fedify/botkit": "jsr:@fedify/botkit@0.2.0"
  },
  "unstable": ["temporal"]
}

이 간단한 단계를 통해 최신 기능으로 연합우주 봇을 만들거나 업그레이드할 준비가 완료되었습니다.

앞으로의 전망

BotKit 0.2.0은 연합우주 봇 개발을 접근하기 쉽고, 강력하며, 즐겁게 만들기 위한 우리의 지속적인 노력을 보여줍니다. 이러한 새로운 기능들이 여러분의 봇이 연합우주 커뮤니티에서 더 매력적이고 상호작용이 풍부한 구성원이 되는 데 도움이 될 것이라고 믿습니다.

전체 문서와 더 많은 예제는 저희 문서 사이트에서 확인하실 수 있습니다.

피드백, 기능 요청, 코드 기여를 통해 이번 릴리스에 도움을 주신 모든 분들께 감사드립니다. BotKit 커뮤니티는 계속 성장하고 있으며, 여러분이 만들어낼 작품들을 기대합니다!


BotKit은 ActivityPub 서버 애플리케이션을 만들기 위한 하위 레벨 프레임워크인 Fedify의 지원을 받습니다.

0

【速報】「私は納得できないし残念」兵庫県知事選巡りSNSで“不適切投稿”の姫路市議が「議員続投」を表明「何をもっての辞職勧告なのかわからない」(MBSニュース)
news.yahoo.co.jp/articles/ae3b

斎藤支持者だけに斎藤と同じようなこと言う。言い張ったもの勝ちという恥知らずな風潮がまかり通っているのは、知事がそうなんだから、これからもっとそうなるだろう(その前に安倍という恥知らずがいた国だし)。

0
0