paiza times

paizaがお届けする、テック・キャリア・マネジメント領域における「今必要な情報」を届けるWebメディア

logo

paizaがお届けする、テック・キャリア・マネジメント領域の「今必要な情報」を届けるWebメディア

Twitterボット(Twitter Bot)の作り方(Ruby編) - サーバ設定不要のPaizaCloud上でTwitterボットをRubyで作る

f:id:paiza:20180110115336p:plain

(English article is here)


f:id:paiza:20151217152725j:plain([twitter:@yoshiokatsuneo])

Twitter(Twitter bot)

使



PaizaCloud

PaizaCloudWeb

PaizaCloudTwitter(Twitter bot)

Twitter

PaizaCloudRubyTwitter(Twitter bot)

沿5Twitter

PaizaCloud Cloud IDE使


PaizaCloud

PaizaCloud Cloud IDE

https://paiza.cloud/
GitHubGoogle(Gmail)




f:id:paiza:20171213234155p:plain




f:id:paiza:20171218232242p:plain
3RubyTwitter(Twitter bot)

Twitter API


TwitterTwitter使Twitter APITwitter APIAPI

APITwitter

Twitter"Twitter Apps"

https://apps.twitter.com/apps.twitter.com

f:id:paiza:20180110102619p:plain
"Create New App"Twitter

f:id:paiza:20180110102655p:plainf:id:paiza:20180110102712p:plain
"Name""Description"

"Website"WebURL https://example.com/ 

"Developer Agreement""Create your Twitter application"



f:id:paiza:20180110102738p:plain
( https://twitter.com/settings/add_phone )SMS

f:id:paiza:20180110102757p:plain


API

"Keys and Access Tokens"

f:id:paiza:20180110104343p:plainf:id:paiza:20180110104354p:plain
Access LevelRead-only()"modify app permissions""Read and Write"

Access Token

Application Actions"Regenerate Consumer Key and Secret"Your Access TokenAccess level"Read-Write"

API Key

API4


Consumer Key (API Key)

Consumer Secret (API Secret)

Access Token

Access Token Secret


Twitter

API"config.rb"

PaizaCloud

PaizaCloud

f:id:paiza:20171218232330p:plain
"config.rb"

f:id:paiza:20171218232345p:plain
Twitter

YOUR_CONSUMER_KEY / YOUR_CONSUMER_SECRET / YOUR_ACCESS_TOKEN / YOUR_ACCESS_SECRET API

config.rb:
require 'twitter'

config = {
    consumer_key: "YOUR_CONSUMER_KEY",
    consumer_secret: "YOUR_CONSUMER_SECRET",
    access_token: "YOUR_ACCESS_TOKEN",
    access_token_secret: "YOUR_ACCESS_SECRET",
}

@restClient = Twitter::REST::Client.new(config)
@streamingClient = Twitter::Streaming::Client.new(config)

f:id:paiza:20180110110629p:plain


twitter gem"require 'twitter'"gem

API

Twitter gemREST APIStreaming API使Twitter::REST::ClientTwitter::Streaming::ClientAPI




Ruby"irb"使

PaizaCloud使



f:id:paiza:20171213234317p:plain
"irb -r ./config.rb"()
$ irb -r ./config.rb

f:id:paiza:20180110105842p:plain
"irb"update
@restClient.update("https://paiza.cloud/ を使ってRubyでツイートしてみた!")

f:id:paiza:20180110110242p:plain
Twitter



f:id:paiza:20180110110420p:plain

RubyTwitter


TwitterTwitter

"bot.rb"

USERNAME("@")

bot.rb:
require 'twitter'
require './config'

ENV['TZ'] = 'JST-9'
username = "USERNAME"

@streamingClient.user do |tweet|
    if tweet.class == Twitter::Tweet && tweet.text.include?("@#{username}") && !tweet.in_reply_to_status_id
        puts "Found tweet: #{tweet}"
        if tweet.text.include?("何時")
            now = Time.now
            @restClient.update("@#{tweet.user.screen_name} 今は#{now.hour}#{now.min}#{now.sec}秒です。", in_reply_to_status_id: tweet.id)
        end
        if tweet.text.include?("今日")
            today = Time.now
            @restClient.update("@#{tweet.user.screen_name} 今日は#{today.year}#{today.month}#{today.day}日です。", in_reply_to_status_id: tweet.id)
        end
        if tweet.text.include?("明日")
            tomorrow = Time.now + (60*60*24)
            @restClient.update("@#{tweet.user.screen_name} 明日は#{tomorrow.year}#{tomorrow.month}#{tomorrow.day}日です。", in_reply_to_status_id: tweet.id)
        end
    end
end

TZ

@streamClientusertweet

tweet.text@

@restClient.update

bot




PaizaCloudRubyTwitter
$ ruby bot.rb

f:id:paiza:20180110114713p:plain


f:id:paiza:20180110114822p:plain
RubyTwitter

PaizaCloudTwitter

https://paiza.cloud


PaizaCloudRubyTwitter

TwitterPaizaCloudTwitter使

Twitter

(Twitterpaiza(@paiza_official))


PaizaCloud https://paiza.cloud


paiza



paizaラーニング
paizaWeb

SABCDE6使



paizaのスキルチェック

paizaのおすすめコンテンツ

CGC codemonster プログラミングゲーム「コードモンスター大図鑑 プログラミングでゲットだぜ!」 PPG proken プログラミングゲーム「初恋 プログラミング研究会〜海に行こうよ〜」
paiza転職 paiza新卒 EN:TRY paizaラーニング 記事内に記載している情報は、記事公開時点でのものとなります。 Copyright Paiza, Inc, All rights reserved.