はじめに
ふとTwitterのbotの作り方が気になったので、今回はRubyで1日1回ツイートしてくれるbotを作ってみました。
(Pythonでもだいたい同じものを作ったのですが、そちらは別記事で投稿します。)
使用環境
- CentOS 7.4
- Ruby 2.5.1
実装の流れ
実装は以下の4ステップで実装を進めました。
- Twitter開発者サイトでアプリの登録
- 必要なモジュールのインストール
- ツイートする処理のコーディング
- crontabで定期的に実行させる
Twitter開発者サイトでアプリの登録
今回、コーディングよりもここが一番の山場でした。。。
アプリの登録のやり方ですが、事前にbot用のアカウントを取得した上で、
開発者サイトにアクセスします。
bot用のアカウントでログインし、アプリの登録を進めていけばいいのですが、、
2018年夏頃から、Twitter側の審査が厳しくなり、事前にどういったアプリなのか
申請が必要になりました(英語で300単語程度)
説明が簡単すぎると、審査が通りません(私は2回目で申請が通りました。)
こんな記事も出てますね
Twitter、API使用条件を厳格化 「厳しすぎる」開発者から悲鳴も
https://www.itmedia.co.jp/news/articles/1807/26/news079.html
申請が上手く通ったら、アプリの作成を進めていきます。
手順は以下のブログ記事を参考に進めました。
https://toaster-inc.com/twitter-bot-pmp-vocabulary-02/
以下4つの文字列が生成できればこのステップは完了です。
- Access Token
- Access Token Secret
- Consumer Key
- Consumer Secret
必要なモジュールのインストール
必要なGemをインストールします。
今回はクライアント側でTwitterのAPIを叩くので、以下のコマンドで
Twitterをインストールします。
$gem install twitter
インストールが無事完了したら、次に進みます。
ツイートする処理のコーディング
コードは以下の通りです。
~/ruby_bot/bot.rb
require 'twitter' #twitterの読み込み
#作成したTwitterアプリにアクセスする情報を記載する
twClient = Twitter::REST::Client.new do |config|
config.consumer_key = "取得したConsumer keyを入力"
config.consumer_secret = "取得したConsumer Secretを入力"
config.access_token = "取得したAccess Tokenを入力"
config.access_token_secret = "取得したAccess Token Secretを入力"
end
twClient.update("Tweet from Ruby!!") #ツイートする文字列
rubyコマンドで上記のスクリプトファイルを実行すればツイートできます。
$ruby bot.rb
crontabで定期的に実行させる
プログラムでツイートできるところまでできたので、crontabを使って
定期的に実行します。
'crontab -e'を実行すると定期実行するコマンドの設定画面(エディタ画面)が出てくるので
以下のように設定を入れていきます。
参考
https://eng-entrance.com/linux-command-crontab
0 16 * * * /usr/bin/ruby /home/username/ruby_bot/bot.rb
//分 時 日 月 曜日 コマンドのファイルパス 実行するファイルのパス
設定が保存されたら、定期的に実行されるようになります。
上記だと、毎日bot.rbが16時に実行されます。
##最後に
今回は今後拡張性を持たせるためにかなりシンプルにしてます。
いろんなAPIをプログラムから叩きつつ、あとはユーザーのツイートに反応できるようにも
してみたいなと考えております。