2019年8月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
無料ブログはココログ

« EasyBotterでカスタマイズ覚書 | トップページ | 2016年 オーベルシュタインお誕生日オフ会のお知らせ »

2015年8月 8日 (土)

EasyBotterでカスタマイズ覚書2

前項「EasyBotterでカスタマイズ覚書」の続き。

【投稿に他人のIDがある場合(複数ID宛のリプライの場合)はリプライを返さない】
botの暴走を減らしたい、サーバーへの負荷を軽減したい等の目的で、複数ID宛へのリプライをしないようにする。

これは、EasyBotter本体ファイルに予め設定されている[[END]]をそのまま利用する。

いじるのはリプライファイルの方。

"@[a-zA-Z0-9_].*@[a-zA-Z0-9_]"=> array(
"[[END]]",
),

これだけ。

解説。
[ ]は、この括弧内の任意の一字にマッチさせたい時に使用。
a-zやA-Zは小文字と大文字のアルファベット26文字をまとめて表したもの。
0-9は0から9までの数字をまとめて表したもの。
「.*」については前項を参照。

つまり上の命令は、「『@+アルファベットか数字の文字列(つまりツイッターのIDのこと)』があり、その後にも『@+アルファベットか数字の文字列』がある場合は、本体設定の[[END]]を実行する(リプライしない)」ということ。

【URLの含まれるリプライにはリプライを返さない】
URL付きの発言は無視をしたい場合。荒らしとか乗っ取りとかに反応しない対策。

手法は先ほどと同様に、[[END]]を使用する。

"https?://"=> array(
"[[END]]",
),

httpsの後の「?」は、直前が0字もしくは1字の場合にマッチする記号。つまり、「https」でも「http」でも良いという意味。
私は他にも、「RT」や「QT」が含まれたリプには反応しないようにしている。

【半角記号を文字列として認識させたい】
上記までの中で、半角の「?」や「.」や「*」などには特別な働きがあると書いてきた。従って、これらの半角記号を、リプライ時の条件ワードに含ませたい場合には、特別な働きをしないように配慮しなければならない。どういうことかというと……

まずは参考表現。

    "(オーベル|おーべる|オベ|閣下).*(フェル|ふぇる).*元気.*(か|?|\?)"=> array(
    "オベ「私の預かり知らぬところだ」",
    "オベ「本日は出張を命じている」",
    "オベ「今朝、私のデスクにカエルの玩具を置いたのはおそらくフェルナーであろう。……元気なことだ」",
),

これは、「オーベル」または「おーべる」または「オベ」または「閣下」+任意の文字列(有無は問わない)+「フェル」または「ふぇる」+任意の文字列(有無は問わない)+「か」または「?(全角)」または「?(半角)」 を含む投稿があった場合に指定のリプライを返すというもの。

要するに、「閣下、フェルナーは元気ですか」や、「おーべるたん、ふぇるにゃん元気?」などに対応したいというマニアックなリプライパターン。

この赤で表示した「(か|?|\?)」に注目。
これは「か」または「?」か「?(半角)」という意味。本来なら(か|?|?)と書きたいところだが、半角の「?」をそのまま正規表現のなかに放り込むと、前述の通り「直前の文字が1字でも0字でも良い」という意味になってしまう。

そこで、半角「?」の前に半角の「\」を入れている。先に「\」を入れることで、直後の一字を正規表現としてではなく、ただの文字列として見なす、ということになる。

これで初めて、「閣下、フェルナーは元気です?」という投稿に対して、適切なリプライを送ることができる。ちなみに半角「?」にこだわった理由は、ただ表記ブレに対応したいだけ。スマホからの投稿だと、全角か半角か見分けづらくて、気付かないうちに半角記号を使っている場合があるので。

« EasyBotterでカスタマイズ覚書 | トップページ | 2016年 オーベルシュタインお誕生日オフ会のお知らせ »

ツイッターbot作成あれこれ」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: EasyBotterでカスタマイズ覚書2:

« EasyBotterでカスタマイズ覚書 | トップページ | 2016年 オーベルシュタインお誕生日オフ会のお知らせ »