twbot2.rb README(日本語)
twbot2.rbは、OAuthのトークン管理機能と統合された、Twitterのbotを作成するためのフレームワークです。TwitterのAPIを利用するには、OAuthの取り扱い、特にトークンの取得が面倒であるため、それをCUIから実行できるようにするとともに、取得したトークンを用いてTwitterのAPIを利用するためのクラスを自動的に生成するようにしています。
バージョン0.21より、twbot2.rbを単にOAuthのトークン管理のために利用する、すなわちTwitterのbot以外のTwitter用プログラムとしても利用しやすいよう作り直しました。
gem install json # needed in Ruby 1.8 or before
gem install oauth
gem install devnull
その後、twbot2.rbをダウンロードし、ボットのプログラムと同じディレクトリに置きます。
バージョン0.22までは、twbot2.rbのアプリケーションキー・シークレット(アプリケーション単位で割り当てられる、Twitter APIにアクセスする際に用いる文字列)をデフォルトで指定していました。バージョン0.23ではこれをデフォルトで指定するのをやめました。これはTwitterが2018年9月10日より、アプリケーション単位のツイート数制限を設けるためです。(参照:New developer requirements to protect our platform (Twitterの開発者向けブログ))
- まずTwitterにアプリケーションの登録を行います。すると、"Consumer Key"と"Consumer Secret"を取得できます。
- twbot2.rbを開き、
set_consumer("", "")
というコードにkeyとsecretを指定します。
なお、単に試したい場合は、アプリケーションの登録を行う代わりに、コメントに書かれたコードを利用してください。
botにツイートさせたい内容を、以下に示す形で記述します。
$ cat greeting_bot.rb
require "./twbot2"
TwBot.create("config-file.yml", "log-file.log").cui_menu do
# Define what the bot tweets here
tweet_list = ["Good morning", "Good afternoon", "Good evening"]
[tweet_list[rand(tweet_list.size)]] # return as an array
end
このプログラムを "load" パラメータで呼び出すことで、ツイートされる内容を設定ファイルに追加します。
$ ruby greeting_bot.rb load
Running mode 'load'...
[2000-00-00 00:00:00 +0000]
[cui_menu:mode=load]
"load" パラメータにより設定ファイルに追加された内容を実際にツイートするには、このプログラムを "post" パラメータで呼び出します。
$ ruby greeting_bot.rb post
Running mode 'post'...
[2000-00-00 00:00:00 +0000]
[cui_menu:mode=post]<Error in updating> A String (user name) or Hash
(parameters) is required as the argument (NilClass given)
* Perhaps you have not finished authentication. Try 'greeting_bot.rb init' to
register the default user.
ArgumentError: A String (user name) or Hash (parameters) is required as the
argument (NilClass given)
* Perhaps you have not finished authentication. Try 'greeting_bot.rb init' to
register the default user.
(snipped)
ただしこれは失敗します。というのも、ユーザが設定ファイルに登録されていないためです。そこで、設定ファイルにデフォルトのユーザを追加します。
$ ruby greeting_bot.rb init
Running mode 'init'...
============================================================
Here I help you register your bot account to the setting file.
Please prepare a browser to retrieve OAuth tokens.
Input the screen name of your bot account.
============================================================
User name >h_hiro_
============================================================
To retrieve OAuth token of user "h_hiro_":
(1) Log in Twitter with a browser for user "h_hiro_".
(2) Access the URL below with same browser:
https://api.twitter.com/oauth/authorize?oauth_token=****
(3) Check the application name is "twbot2.rb" and
click "Allow" link in the browser.
(4) Input the shown number (PIN number).
To cancel, input nothing and press enter key.
============================================================
PIN number >*******
User "h_hiro_" is successfully registered.
Default user is set to @h_hiro_.
[2000-00-00 00:00:00 +0000]
[cui_menu:mode=init]
- "User name >" が表示された際には、Twitterのユーザ名を入力します。
- (1) = Twitterにブラウザで、入力したユーザ名でログインします。
- (2) = そのブラウザで、表示されたURLにアクセスします。
- (3) = 表示されているアプリケーション名が "twbot2.rb" であることを確認し、"Allow"(許可)をクリックします。
- (4) = 表示されたPIN numberを入力します。キャンセルするには何も入力せずにEnterキーを押します。
これが終わったら、もう一度このプログラムを "post" パラメータで呼び出します。Twitterに投稿が行えていれば大丈夫です。
$ ruby greeting_bot.rb post
Running mode 'post'...
[Updated!] Good afternoon
[2000-00-00 00:00:00 +0000]
[cui_menu:mode=post](A tweet has been posted)
※リンク先はまだ英語のままです。
-
コンストラクタ
-
TwBot.create
- TwBotのインスタンスを生成 -
TwBot.new
- TwBotのインスタンスを生成し実行する
-
-
botプログラムの実行
-
TwBot#cui_menu
- プログラムを動かすためのCUIを提供する -
TwBot#run{ ... }
- 指定されたブロックを実行する -
TwBot#load_tweet{ ... }
- 指定されたブロックを実行し、返り値をツイートととして保存する -
TwBot#post_tweet
-TwBot#load_tweet
で保存したツイートをTwitterに投稿する
-
-
bot定義を記述するのに利用する変数
-
@config
- 設定ファイルに書き込まれた内容 -
@logmsg
- ログファイルに書き込みたい内容をここに指定する -
@list
- 保存されたツイートのリスト名
-
-
bot定義を記述するのに利用するメソッド
-
TwBot#user_registered?
- 指定されたユーザが設定ファイルに登録されているか調べる -
TwBot#auth_http
- OAuthで認証されたHTTPアクセス用インスタンスを取得する -
TwBot#get_followers
,TwBot#get_followers_ids
- フォローされているユーザを取得する -
TwBot#get_friends
,TwBot#get_friends_ids
- フォローしているユーザを取得する -
TwBot#follow_by_screen_name
,TwBot#follow_by_user_id
- ユーザをフォローする -
TwBot#unfollow_by_screen_name
,TwBot#unfollow_by_user_id
- ユーザのフォローを外す -
TwBot#following_status
- ユーザのフォロー関係を取得する
-
-
ユーティリティ
-
TwBot.set_consumer
- コンシューマトークンを設定する -
TwBot.remove_reply
- 返信にならないようにテキストを変形する ("Hi, @h_hiro_" -> "Hi, @ h_hiro_") -
TwBot.user_details
- ユーザIDからユーザの詳細情報を取得する -
TwBot.truncate_to_length
- 文字列が一定の文字数以上であった場合に切り落とす
-