2TBの雑文置き場

ブログというより説明書置き場というか

ウサちゃんロボ 簡易説明書など

概要

ここでいうウサちゃんロボ (以下、Usa_botと表記)は、im@stodonを拠点として活動するbotプログラムです。 Mastodon(特に小~中規模のそれ)における、「閉じたコミュニティで発生した用語が新規さんにわかりにくい問題」の解決を当初の目的とし、 現時点では簡易的な用語データベースとしての役割を重点に開発しています。

特徴

  • Mastodonそのものをインターフェイスとした対話的プログラム
  • 簡易なコマンドでキーワードを追加したり呼び出したり出来る
  • 用語不足や「一部界隈でだけ有名なキーワード」にも対応するため、ニコニコ大百科と勝手に連動

使い方

反応できる発言のパターン

  • Usa_botは、自身に届く発言を「スペース区切り文章」として認識します。以下の用例にて、区切りに見えるところは全てスペースです。
    • 半角スペースを推奨しますが、全角スペースでも対応します。
  • コマンドキーワードを使った文は、コマンドキーワード以降を引数として認識します。
  • 特別な表記がない限り、Usa_botに届く方法であれば発言の公開レベルは問いません。
    • ただし、発言に対しての返信は社内資料(未収載/Unlisted)で行われるため、利用した事実そのものを外部に対して完全に隠すことはできません。

文字列の扱い

キーワードについて

パターンに従って受け取ったキーワードについて、以下のように解釈あるいは変換されてから利用されます。

  • 半角カナは全角に変換されます。
  • 全角英数は半角に変換されます。
  • 先頭に#がある場合削除されます。
    • 特定のハッシュタグについて調べたい場合などに反応モレを防ぐためです。
  • 末尾に「#とは」がある場合削除されます。
    • とは検索時、スペースを開け忘れた場合に対する対策です。
  • 検索時、英字の大文字小文字は同一視されます。
本文について

出力時に以下のように変換されます。

  • @(半角)を@(全角)に変換します。

不用意にメンションが飛ぶのを防ぐための措置です。

調べる

LTLにて(とは検索)

im@stodon内であれば、公開資料(公開/Public)または社内資料(未収載/Unlisted)として次のような形式の発言をすると反応します。(とは検索)

(用語) #とは

例えば次のようになります。

im@stodon #とは

これに対し、Usa_botは後述する[sfind]コマンドを行い、社内資料(未収載/Unlisted)として返します。

Usa_botの見ているエンドポイントの関係上、「とは検索」はim@stodonユーザーのみが使用できます。

補足

Usa_botは、現時点では「#とは のあるTootを見つけた時、最初のスペースまでの文字列を単語として認識」します。つまり、

安部菜々 かわいい #とは

のように、スペースが2個以上ある文面で投稿された場合は最初の単語、この場合は「安部菜々」だけを認識しキーワードとして扱います。

リプライで(リプライ検索)

Usa_botに対して、次のようなリプライをすることでも検索することができます。

@Usa_bot (用語) #とは

又は

@Usa_bot@imastodon.net (用語) #とは

この場合、「#とは」は必要ありません(将来的に変更される場合があります)が必要です(20170530より)。「とは検索」と同様に、結果がリプライで社内資料(未収載/Unlisted)として届きます。

理論上は、im@stodonインスタンスが見えるインスタンスからであれば利用できるはずですが、手持ちのアカウントからうまく動いていないのと、 (おそらく)im@stodonからブロックされている/をブロックしているインスタンスからは利用できないと思われます(検証できていません)。

Mastodon実装に対する当方の勘違いにより、現在この形式でのリプライ検索は動作していません(20170530時点)。なお、当方実装の都合により、Mastodon側の実装に変更がない限りこの形式の検索は復活しない予定です。緩和策として、[s]コマンドを利用することができます(後述、im@stodonユーザーのみ)。

コマンド

Usa_botには、リプライ経由で動作するコマンドが幾つか設定されています。基本的には、これらコマンドは次のような構文で動作します。

