こんにちは、2回生のこまです。

Twitterのbotが作りたくなったので作りました。

https://twitter.com/substr_bot

はじめに

ツイッターアカウントを作ります

https://developer.twitter.com/en

で登録します。(「What’s your use case?」という項目があるので「Making a bot」を選びます)

英語で適当に目的を書いて送ればすぐ承認されると思います。

[Create New App]で新規appを作成して

  • Consumer Key(API Key)
  • Consumer Secret(API Secret)
  • Access Token
  • Access Token Secret

を取得できればOKです

Pythonからツイートする

Tweepyをインストールします。

先に取得したConsumer Key、Consumer Secret、Access Token、Access Token Secretを使って

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN_KEY'
access_token_secret = 'ACCESS_TOKEN_SECRET'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

api.update_status(status = "ツイートする文章")

でツイートすることができます。
画像やURLなども載せられるようです。
https://docs.tweepy.org/en/stable/api.html?highlight=update#tweepy.API.update_status

自分宛のツイートに返信する

search_word = "@アカウント名"
set_count = 100
results = api.search_tweets(q=search_word, count=set_count, result_type = 'recent')

自分宛のツイートを検索することができます。(1回あたり100ツイートが上限)
検索したツイートに返信するには

for result in results:
    tweet_id = result.id
    reply_text = "@"+result.user.name+"返信したい文章"
    api.update_status(status = reply_text ,in_reply_to_status_id=tweet_id)

とすることで返信できます。

あとはこれを定期的に実行することでbotの完成です!(完成じゃない)

  • 余談

Twitterの検索機能で時間指定やリツイートの除外、一定数以上のリツイートやいいねされたツイートを絞り込むことができます。
これは↑のツイートを検索する部分をいじるだけなので簡単にできます!

Herokuでbotを動かす

いちいち返信するたびにプログラムを動かすのは面倒なので、Herokuで定期的に実行できるようにします。

ここからHeroku CLIをインストールしておきます。Gitもインストールしておきます。
https://devcenter.heroku.com/ja/articles/heroku-cli#download-and-install

アカウントはもう作ってあったので、VSCodeのターミナルからログインします。

$ heroku login

の後に何か聞かれるので適当にエンターを押すとブラウザからログインできます。

その後に

$ heroku create アプリケーション名

でアプリケーションを作成します。
(https://dashboard.heroku.com/appsから確認できます。)

$ git init
$ git add . 
$ git commit
$ git push heroku master

で作ったPythonのプログラムをHerokuにデプロイできます。

次に定期的にプログラムを実行するようにします。

https://dashboard.heroku.com/appsから動かしたいアプリを開いてAdd-onsからHeroku Schedulerを追加します。

次にHeroku Schedulerを開いてCreate jobで

Run CommandにPython プログラム名を入力すれば定期的に実行してくれます。

これでできました!

(10分ごと、1時間ごと、1日ごとにしか動かせないので少し不便です。自分はシェルスクリプトで10秒ごとに動くようにしています)

Twitterでフォローしよう

おすすめの記事