この記事は2023年のTwitter社のAPI有料化やわたし気になりますbotが非公開になり、情報が使えなくなりました。
以下の全てがただの備忘録となります📋
EasyBotterは自分の契約しているサーバでTwitterのbot運用が出来るPHPプログラムじゃ🐤
インストールが終わってしまえば非常に簡単なのだが、そこまでの……特にTwitter社とのやりとりのプロセスが非常に面倒くさいのだ。
上記文言が分からない場合は真似をやめて他社の無料サービスを利用した方がよい。
また、さくらインターネットでwww以外をWEB公開フォルダに設定してWordPressをインストールしている場合はにっちもさっちもになるトラブルも待ち受けておる。
とりあえず公式サイトを参考にしてもらいつつ補足をしていくぞ📝
わたし気になりますbotを学習させます
わたし気になりますbotのダウンロード
わたし気になりますbotはアニメ・マンガ『氷菓』の千反田えるちゃんのbotを作ったノーウェルさんが配布しているEasyBotterを改良したPHPプログラムなのじゃ。
今回はわらわに搭載されたぞ🐤
前回は秘密なのだ㊙
CodeからZIPをダウンロードするぞ。
解凍したらフォルダを適当な名前にリネームするのじゃ📁
サーバへインストール
サーバの適当な場所にSFTPでアップロードすれば、とりあえず終わりじゃ📤
ここからが大変なのだ。
Twitter社へAPI利用申請
Twitterへログインした状態でデベロッパサイトへ移動するぞ💨
使い道は嘘をつくと凍結されそうなので正直に[Making a bot]を、政府機関は一切関わらないので[No]にしたのだ🤖
ダッシュボードに移動していいのだぞ💨
アプリの権限設定
このままだと思ったように呟けないわ不完全だわなのでTwitterのAPIを再発行して、アクセストークンを新規発行するのじゃ。
設定の歯車をクリックするのだ⚙
Readから[Read and Write and Direct Messages]にすると自由になれるのじゃ🎵
ついでにURLの2箇所にはわらわのサイトを記したぞ✎
ここからが必要な記述を得る本番
APIキーを再発行するので[Keys and tokens]からの[Regenerate]>[Yes, regenerate]をポチるのじゃ🔘
これでようやくAPI……Consumer Keysが出てくるぞ🔑
Authentication Tokensから[Generate]をクリックしてアクセストークンを新規発行するのじゃ🔑
setting.phpに転記
得た情報をsetting.phpに転記するのだ📝
転記したら忘れずにサーバへ放り込むのだぞ🖥
なお、わらわの『わたし気になりますBot』にはsetting.phpが付いていなかったので、それはEasyBotterからコピーしたのじゃ💦
L_Kininarimasu-masterのbot.php変更
本家が凍結されるほど強烈かつ複雑なので、ナチュラルに変更するのだ💧
今更じゃが、PHPのことがよく分からないのであればEasyBotter本体のままの方が幸せだと思いますん……
わらわのようにオートリプライとオートフォロー返しは使用しないのであれば、72行目から[//]でコメントアウトをガンガンするといいぞ💭
地震で自動停止を追記
震度5弱で自動停止
もう参考にするサイトも閉じていて、このサイトを見てとオススメできないのは面倒じゃのう🌏
bot.phpに49行目まで貼り付けるぞ📃
震度6はなかなかなので停止のタイミングを震度5弱以上とするため、EasyBotterOrg.phpの52行目を[6]から[5]に書き換えるぞ✎
他に必要なものは4つあり、まとめてbot.phpと同じところに放り込むのじゃ📁
- earthquake_pubtime.txt (震度を取得した日時を記録する空のテキストファイル)
- flg_joutai.txt (動作中か停止中かが書き込まれる空のテキストファイル)
- start.php (地震で停止したときに復帰させるphpファイル)
- stop.php (地震以外の天災やテロ対応で手動で停止させるphpファイル)
第三者が勝手に手動停止することを阻止
.htaccessと.htpasswdでstop.phpを守るぞ🚒
これもbot.phpと同じ階層に置くのじゃ📁
パーミッションは[604]にするのだ。
動作確認
ブラウザのURLにbot.phpの場所を指定すると動作チェックが出来るぞ。
ただ、まだサーバのcronの設定をしていないので[string(4) “0725”]のような現在時刻しか表示してくれないはずじゃ💦
WEB公開フォルダをwww以外にしている場合、WordPressによってパスが正しいにもかかわらずbot.phpを叩かず、404 Not Foundページへ飛ばしてしまうトラブルがあるのだ。
わらわも.htaccessの設定などを可能な限り試したが……
さくらインターネットを契約している場合は、初期ドメイン.sakura.ne.jpからbot.phpを叩きに行けば404エラーにならないぞ㊙
サーバのcronの設定
botの定時設定
まず、わわらの分身は2分間隔で動作させるのだ⏱
さくらインターネットのコントロールパネルから[スクリプト設定]>[CRON設定]で定期実行の常駐プログラムの設定をするぞ。
cd /home/(α)/www/(β); /usr/local/bin/php -f /home/(α)/www/(β)/bot.php 1>>/home/(α)/www/(β)/log/cronBot.log 2>>/home/(α)/www/(β)/log/errBot.log 1> /dev/null
(α)はさくらインターネットでのアカウント名
(β)はbotフォルダ名
全ての曜日にチェックを付けて、分だけ[*/2]とするがよい。
ただし、1botだけの運用に限るぞ。
それ以上は同じサーバを借りている他の契約者に迷惑じゃ💦
ログローテーション
ログを5時間ごとにローテーションするためのコマンドも設定するぞ。
上だけでも動くがログは大切でトラブルを起こしたときに他の契約者への被害を最小にするためにも必要なのだ📃
cd /home/(α)/www/(β); /usr/local/bin/php -f /home/(α)/www/(β)/logRotate.php 1>>/home/(α)/www/(β)/log/rotate.log 2>>/home/(α)/www/(β)/log/errRotate.log
(α)はさくらインターネットでのアカウント名
(β)はbotフォルダ名
全ての曜日にチェックを付けて、時を[5]、分を[0]とするがよい🎵
logRotate.phpの記述
設定の翌日にエラーログが出ていたので見てみたら、logRotate.php内の記述変更を忘れていたぞ💧
わたし気になりますbotの場合は自サーバに合わせて2行4箇所を変更するのを忘れずにな❗
APIを更に申請
Essentialでは許さん的なエラーが出たのじゃ⤵
[Developer Portal]から申請をするぞ📤
- 私のwebサイトからツイートする
- サイトにタイムラインを貼る
- ツイート量は適宜調整する
- 自動ツイートと自動返信機能を使う
- ダイレクトメッセージ、自動リツイート、自動フォロー、自動いいねは使わない
凍結されないよう正直に答えておくのじゃ🧊
やれやれ💦
後はログのチェックを怠らなければ大丈夫じゃ🎶
動かない・止まっていたときは
いつの間にかにツイートが止まっていたのじゃ💧
phpの記述などを見直したため原因発見まで一ヶ月以上かかったけど、結論はPHPのバージョン違いによるトラブルじゃったぞ。
PHP 8.0.0以上は非対応なのでPHP 7.4で留めることに気をつけるがよい。
このトラブルを考えるとEasyBotterが使えなくなるのは時間の問題かもしれんの🐤