@Usa_bot [コマンド] (パラメータ1) (パラメータ2) ...

パラメータの数はコマンドによって異なり、通常必要とされる数のパラメータ以降は単に無視されます。

コマンドを実行できるのはim@stodonインスタンスのユーザーのみです。

単語検索([s])

単語を検索するコマンドです。

@Usa_bot [s] (キーワード)

Usa_bot自身に登録されているキーワードに完全一致するものがあれば、その解説文を返します。見つからない場合、ニコニコ大百科で完全一致するキーワードがあればそのURLを返します。

いずれも見つからない場合、「見つかりません」といったメッセージを返します(以前から変更されました)。

全文検索([find])

キーワードの一部、または説明文の一部に一致するキーワードを探すコマンドです。[s]とは以下の点が異なります。

  • 完全に一致しなくても、部分一致していれば結果に現れます。
  • 説明文も検索対象になります。
  • 説明文自体は返りません。代わりに、本文が見られるURLを返します。
  • 検索結果が多岐にわたりすぎる場合、後半の結果は省略されます。

    @Usa_bot [find] (キーワード)

例えば次のようにすると、

@Usa_bot [find] 安部菜々

次のように返ります。(文章記述時点)

@(ユーザーID)

【安部菜々】について、以下の関連するかもしれないキーワードがあります。

安部菜々 https://imastodon.net/@twoterabytes/1081334
ウサちゃんロボ https://imastodon.net/@twoterabytes/1240903

総合検索([sfind])

総合的な検索を行います。現在、とは検索をするとこのコマンドが実行されます。

  1. まずUsa_botに登録されているキーワードから完全一致するものを探し、見つかればその本文を返します。
  2. ニコニコ大百科から完全一致するものを探し、見つかればそのURLを返します。
  3. Usa_botに登録されていないキーワードの場合、全文検索を行い、見つかればその結果を返します。
  4. 結果が多すぎる場合は一部省略されます。結果は、登録・修正が古い順に出力されます。
  5. いずれも見つからない場合、見つからない旨返します。

曖昧に検索したい場合、このコマンドがおすすめです。

単語登録確認([issetkwd])

単語が登録されているか確認するコマンドです。[s]とは以下の点が異なります。

  • 存在の有無だけをチェックします。内容は返しません。
  • Usa_botにキーワードが有るかにかかわらず、Usa_botニコニコ大百科の両方について結果を返します。

[set]をする前に、そのキーワードが存在していないか確認するときに使うことができます。

@Usa_bot [issetkwd] (キーワード)

例えば次のようにすると、

@Usa_bot [issetkwd] 5000兆円欲しい

次のように返します。(文章記述時点)

@(ユーザーID)

【5000兆円欲しい】について、

Usa_botは知っています。
ニコニコ大百科には載っていません。

なお、このコマンドは以前は[isset]という名前でした。

用語登録([set])、更新([update])、文字数事前確認([check])

用語を追加するコマンドです。以下のような形式で発言します。

@Usa_bot [set] (用語) (解説)

例えば次のようになります。

@Usa_bot [set] いちごパスタ 広義には、苺が使用されたパスタ料理。狭義には、橘ありすが過去のゲーム内イベントで作ったものを指す。im@stodonでの人気料理でありある意味で象徴。異常な再現度の写真やレシピに加え、専用のハッシュタグ #ichigo_pasta やロゴもある。

登録者と内容を明示するため、このコマンドは公開資料(公開/Public)又は社内資料(未収載/Unlisted)として発言する必要があります。それ以外の公開範囲の発言の場合は登録が拒否されます。 なお、必要な公開設定は今後変更される可能性があります。うまく登録できない場合、設定の変更がアナウンスされていないか確認してください。

構文が正しければ、Usa_botから資料を登録した旨リプライが届きます。 登録以降、とは検索やリプライ検索時、ここでセットした解説と登録時の発言のURLが合わせて投稿されます。つまり、用語を登録したのは誰なのか分かる仕組みになっています。

