Greasy Fork is available in English.

[bot-manager]botマネージャー ( feederチャット版 )

複数のbotを管理します。

Forfatter
yaju1919
Daglige installasjoner
0
Totale installasjoner
44
Vurderinger
0 0 0
Versjon
5.9
Lagd
Oppdatert
Lisens
I/T
Gjelder

Forfatterens beskrivelse

feederチャット上で動作するスクリプトです。

色々な会話botをまとめて管理します。

このスクリプトは自分で改造する必要は一切ありません。
新しく外部のユーザースクリプトとしてbotを追加するか、私の持ってる他のbotを追加してください。
メンテナンスを簡単にするためです。



●botの種類を選択
「ランダム」は、登録されているbotの中からランダムで1つ選び結果を返します。
「絶対発言するマン」は、上の「ランダム」に加えて答えが得られるまでbot内を検索し続けます。



●その他のボタン
①bot起動
ONのとき、最新の発言をチェックします。

②発言時引用
ONにすると反応した相手の投稿を引用しつつ投稿するようになります。

③引用も読む
通常botが引用文を見ても「>>1234」としか読めませんが、これをONにするとその中身も読めるようになります。


●入力欄
①反応時間
投稿までのラグです。
下限はアク禁ギリギリセーフラインの2000ミリ秒です。

②反応確率
相手の発言に反応する確率を百分率で指定します。
デフォルトの100は必ず反応するということです。
0だと絶対に反応しません。

③botのトリップ
入力は任意です。
なかったとしても名前で判断してくれます。
なりすましに反応できなくなったり、文字装飾関係のバグで自分だと認識できなくなることがあります。
普通の名前をつけていれば問題ありませんが・・・。
それが嫌な人は、botのトリップを入力しておいてください。
トリップなら確実ですから。



●botとお試し対話
この機能はbot起動がOFFでも使えます。
どういう動きをするかこちらで事前確認が行えます。
ハイライトがかかってる文字列が表示されたらbotが反応しなかったという意味です。



●グローバル汚染について
window.Botが汚染されます。
被らないようにしてください。
ちなみにbotスクリプト内では、windowをwinに変えてください。


●botを追加する方法
①もともと用意されているものを追加する方法
②自分で一から作る方法
この2つがあります。

①は、私が作ったものであれば
https://greasyfork.org/ja/users/263519
ここから[bot]とタイトルについているものをインストールすればすぐに使えます。
ただし、[bot]API使用bot系に関しては必要な手続きを踏まないと使えないので注意してください。

②は、
window.Botが用意されています。
連想配列です。
そのメンバとして関数の形で追加してください。
第一番目の引数には話し相手の発言内容が文字列型で来ます。
それに答える形で文字列型の文を返す関数を追加してください。

例:
window.Chatbot["サンプルbot"] = ({str}) => {
if(str === "とくさんか?") return "違います。";
};

例の場合は「とくさんか?」と聞かれたら「違います。」と答えるbotとなります。



★新規のユーザースクリプトとしてbotを追加するには、

botマネージャーに管理される側のbotスクリプトは
https://greasyfork.org/ja/scripts/386735
このライブラリを読み込む必要があります

現在(2019/6/29 19:51時点)では、
// @require https://greasyfork.org/scripts/386735-bot-needs/code/bot_needs.js?version=711897
これを記述しておけばOKですね。

あとはwindowをwinに変えてやれば正常に動作します。


●非同期処理について

bot登録時、関数の引数は第一引数は相手の発言内容の文字列ですが、第二引数が存在します。
それが非同期処理用の関数です。
非同期処理に興味がないならこの項目は理解しなくても良いです。

win.Chatbot["botの名前"] = ({text,wait}) => {
const say = wait();
setTimeout(()=>{
say("5000秒前に「" + text + "」って発言しましたよね?");
},5000);
};

まず第二引数の関数を実行すると、botマネージャーのwait_flagがONになり、それ以外のbotを受け付けなくなります。
返り値は、発言関数なので何かしらの変数で受け取って、処理が終わった後その関数に入れると発言できます。







botマネージャーのココがスゴイ!


メンテナンスが簡単

このスクリプトの仕事は、相手の発言を取得し、選ばれたbotに渡すことのみです。
bot自体の機能は他のbotスクリプトに任せられるので、botが上手く動作しなければ殆どの確率でbot側の故障です。
また、botの新規追加もwin.Chatbotの連想配列にそのbotの名前のキーで関数を入れるだけなので簡単です。
極論を言ってしまえば、一行でbotが作れるのです。
botマネージャーを起動した状態で、対象のページで「F12」キーか何かでコンソールを開き、

Chatbot["便乗するだけのbot"] = () => "そうだよ(便乗)";

とコピペし、Enterを押して実行してください。

たったそれだけで相槌を返すbotが作れたではありませんか!


リカバリーが効く

botごとに完全に切り離されている構造なので1つのbotがぶっ壊れても、このスクリプトがぶっ壊れてない限り正常に動作します。
ただし、非同期処理持ちのbotの場合はbot選択をクリックしないと再開しないので注意が必要です。


汎用性が高い

feederチャット以外の他のサイトでも使いたくなることってありませんか?
簡単にできる可能性があります。

ほとんどのbotは@matchの部分のみしか改造する必要がありません。
つまり、大幅に改造する必要があるのはbotマネージャーだけです。

まず、発言を取得している部分を変えましょう。
ほとんどの場合は、要素の中身の文字列を取得するだけでできます。
次に、botの発言する方法を変えましょう。
最後に、botマネージャー自体の要素を追加する場所を決めればほぼ完了です。

難しいと思った場合はフィードバックから投稿してもらえると対応いたします。
ただ、対応するのが本当に難しいチャットサイトも存在するのでご了承ください。
例えばdiscordとか。