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. 見つからない場合、全文検索を行い、見つかればその結果を返します。
  3. それでも見つからない場合、ニコニコ大百科から完全一致するものを探し、見つかればそのURLを返します。
  4. いずれも見つからない場合、見つからない旨返します。

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

単語登録確認([isset])

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

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

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

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

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

@Usa_bot [isset] 5000兆円欲しい

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

@(ユーザーID)

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

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

用語登録([set])

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

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

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

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

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

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

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

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

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

用語内容を変更したい場合、同じキーワードで新たな解説を付けて同様に投稿します。既存用語だった場合は解説が上書きされ、置き換えられます。 現時点では書き換え回数やインターバルなどの制限などは設けていません。ご利用の方の良識に期待します。

現在話題のタグと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

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

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

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

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

@Usa_bot [myinfo]

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

@(ユーザーID)

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

その他機能

Usa_botアイキャッチ

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

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

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

動作上の問題点

  • 現在のところ、(原因は不明ですが)ときどき発言を取りこぼすことがあるようです。キーワードの登録の際など、応答があるはずなのに何もないときは数秒置いて再度試してみてください。

注意事項

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

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

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

免責

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

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

また、以下の様な場合にデータベースに直接手を入れて、データを編集あるいは削除することがあります。

  • プログラムの動作上、編集や削除が必要な場合
    • この場合、編集する場合は文章の内容には手を入れず、たとえば文字の全角半角を変換するなどの同一視出来るレベルでの編集にとどめます。
    • この場合の編集や削除は公開されません(外部から見た影響がないため)。
  • 法的な要請で必要になった場合
  • その他、必要と考えられる場合
    • 詳細な判断基準は非公開としますが、これら条件に従って編集や削除を行った場合は告知に努めます。

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

時刻は全てJSTです。

  • 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ごろ
    • リプライ検索でも#とはが必要になった