登録できる文字数には制限があります。以下の3つの制限のうち、一つでも該当する場合は登録することができません。

  • キーワードは最大100文字
  • 本文は最大400文字
  • キーワード+本文+登録時URLの合計は最大450文字

用語登録は、im@stodonインスタンスユーザーのみが可能です。外部インスタンスからコマンドが届いてもエラーになります。

用語内容を変更したい場合は、[update]を使用します。構文は[set]と同一です。[update]で内容を更新すると、旧解説に新しい解説のURLがリプライされ、内容が更新されたことがわかります(同時に旧解説を書いた人に通知が届き、更新されたことが伝わります)。

登録作業前に文字数を確認したい場合、[check]が使えます。[set]と同じ構文で、キーワードと本文、登録時URLのそれぞれ、及び合計の文字数を返します。

用語削除([delete])

用語を削除するコマンドです。以下のような形式で発言します。

@Usa_bot [delete] (用語)

例えば次のようになります。

@Usa_bot [delete] 本当の年齢

なお、このコマンドはキーワードを設定した本人のみが実行でき、実行する際も公開資料(公開/Public)又は社内資料(未収載/Unlisted)として発言する必要があります。設定者以外の発言の場合、あるいは公開範囲がUnlisted未満の発言の場合は削除が拒否されます。

現在話題のタグとURLのリストを取得([trend])

一定期間内に多く出現したタグやURLを取得します。ラジオやニコ生など、リアルタイム性が高い話題が流れている時に情報ソースを得るのに便利です。

@Usa_bot [trend]

数字の変換([cnv])

入力された数字を一定のパターンに従って変換・表示します。以下のように発言します。

@Usa_bot [cnv] (数字)

例えば次のようにすると、

@Usa_bot [cnv] 5000

次のように返します。(文章記述時点)

@(ユーザーID)

Convert form 5000JY:

4850MC ≒ 300*16
4650GC ≒ 300*16
2500SJ_min ≒ 250*10
4300SJ_max ≒ 250*17

※単位は架空のものです。また、入力値の表現方法や大きなによっては不正確な値になる場合があります。

返す文字列にもある通り、表示される値は特に意味はない架空の単位のものです。また、入力される値にはある程度広めの表現方法を認識しますが、想定外の表記方法や値の場合にうまく表示できないことがあります。

ガチャ確率計算([gacha]、[gasha])

入力された確率と回数で、目的のものが1個以上手に入る確率を返します。 確率は%単位で入力します。

@Usa_bot [gacha] 確率(%) 回数

例えば次のようにすると、

@Usa_bot [gacha] 0.4 300

次のように返ります。

@(ユーザーID)

出現確率0.4%のガチャを300回引いた時、目的のものが入手できる確率は69.9529%

なお、[gasha]はコマンド名が違うだけで、機能は全く同じです(内部的にもエイリアスです)。

自身のMastodon登録日時に関する情報([myinfo])

あなたがMastodonに登録した日付と付加情報を知ることが出来ます。以下のように発言します。

@Usa_bot [myinfo]

例えば、次のように返ります。

@(ユーザーID)

登録日:2017-XX-YY、約NN日経過
1日あたりの平均Toot数:約NNN

サイコロを振る([dice])

サイコロを振り、その結果を返します。

@Usa_bot [dice] 2 6

@Usa_bot [dice] 2D6

以上の2例は同じ意味で、最初の数字は振るダイスの個数、後の数字はそのダイスが何面かを指定します。例は、一般的な6面ダイスを2個振ることになります。 結果は例えば以下のように返ります。

@(ユーザーID)

⚃ ⚀
合計:5
平均:2.5
中央値:4

ダイスの面が7以上のときは、各値は普通の数字として返ります。また、中央値はダイス数が偶数個のとき、中央2値のうち大きい方を返します(後日2値の平均に変わる予定です)。

Usa_botの情報を取得する([usainfo])

Usa_bot自身の情報を取得します。現時点では、Usa_botに登録されているキーワード数が返ります。

@Usa_bot [usainfo]

