てことで、今日が素数日であるかないかをツイートするbotを作りました。
言語はperlで作りたかったのですが、moduleインストールとか環境作りで躓いたので諦めました。perlなのに...笑
サーバーは遊びで契約していたVPSがあったのでそれを使いました。そっちは結構前にPHP入れてたので久しぶりにPHPで書くことに。


素数日判定ロジックどうしよーと思って考えてたら、標準関数にそれっぽいのがありそれを使いました。
これ、「おそらく素数であるかを調べる」とかいうめっちゃふわっとしたのでウケたんですけど、まあ大丈夫だろうと思って使ってたら初めての素数日当日に、「明らかに素数」ではなく「おそらく素数」って返ってきたのでやめました。

で、素数ってエラトステネスの篩っていう昔の人が考えたアルゴリズムで出すのが一般的だったみたいなのでそっちに書き換えました。



あとどうせなら自動リフォローもつけたいなーって思っててそれもつけました。一応3時間に1回でリフォローします。

また、アンフォローされたら外したいよね、って思ったのでアンフォローも実装しました。

最初は自動フォロー/アンフォローも3時間に1回で作ってたのですが、アンフォローの対象が自分はフォローしてるけど相手は自分をフォローしていない、なんですが、相手が鍵アカで許可待ち状態だったらアンフォローしちゃう...?であれば、リフォローしても次のcron動く前に許可してくれなきゃアンフォローする、っていうのは結構厳しい、て思ったので、週1でアンフォローは確認するようにしました。

ここデバッグしてないからあとで変更するかもだけど...

(追記:2016-11-05)
Twitterの利用規約的に、自動フォロー解除はアウトらしい。まあ、全然フォローしてる人いないのでとりあえず一旦これはなかったことに。


あと問題があって、今年の素数日が11/3が最後なんですね。で次の素数日が2017/1/21で。
その間ずっと
ってつぶやきが流れるのしんどいかなーって思ったんですけど、 あんまり動いてないとこのbot生きてるの?ってなっちゃうので、とりあえず1日1回はつぶやくようにしました。

だいたい素数日で月に2回くらいあるんですけど、今年の10月は月に5回も素数日があったので確認する日がたくさんあってよかったです( ´ ▽ ` )ノ

素数日も4回成功してるからロジックも大丈夫なはず。
ただcron失敗してる時がちょいちょいあって、ちゃんとエラーログ吐いてslackとかに投げたいな、と思いました。

私の初めてのtwitter bot作成はこんな感じでした!
bot楽しいから量産する人の気持ちがわかりました( ´ ▽ ` )ノ

次はLINE botも作りたいなあ〜( ´ ▽ ` )ノ

***

(追記:2017-08-21)
Pythonで書き換えました。
フォロー返しはつぶやくとき同時にするようにしました。なので1日1回。