>>「真面目」でも「頭がいい人」でもお金持ちになれないたった1つの理由とは

【Ruby】Twitterアカウント名をツイートから誰でもいじれるようにした

こんにちは,学生エンジニアの迫佑樹(@yuki_99_s)です.
Twitterアカウント名をだれでも変えれるようにしてみました!

f:id:McG:20160217154346p:plain

こんな感じで,ハッシュタグ #さこくんの名前をつけてツイートすると,その名前に変えてくれるスクリプトを書いた.

そしたら,わずか5分足らずに20位のリプが来たのでタイムラインを荒らしたことを申し訳なく思いながら終了.
というかみんなTwitter好きすぎ

f:id:McG:20160217154942p:plain

こんなリプが飛んできた(一部)

ひどくないです?w

みんなの反応

ご迷惑をおかけいたしました.

ソースコード

以下のようなプログラムを作成しました.

require "twitter"
$client = 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
$client_streaming = Twitter::Streaming::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
def rename_profile(name)
begin
$client.update_profile({
name: name
})
msg = "迫くんの名前を#{name}に変えたお!!(だれでも変えれる仕様)"
return msg
rescue => e
p e
return e
end
end
$client_streaming.user do |object|
case object
when Twitter::Tweet
if (/#さこくんの名前/ =~ object.text) && !(/RT/ =~ object.text)
#botにリプライきてから処理開始 
tweet = object.text
name = tweet.delete("#さこくんの名前")
puts name
option = { 'in_reply_to_status_id' => object.id }
msg = rename_profile(name)
$client.update msg,option
end
end
end

Streaming APIを使って #さこくんの名前 が含まれているツイートを取得して,ツイートを整形,定義したrename_profileメソッドに渡して名前を変えてあげる処理をしています.

ミスった点

あっ.ってなりました.
deleteメソッドを使っていたんですが,文字列内部分一致で消しちゃうんですね.正規表現に書き換えておきます.

感想

通知が鳴り止まなくて大変,かつTL汚して周りに迷惑なのでやめましょう()