自分自身のお墓を建てる([grave])

お墓が建ちます。

@Usa_bot [grave]

アニメやライブ、ゲーム内イベントに担当(推し、係など含む)のアイドルが登場したなどの理由で死んだ時に便利です。

ウサミンコードの実行([usamincode])

BF様言語「ウサミンコード」を実行します。

@Usa_bot [usamincode] 実行したいコード 入力

実行例です

詳細な仕様は、別の記事をご覧ください。→Usa_botに、「ウサミンコード」というプログラミング言語を実行する機能をつけました - 2TBの雑文置き場

ヘルプ([help])

Usa_botの簡易的なヘルプです。単独で実行すると使用可能なコマンドの一覧を確認でき、コマンド名をわたすと、そのコマンドに関して簡易な使い方の説明が出ます。

@Usa_bot [help]

@Usa_bot [help] コマンド名

その他機能

Usa_botアイキャッチ

Usa_botは、1日に最大3回(現時点ではJSTで9時、17時、25時)、自身が記憶している単語から一定基準で選択したものを、楽屋(LTL、ローカルタイムライン)に投稿します(アニメのアイキャッチや、ゲームのロード中に出てくるTipsのイメージ)。なお、本文が最大で400文字まで登録できる(現時点で登録されている単語での本文最長も400文字です)関係で、そのままLTLに流すとじゃまになる可能性がありますので、投稿の際はCW機能で折りたたまれた状態になり、本文の文字数が同時に表示されます。

Usa_botの知らない単語について

Usa_botは、自身が知らず大百科に掲載もない単語を受け取った時、表向きは反応していないように見えますが、裏ではその単語を記録しており、 毎日24時前後にそれらをまとめて投稿します(公開範囲は公開資料(公開/Public))。この単語が登録されていないのか、という参考にできる他、 何やねんこれという話題作りにもどうぞ。

動作上の問題点

  • 現在のところ、(原因は不明ですが)ときどき発言を取りこぼすことがあるようです。キーワードの登録の際など、応答があるはずなのに何もないときは数秒置いて再度試してみてください。
    • 毎日1時、5時、9時、13時、17時、21時のアイキャッチ投稿時にシステムの再読込を行うため、この前後の発言は取りこぼす可能性が高いです。

注意事項

極力このヘルプと実装には差異が無いよう努めますが、タイミングの問題などで齟齬が発生することがあります。

登録されたデータの著作権ほかについて

  • Usa_botに登録された文章の著作権は、それを記述した人に帰属します(勝手にUsa_botや2TBに移転することはありません)。
    • Usa_botは、これら著作物を、本プログラム内で上記説明のとおりに使用します。Mastodonの仕組みの関係で、これら著作物はim@stodonインスタンス外に配信される可能性があり、それらは事実上取り消すことができません。
  • 実装の仕様上、im@stodonあるいはMastodonの利用者の意図せずUsa_botにToot内容が届いたり、キャッシュその他の理由で保存されることがあります。これらデータはプログラムの動作に必要な範囲を超えて利用され、あるいは外部に公開されることはありません。

禁止事項・ご遠慮願いたい使い方・その他ルールなどについて

ご遠慮ください

  • im@stodonで投稿してはいけないルールになっている種類の情報の登録(例えばR-18な内容)
  • 特定の誰かにとって、大きく不利益を与える可能性のある内容の登録や拡散
    • 基準は私(2TB)が、公益性なども含めて都度判断します。基本的には、「他のルールに抵触せず、異議がなければ何もしない」です。
  • キーワード登録文字数を回避するために、登録Tootにレスツリーを形成するなどの行為
    • Usa_botのレスのみで本文を読み切ることができなくなる上、情報が更新されるとレスが途切れてしまいます。
    • 再登録するにしても、他の人が気軽に情報を更新することができなくなります。

