7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

最低限のTwitter bot をRubyで実装してみた

Posted at

はじめに

ふとTwitterのbotの作り方が気になったので、今回はRubyで1日1回ツイートしてくれるbotを作ってみました。
(Pythonでもだいたい同じものを作ったのですが、そちらは別記事で投稿します。)

使用環境

  • CentOS 7.4
  • Ruby 2.5.1

実装の流れ

実装は以下の4ステップで実装を進めました。

  1. Twitter開発者サイトでアプリの登録
  2. 必要なモジュールのインストール
  3. ツイートする処理のコーディング
  4. 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
スクリーンショット 2019-04-29 15.45.05.png

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をプログラムから叩きつつ、あとはユーザーのツイートに反応できるようにも
してみたいなと考えております。

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?