人生でやりたい100のこと




PHPでツイッターのbotを作ってみた。ドットインストール見ながら

ツイッターのbotを作って稼ぎまくってる夢をみました。
なので、ツイッターのbotを作ります。

で、やってみたら意外と簡単でした。

「cronとかなんやねん?!」
って思っていましたが、とりあえず単純なつぶやきを繰り返すくらいならプログラムやサーバーの知識がなくてもできます。
ロリポップならcron操作時にユーザーインターフェイスがありますので楽チンです。

実験用のアカウントを取得したほうが良いと思います。
僕は使ってないアカウントがあったのでそれを利用します。

https://twitter.com/tousisintakun

スクリーンショット 2014-12-30 6.45.28

ツイッターのbotを作るためにまず見たサイト

グーグル先生に

ツイッター bot 作り方
とか
ツイッター bot 稼ぎ方
とか
ツイッター もっと 稼ぐ
とか
お金 もっと 稼ぐ
とか。。
ツイッター関係なくなってきた俺です。。。

まぁ冗談はさておき、

ツイッター bot 作り方
で検索すると、ドットインストールのツイッターでbotを作る講座がヒットしました。(ドットインストールに登録して数年になるがbotの講座があるのを知らなかった。。しかも勉強したことのあるPHPです。)

基本的にドットインストールの動画を見ながら作業を進めました。
2,3時間程度でbotを作ることに成功しました。

途中、途中でつまずくところがありました。
つまずいたところ、解消方法とかググって調べたのでこの記事でシェアします。

ドットインストール:ツイッターのbot作成動画
スクリーンショット 2014-12-30 12.35.35

【#02 ツイッターアプリを登録する】でつまずいたところ

まず、プログラムとか記述する前にツイッターのアプリケーション登録時の個人認証に手惑いました。

ドットインストール内では、

https://dev.twitter.com/appsにアクセス→ 空メール送信 → 受信したメール内のリンクをクリック

と解説されています。
この方法で何度か試してみましたが、

電話番号を登録できませんでした。再度お試しください。

と、何度も何度も言ってきやがる!!

スクリーンショット 2014-12-30 6.59.38

青い鳥を焼き鳥にして喰ってやろうかと思いましたが、最近は野菜メインの食生活にしてるのでやめてやりました。

グーグルでいろいろ調べてみましたが、PCのブラウザでやると不具合がおこるらしい。
スマホのアプリからなら問題なくできるとのことだったので、ipodtouchから登録しました。
一瞬で終わりました。

あと、動画で解説されてる箇所に

Consumer secret
Access token
Access token secret

は見当たりません。

Keys and Access Tokens
スクリーンショット 2014-12-30 7.23.18

にありました。

【#03 ツイッターアプリを設定する】でつまずいたところ

Application typeも動画で解説されてる箇所にはありませんでした。

modify app permissionsを押したら、っぽいの出てきたので一安心。
スクリーンショット 2014-12-30 7.26.51

【#04 必要なファイルを揃えよう】でつまずいたところ

このChapterでつまずいたところはありませんが、コーディングがめんどーでした。
コード打つのめんどーな人はコピペどうぞ。(あ、でもワードプレスの仕様でシングルクォーテーションとかが全角になるので気をつけてください。)

config.php

define(‘COSUMER_KEY’, ”);
define(‘COSUMER_SERECT’, ”);
define(‘ACCESS_TOKEN’, ”);
define(‘ACCESS_TOKEN_SECRET’, ”);

【#05 ツイッターのAPIを利用する】でつまずいたところ

コード打つのめんどーな人はコピペどうぞ。

動画の通りにequire_once(‘twitteroauth/twitteroauth.php’);
と打つとエラーが出るので

require_once(‘twitteroauth.php’);
require_once(‘config.php’);

$conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SERECT, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

$result = $conn->get(‘account/verify_credentials’);

var_dump($result);

と記述。
文字化けしてる箇所があるが、情報を取得できているのでよしとします。(ローカル環境とロリポップで動作確認済み)

【#07 ボットを使ってつぶやこう】と【#08 エラーの修正をする】でつまずいたところ

コード打つのめんどーな人はコピペどうぞ。

文字化けしてる箇所があるが、情報を取得できているのでよしとします。(ローカル環境とロリポップで動作確認済み)

require_once(‘twitteroauth.php’);
require_once(‘config.php’);

$conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SERECT, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

$params = array(
‘status’ => ‘TEST for bot’
);

$result = $conn->post(‘statuses/update’, $params);

var_dump($result);

成功しました。

【#09 内容を時間帯によって変更する】でつまずいたところ

動画では時間帯によってつぶやく内容を変える記述をしています。
僕自身は時間帯によって変更するコードは打ってませんが、いつもお世話になってるコミュのURLをつぶやいてみました。

require_once(‘twitteroauth.php’);
require_once(‘config.php’);

$conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SERECT, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

$params = array(
‘status’ => ‘アフィチャレコミュ楽しいよ!http://sns.ch.moshimo.com/’
);

$result = $conn->post(‘statuses/update’, $params);

var_dump($result);

文字化けてんじゃねぇかよ!!!!

ひき肉にしてやんよ!!!!

っと思いましたが、

サーバーの文字コードをUTF-8にしてやれば直りました。
スクリーンショット 2014-12-30 9.03.05

【#10 定期的にプログラムを実行する】でつまずいたところ

いよいよ、cronの登場です。
名前からして
「新しい言語とか覚えなあかんのちゃうん?!」
とか勝手に思ってました。

実際に、ドットインストールの動画では真っ黒の画面でコーディングしてます。
ビビりましたが、ロリポップではcronの設定はインターフェースが用意されているので簡単に設定できます。

cron設定|ロリポップ

けど、うまく動いてないっぽい。。
なんかエラーになる。。。

Status is a duplicate.
というエラー。
調べてみると、同じ文字列の投稿はできないらしい。(同じ文言をbotにつぶやかせる場合は10ツイートは開ける必要があります)

PHPでテキトーに時間を取得し、同じにならないように変更。

require_once(‘twitteroauth.php’);
require_once(‘config.php’);

$conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SERECT, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

$today = date(“H:i:s”);
$params = array(
‘status’ => $today . ‘アフィチャレコミュ楽しいよ!http://sns.ch.moshimo.com/’
);

$result = $conn->post(‘statuses/update’, $params);

var_dump($result);

cronの設定を毎時15分につぶやくように設定しました。(15分以外のつぶやきはページを自分で読み込んでつぶやかせたものです。)

超簡単だったでPHP覚えたての人が最初のステップとしてbot作成は良さそうです。


『今』やってること、明日の自分はそのことを誇らしく思うだろうか?
Return Top