はじめに
プログラミングを始めたばかりの方でも、「自分のコードが実際に動いて、人とやり取りする」体験は格別ですよね。今回は、たった数行のPythonコードでTwitterの自動リプライボットを作る方法をご紹介します。
「プログラミングって難しそう…」と思っている方も安心してください。この記事では、無料で取得できるTwitter APIを使って、簡単な自動返答機能を実装します。完成すれば、あなたのボットが「こんにちは」や「お疲れさま」といった挨拶に自動で反応してくれますよ!
準備するもの
必要なもの一覧
- Pythonがインストールされたパソコン(Python 3.7以上推奨)
- Twitterアカウント
- インターネット環境
- テキストエディタ(メモ帳でもOK)
事前に理解しておくと良いこと
- Pythonの基本的な文法(変数、関数程度)
- コマンドライン/ターミナルの基本操作
初心者の方でも大丈夫です。わからない部分があっても、コードをコピー&ペーストするだけで動きます!
Twitter APIキーを取得しよう
ステップ1:Twitter Developer Portalにアクセス
- Twitter Developer Portalにアクセス
- Twitterアカウントでログイン
- 「Apply for a developer account」をクリック
ステップ2:開発者アカウントの申請
申請時には以下の項目を入力します:
基本情報
- 名前
- 国
- 使用目的(「Learning and experimenting」でOK)
利用目的の説明 英語で簡潔に記載します。例:
I want to create a simple auto-reply bot for learning Python programming. The bot will reply to mentions with simple greetings like "Hello" or "Thank you".
ステップ3:APIキーを取得
承認されたら、以下の情報を取得・保存してください:
- API Key
- API Key Secret
- Access Token
- Access Token Secret
重要: これらの情報は他の人に見せないよう、安全に保管してください!
必要なライブラリをインストール
コマンドライン(WindowsならCommand Prompt、MacならTerminal)を開いて、以下のコマンドを実行します:
bash
pip install tweepy
tweepy
は、PythonからTwitter APIを簡単に使えるライブラリです。
いよいよコーディング!基本のボットを作ろう
基本的な自動リプライボット
新しいPythonファイル(例:twitter_bot.py
)を作成し、以下のコードを記述します:
python
import tweepy
import time
# APIキー設定(ここに取得したキーを入力)
API_KEY = "your_api_key_here"
API_SECRET = "your_api_secret_here"
ACCESS_TOKEN = "your_access_token_here"
ACCESS_TOKEN_SECRET = "your_access_token_secret_here"
# Twitter API認証
auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)
# ボットの動作確認
try:
api.verify_credentials()
print("認証成功!ボットが起動しました")
except:
print("認証エラー:APIキーを確認してください")
# 自動リプライ機能
def auto_reply():
# 自分宛てのメンションを取得
mentions = api.mentions_timeline(count=10, tweet_mode="extended")
for mention in mentions:
# まだリプライしていないツイートかチェック
tweet_text = mention.full_text.lower()
# 返答パターン
if "こんにちは" in tweet_text or "hello" in tweet_text:
reply_text = f"@{mention.user.screen_name} こんにちは!今日も良い一日を😊"
elif "お疲れ" in tweet_text or "おつかれ" in tweet_text:
reply_text = f"@{mention.user.screen_name} お疲れさまでした!ゆっくり休んでくださいね✨"
elif "ありがとう" in tweet_text or "thanks" in tweet_text:
reply_text = f"@{mention.user.screen_name} どういたしまして!また何かあればお声がけください🤖"
else:
continue # 該当しない場合はスキップ
try:
# リプライを送信
api.update_status(
status=reply_text,
in_reply_to_status_id=mention.id,
auto_populate_reply_metadata=True
)
print(f"返信しました: {reply_text}")
time.sleep(5) # API制限を避けるため5秒待機
except tweepy.TweepyException as e:
print(f"エラーが発生しました: {e}")
# メインループ
if __name__ == "__main__":
print("Twitterボット開始!Ctrl+Cで停止できます")
while True:
try:
auto_reply()
print("5分後に再度チェックします...")
time.sleep(300) # 5分待機
except KeyboardInterrupt:
print("ボットを停止しました")
break
except Exception as e:
print(f"予期しないエラー: {e}")
time.sleep(60) # エラー時は1分待機
コードの解説
認証部分
python
auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
この2行でTwitter APIに接続する認証を行います。
メンション取得
python
mentions = api.mentions_timeline(count=10, tweet_mode="extended")
自分に対するメンション(@付きのツイート)を最新10件取得します。
自動返答ロジック
python
if "こんにちは" in tweet_text:
reply_text = f"@{mention.user.screen_name} こんにちは!"
ツイート内容に特定のキーワードが含まれていれば、対応する返答を生成します。
ボットを動かしてみよう
実行方法
- APIキーの部分を、取得した実際のキーに置き換える
- ファイルを保存
- コマンドラインで以下を実行:
bash
python twitter_bot.py
動作テスト
- 別のTwitterアカウント(友人など)から、自分のボットアカウントに「こんにちは」とメンションを送る
- 数分後、ボットから自動で返信が来ることを確認
成功すれば、コンソールに「返信しました」と表示されます!
よくあるトラブルと解決法
認証エラーが出る場合
- APIキーがコピー&ペーストで正確に入力されているか確認
- Twitter Developer Portalでアプリの設定が正しく保存されているか確認
- アクセストークンを再生成してみる
ボットが反応しない場合
- メンションの形式が正しいか確認(@ユーザー名が含まれているか)
- API制限に引っかかっていないか確認
- インターネット接続を確認
エラーメッセージが出る場合
python
except tweepy.TweepyException as e:
print(f"詳細なエラー: {e}")
このようにエラーハンドリングを追加すると、具体的な問題が分かります。
ボットをカスタマイズしてみよう
返答パターンを増やす
python
# より多くのパターンに対応
response_patterns = {
"おはよう": "おはようございます!今日も頑張りましょう🌅",
"おやすみ": "おやすみなさい!良い夢を😴",
"天気": "今日の天気はどうでしょうね?外を見てみてください👀",
"元気": "元気が一番ですね!私も元気です🤖"
}
for keyword, response in response_patterns.items():
if keyword in tweet_text:
reply_text = f"@{mention.user.screen_name} {response}"
break
時間によって返答を変える
python
from datetime import datetime
current_hour = datetime.now().hour
if 6 <= current_hour < 12:
greeting = "おはようございます!"
elif 12 <= current_hour < 18:
greeting = "こんにちは!"
else:
greeting = "こんばんは!"
reply_text = f"@{mention.user.screen_name} {greeting}今日もお疲れさまです😊"
注意事項とマナー
Twitter APIの利用制限
- 15分間に300回までのツイート取得制限
- 24時間で2400ツイートまでの投稿制限
- 同じ内容の連続投稿は避ける
ボット運用のマナー
- スパム的な動作は避ける
- 不適切な内容への自動返信を防ぐフィルタリング機能を追加
- ユーザーが望まない場合は停止する仕組みを用意
セキュリティ対策
python
# APIキーを環境変数で管理(推奨)
import os
API_KEY = os.getenv('TWITTER_API_KEY')
本格運用する場合は、APIキーをコードに直接書くのではなく、環境変数で管理しましょう。
まとめ
おめでとうございます!これで基本的なTwitter自動リプライボットが完成しました。
今回学んだこと
- Twitter APIの基本的な使い方
- tweepyライブラリの活用方法
- 自動化プログラムの基本的な構造
- エラーハンドリングの重要性
次のステップ
- より複雑な返答ロジックの実装
- データベースを使った学習機能の追加
- Webスクレイピングと組み合わせた情報収集機能
- クラウドサービスでの24時間稼働
このボットをベースに、あなただけのオリジナル機能を追加してみてください。プログラミングの楽しさを実感できるはずです!