5分でRailsのTwitterBotを作る手順

やりたいこと

自動的にTwitterに通知するBOTを作りたい。

今回は、「Webエンジニアのためのテックブログまとめ」で、評価+100以上の記事を殿堂入りとしてTwitterにつぶやかせます。

 

前提条件

RailsまたはRubyで作っていきます。

 

TwitterBotを作る手順

Twitterアプリを登録する

Twitter Application Management

Create New Appから登録します

 

f:id:kitahashi-ryoichi:20161223154428p:plain

 

入力項目

  1. Name 「Tweet Bot」とか何でも良いです
  2. Description 「This bot post high quality entry.」とか適当に
  3. WebSite 「http://~~

 

 

作ったらアクセストークンを生成します

Keys and Access Tokensタブをを開いて、「Create my access token」ボタンをクリックします。

f:id:kitahashi-ryoichi:20161223154815p:plain

f:id:kitahashi-ryoichi:20161223155010p:plain

ここで作った4つのキーとトークンは投稿する時の認証に使います。

 

  • Consumer Key
  • Consumer Secret
  • Access Token
  • Access Token Secret

 

Twitter Ruby Gemをインストール

ファイル:/Gemfile

gem 'twitter'

そしていつものコマンドを打ちます

bundle install

 

GitHub - sferik/twitter: A Ruby interface to the Twitter API.

 

Rakeタスクを作る

/lib/tasks/bot.rake

require 'twitter'
namespace :bot do client = Twitter::REST::Client.new(
consumer_key: ENV['TWITTER_CONSUMER_KEY'],
consumer_secret: ENV['TWITTER_CONSUMER_SECRET'],
access_token: ENV['TWITTER_ACCESS_TOKEN'],
access_token_secret: ENV['TWITTER_ACCESS_TOKEN_SECRET'],
) task :tweet => :environment do client.update('つぶやきの内容をここにいれる')
end
end

 

つぶやく

client.update("I'm tweeting with @gem!")

 

フォローする

client.follow(213747670)

 

ユーザー情報を取得する

client.user(213747670)

 

詳しいAPIのメソッドはコチラのリファレンスを参照してください

GitHub - sferik/twitter: A Ruby interface to the Twitter API.

 

TwitterAPIのアクセストークン等を環境変数に入れる

GitHubとかにアクセス情報をコミットしたくないので、bash_profileなどに入れちゃいます。

~/.bash_profile

export TWITTER_CONSUMER_KEY=hogehoge
export TWITTER_CONSUMER_SECRET=hogehoge
export TWITTER_ACCESS_TOKEN=hogehoge
export TWITTER_ACCESS_TOKEN_SECRET=hogehoge

 

環境変数を最新にするために、sourceしておきます

source ~/.bash_profile

 

Rakeタスクを実行してみる

rake bot:tweet

 

すると・・・つぶやきができるはずです。

 

こんな感じ

f:id:kitahashi-ryoichi:20161223155520p:plain