コミュニケート機能¶
communicate¶
書式¶
$(communicate エントリ1 単語1)
戻り値¶
エントリ1の示すエントリの単語、もしくは単語1
解説¶
エントリ1の単語を全て評価し、戻り値があった単語をランダムに1個選び、これをエントリ名と見なしてエントリ呼び出しの結果を返す。戻り値のあった単語が1つも無い場合、単語1を返す。単語1は省略可能。
エントリ名の指定には、辞書操作コマンド共通の書式を利用できる。
使用例¶
毒子.keyword1 : うむ , ふはははは , 変態
毒子.answer1 : \t\0\s[7]胸のことは言うなっ!\e
毒子.answer1 : \t\0\s[1]…。\e
花ちゃん.keyword1 : どないしたんや , 同じ中学生なのに
花ちゃん.answer1 : \t\0\s[8]あ‥‥\w8あまりじろじろ見んといてな。\e
花ちゃん.answer1 : \t\0\s[1]花ちゃんかて…。\e
match_keys : $(
if $[ ${System.Request.Reference0} == "毒子" ] $(
if $(xargs 毒子.keyword1 matchall ${System.Request.Reference1})
毒子.answer1
)
)
match_keys : $(
if $[ ${System.Request.Reference0} == "花ちゃん" ] $(
if $(xargs 花ちゃん.keyword1 matchall ${System.Request.Reference1})
花ちゃん.answer1
)
)
event.OnCommunicate : $(communicate match_keys ${communicate.else})
# コミュニケートコマンド群を用いたコミュニケートの実装例
# OnCommunicateイベントでcommunicateコマンドを使い、イベント反応を
# 記述したmatch_keysエントリを全て評価、戻り値のうち一つを選ぶ
# そして、戻り値をエントリ名と見なしてエントリ呼び出しを行い、それを返す
# 何も無い場合、communicate.elseエントリの単語を返す
matchall¶
書式¶
$(matchall 文字列1 キーワード1 ...)
戻り値¶
真または偽
解説¶
キーワードが全て文字列1にあった場合、真を返す。キーワードは1個以上ならば、いくつでも列挙できる。
使用例¶
毒子.keyword1 : あらあら , 最近 , 中学生 , 乳
=kis
matchall ${System.Request.Reference1} こんにちは;
# Reference1に「こんにちは」が含まれる場合、真を返す
matchall ${System.Request.Reference1} うにゅう おいしい ?;
# Reference1に「うにゅう」「おいしい」「?」が含まれる場合、真を返す
# 例えば「うにゅうっておいしいの?」と言う文章がきた場合、真を返す
xargs 毒子.keyword1 matchall ${System.Request.Reference1};
# xargsとの合わせ技
# xargsで毒子.keyword1エントリの単語を「matchall..」以降に列挙
# 結果として、毒子.keyword1エントリの単語がすべてReference1に含まれる
# 場合、真を返す
=end