1行のPythonで!Twitterの自動リプライボットを動かしてみよう

プログラミング

はじめに

プログラミングを始めたばかりの方でも、「自分のコードが実際に動いて、人とやり取りする」体験は格別ですよね。今回は、たった数行のPythonコードでTwitterの自動リプライボットを作る方法をご紹介します。

「プログラミングって難しそう…」と思っている方も安心してください。この記事では、無料で取得できるTwitter APIを使って、簡単な自動返答機能を実装します。完成すれば、あなたのボットが「こんにちは」や「お疲れさま」といった挨拶に自動で反応してくれますよ!

準備するもの

必要なもの一覧

  • Pythonがインストールされたパソコン(Python 3.7以上推奨)
  • Twitterアカウント
  • インターネット環境
  • テキストエディタ(メモ帳でもOK)

事前に理解しておくと良いこと

  • Pythonの基本的な文法(変数、関数程度)
  • コマンドライン/ターミナルの基本操作

初心者の方でも大丈夫です。わからない部分があっても、コードをコピー&ペーストするだけで動きます!

Twitter APIキーを取得しよう

ステップ1:Twitter Developer Portalにアクセス

  1. Twitter Developer Portalにアクセス
  2. Twitterアカウントでログイン
  3. 「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} こんにちは!"

ツイート内容に特定のキーワードが含まれていれば、対応する返答を生成します。

ボットを動かしてみよう

実行方法

  1. APIキーの部分を、取得した実際のキーに置き換える
  2. ファイルを保存
  3. コマンドラインで以下を実行:

bash

python twitter_bot.py

動作テスト

  1. 別のTwitterアカウント(友人など)から、自分のボットアカウントに「こんにちは」とメンションを送る
  2. 数分後、ボットから自動で返信が来ることを確認

成功すれば、コンソールに「返信しました」と表示されます!

よくあるトラブルと解決法

認証エラーが出る場合

  • 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時間稼働

このボットをベースに、あなただけのオリジナル機能を追加してみてください。プログラミングの楽しさを実感できるはずです!