データの削除について

  • データベースの登録内容に関して、
    • 自身で登録したものは、[delete]で削除できます。
      • 他者が登録したものであっても、[update]して[delete]するという方法があります。ただし、登録者には[update]したことは伝わります。
    • [delete]を使わず削除したい場合は2TBまでお知らせください。ただし、基準は大変厳しいです(通常は↑の方法をお使いください)。
  • Usa_botが発言した内容について、

    • 削除したい場合は2TBまでお知らせください。実際に削除するかどうかは、状況や事情によって個別に私が判断します(削除しない場合もあります)。
    • 削除した場合でも、私の手の届かないところのデータ(外部インスタンスやサービスなど)は感知しません(出来ません)。@Usa_bot@imastodon.netというユーザーからしか対応できなさそうな部分であれば、お知らせいただければ対応するための努力はします。
    • 削除した事実自体は公表されます。
  • データベース・発言内容ともに、技術的理由・法的な要請で必要になった場合・その他必要と考えられる場合、2TB自身の判断で削除することがあります。

    • 詳細な判断基準は非公開としますが、これら条件に従って編集や削除を行った場合は告知に努めます。

免責

Usa_botは、2TBの個人プログラム/プロジェクトです。2TBの個人的あるいは対外的な事情などにより、 例えば以下のような問題が起こる可能性があります。その一切に対して責任を負いません。

  • サービスが一時的あるいは恒久的に停止することがある
  • プログラムの不具合により正常に動作しない/しなくなることがある
  • 仕様の変更により、従来と使用方法が変わったりあった機能がなくなることがある

大きな変更があった時のメモ

時刻は全てJSTです。

  • 20171122-1230ごろ
    • [usamincode]について追加。
  • 20171112-0940ごろ
    • データの取扱(特に削除)について追記
    • ルールを追加
    • ルールとの混同を防ぐため、記事の一部の言い回しを変更
  • 20171109-1000ごろ
    • 登録が漏れていた幾つかのコマンドを追加。
    • 禁止事項などについて追加。
  • 20171005-1030ごろ
    • [check][delete]について追加。
  • 20170927-0900ごろ
    • [help]について修正
    • [sfind]について、大百科のリンクを(存在する場合は)常に返す仕様になったことを表現
  • 20170911-0940ごろ
    • 追加されたコマンドについて幾つか追記。
  • 20170823-1010ごろ
    • [sfind]の仕様変更に合わせて説明を修正。
  • 20170819-0900ごろ
    • 完全に記述を忘れていた[trend]を追加。
    • とは検索がUnlistedも対象になった旨修正。
    • 検索系コマンドにて、見た受からない時にその旨返すようになったことを追加。
  • 20170815-1050ごろ
    • [sfind]について追加。
    • とは検索が[sfind]に変わったことを明示。
    • 他微修正。
  • 20170725-1300ごろ
    • [find]について追加。
    • とは検索が完全一致検索であることを明記。
    • 「#とは」がキーワード末尾にある時に削除される件について追記。
  • 20170709-0900ごろ
    • [myinfo]について追加。
  • 20170614-1640ごろ
    • 入力文字列が改行を含む時、スペースに変換される仕様を追加。
    • 本文に@があるとき@に変換する仕様を追加。
  • 20170609-1100ごろ
    • 反応できる発言の条件に関して、特別な場合を除き公開範囲を問わない旨、返信はUnlistedで行われる旨を追記。
    • [cnv]について追加。
    • 「#とは」が登録できない旨の表記を削除。(仕様変更により同等のキーワードが追加できるようになっているため)
  • 20170607-0640ごろ
    • キーワードについて、一定の条件で同一視される文字のパターンを表記
    • データベースの編集について追加
  • 20170606-2340ごろ
    • [isset]の出力形式が変わったのでマニュアルも例を手直し
  • 20170606-0940ごろ
    • Usa_botアイキャッチについて追加
    • コマンドがim@stodonユーザーのみであることを補足
  • 20170602-2115ごろ
  • 20170530-1520ごろ
    • リプライ検索について記述の修正
    • [s]、[isset]について追記
  • 20170530-0650ごろ
    • リプライ検索でも#とはが必要になった