Twitter bot プロフィール設定[拡張編]

Ruby

こんにちはkazutoです。今回から以前、作成した、天気予報botを拡張していきます。、ターミナル 内でプロフィール設定が行える様に設定していきましょう。

事前準備

まずは事前準備を行いましょう。まあ今回は、特に準備をする必要はありませんが、コマンド操作が行える仕様にしたいので、exetution.rbファイルを少し変更していきます。

require "./config.rb"
require "json"
require "open-uri"
require "csv"
require "./weather_class.rb"
require "./tweet.rb"
require "./search.rb"
require "./analysis.rb"

def execution
  puts "メニューを選択してください"
  puts "[1]天気予報を取得してツイートする"
  puts "[2]プロフィール編集"
  num = gets.to_i
  case num
   when 1
     current_time_weather  =  wetaher(num)
     tweet(current_time_weather,num)
   when 2
     tweet(current_time_weather,num)
  else
     puts "無効な値です"
  end
end

execution()

case文を用いてtweetメソッドに新たに引数としてnumを渡しており、このままだとエラーが起きてしまうので、tweetメソッドを改良していきましょう。

def tweet(current_time_weather,num)
  tweet = Tweet.new(current_time_weather)
  case num
   when 1
     tweet.updata()
     puts "ツイートが完了しました。"
   when 2
     tweet.account_setting()
  else
    puts "無効の値です"
  end

上記の様に変更しました。引数numの値によって条件分岐を行っております。
case文を用いると、簡単な記述で条件分岐を行え、とても便利で変更にも強いです。

以上で事前準備のトピックを終了します。

Twitter bot プロフィール設定[実装編]

それでは、実際にターミナル内でプロフィール設定を行える様に実装していきましょう。

  • account_settingメソッドの作成
  • 実際にプロフィール設定をターミナル内で行う

account_settingメソッドの作成

まずは初めにプロフィールページを更新するメソッドaccount_settingメソッドを作成していきましょう。

def account_setting
    puts "アカウント名:#{@client.user.name}"
    puts "プロフィール文\n#{@client.user.description }"
    puts "[1]アカウント名を変更する"
    puts "[2]プロフィール文を変更する"
    puts "[3]閉じる"
    num = gets.to_i

      case num
        when 1
          name =gets.chomp
          @client.update_profile({name:name} )
        when 2
          description = gets.chomp
          @client.update_profile({description:description} )
        when 3
          return
     else
          puts "無効な値です"
      end
  end

それでは解説をしていきます。

 puts "アカウント名:#{@client.user.name}"
 puts "プロフィール文\n#{@client.user.description }"

まず初めに自己アカウントの

  • アカウント名
  • プロフィール文

が表示します。

@client.userとする事でアカウント権限を持ったアカウントの情報を参照する事ができます。

puts "[1]アカウント名を変更する"
puts "[2]プロフィール文を変更する"
puts "[3]閉じる"
num = gets.to_i

こちらのコードは、更新したい情報に紐づく番号を選択、変数numに格納という形になります。

case num
        when 1
          name =gets.chomp
          @client.update_profile({name:name} )
        when 2
          description = gets.chomp
          @client.update_profile({description:description} )
        when 3
          return
      end

こちらのソースコードは、case文を用いて先程の変数numの値によって条件分岐を行っています。

when 1
          name =gets.chomp
          @client.update_profile({name:name} )

numの値が1の時は、アカウント名を変更します。

 name = gets.chomp

変更後のアカウント名をnameに格納します。

@client.update_profile({name:name} )

Twitter::REST::Clientクラスのupdate_profileメソッドを用いて、選択されたプロフィール情報を更新します。update_profileメソッドとはプロフィールを更新するメソッドです。

when 2
          description = gets.chomp
          @client.update_profile({description:description} )

numの値が2の場合は、プロフィール説明文を変更します。

description = gets.chomp

変更後のプロフィール説明文を変数descriptionに格納しています。

@client.update_profile({description:description} )

最終的にTwitter::REST::Clientクラスのupdate_profileメソッドを用いて、プロフィール文を更新しています。

 when 3
        return
     else
        puts "無効な値です"
 end

numの値が3の場合は、returnメソッドで処理を強制終了します。numの値に無効な値が入った場合は、「無効な値です」を出力します。

以上でaccount_settingメソッドの実装を終了します。

今回は、account_settingメソッドのみでプロフィール設定機能の実装が完成します。なので次のトピックでは、実際にプロフィールをターミナル内で更新をしてみましょう。

プロフィール設定をターミナル内で行ってみよう

では最後にターミナルでプロフィールページ を更新をしてみましょう。

まずは更新前の天気予報botです。今回は、プロフィール説明文を変更していきます。

上記の画像の様にコマンドメニューから「プロフィール編集」を選択して

  • アカウント名
  • プロフィール文

のいずれかを変更してみましょう。

画像の場合は、プロフィール説明文を「プロフィール説明文を更新しました」と変更しています。

上記の画像の様にプロフィールが更新されていれば成功です。

まとめ:Twitter bot プロフィール設定[拡張編]

今回は、以前、作成した、天気予報botにプロフィール設定機能を追加しました。ターミナル内で、プロフィール設定ができるのは、とても便利だと思います。他にも、幾つか機能を追加をしたので、執筆が出来次第、記事を更新していきます。

以上、kazutoでした。

関連記事

※この記事は、下記の2つの記事をご覧いただき、天気予報botを作成してから読み始めていきましょう。