LINE Bot SDK のエラーを自動分析・診断するライブラリ
Project description
🤖 LINE Bot Error Analyzer
LINE Bot 開発で発生するエラーを自動分析・診断する Python ライブラリです。
LINE Bot API のエラーレスポンス、例外、ログメッセージを解析し、エラーの種類を特定して具体的な解決策を提案します。開発者の生産性向上と LINE Bot の安定運用をサポートします。
🚀 このライブラリは共同開発者・コントリビューターを募集中です!ご興味のある方は Discord までご連絡ください。
📋 要件
- Python: 3.9 以上(3.9, 3.10, 3.11, 3.12 でテスト済み)
- LINE Bot SDK: v2/v3 系に対応(オプション)
- 依存関係: 標準ライブラリのみ(
typing_extensionsのみ追加)
✨ 特徴
- 🔍 自動エラー解析: LINE Bot API のエラーレスポンス、例外、ログを自動で分類・診断
- 💡 具体的な対処法: 各エラーに対する実用的な解決策とベストプラクティスを提案
- ⚡ 同期・非同期対応: 同期処理と非同期処理の両方をサポート
- 🔄 SDK バージョン対応: LINE Bot SDK v2/v3 系の両方に対応
- 🌐 フレームワーク統合: Flask、FastAPI、aiohttp などと簡単に統合
- 📊 リトライ判定: エラーのリトライ可否を自動判定
- 🏷️ エラー分類: エラーを意味のあるカテゴリに自動分類
インストール
基本インストール
pip install linebot-error-analyzer
開発環境用(テスト依存関係含む)
pip install linebot-error-analyzer[dev]
LINE Bot SDK と一緒にインストール
# LINE Bot SDK v3 と一緒に
pip install linebot-error-analyzer linebot-sdk
# または全依存関係込み
pip install linebot-error-analyzer[all]
対応環境
- Python 3.9+
- Windows, macOS, Linux
- LINE Bot SDK v2/v3(オプション)
🚀 基本的な使用方法
from linebot_error_analyzer import LineErrorAnalyzer
# アナライザーを初期化
analyzer = LineErrorAnalyzer()
# エラーメッセージ(ログメッセージから)を分析
error_message = "(401) Invalid channel access token"
result = analyzer.analyze(error_message)
print(f"エラーカテゴリ: {result.category.value}") # AUTH_ERROR
print(f"対処法: {result.recommended_action}")
print(f"リトライ可能: {result.is_retryable}") # False
# 辞書形式のエラーデータも分析可能
error_data = {
"status_code": 429,
"message": "Rate limit exceeded"
}
result2 = analyzer.analyze(error_data)
print(f"カテゴリ: {result2.category.value}") # RATE_LIMIT
📝 サポートされる入力パターン
このライブラリは以下の形式のエラーを分析できます:
-
エラーログメッセージ(文字列)
analyzer.analyze("(401) Invalid channel access token") analyzer.analyze("429 Rate limit exceeded")
-
辞書形式のエラーデータ
analyzer.analyze({ "status_code": 400, "message": "Bad Request" })
-
LINE Bot SDK 例外(v2/v3)
# SDK例外を直接渡すことが可能 try: line_bot_api.reply_message(...) except LineBotApiError as e: analyzer.analyze(e) # 例外オブジェクトを直接分析
-
HTTP レスポンスオブジェクト
# requests.Response オブジェクトなど response = requests.post(...) if not response.ok: analyzer.analyze(response)
🔗 LINE Bot SDK との統合
from linebot.v3.messaging import ApiClient, MessagingApi
from linebot.v3.messaging.exceptions import ApiException
from linebot_error_analyzer import LineErrorAnalyzer
analyzer = LineErrorAnalyzer()
try:
# LINE Bot API を呼び出し
line_bot_api.reply_message(...)
except ApiException as e:
# 例外を直接解析
error_info = analyzer.analyze(e)
if error_info.category.value == "RATE_LIMIT":
wait_time = error_info.retry_after or 60
print(f"レート制限エラー: {wait_time}秒後にリトライしてください")
elif error_info.is_retryable:
print("一時的なエラー - リトライを推奨")
else:
print(f"対処法: {error_info.recommended_action}")
⚡ 非同期処理
import asyncio
from linebot_error_analyzer import AsyncLineErrorAnalyzer
async def analyze_errors():
analyzer = AsyncLineErrorAnalyzer()
# 単一エラーの非同期分析
result = await analyzer.analyze("(401) Authentication failed")
# 複数エラーの一括分析(バッチ処理)
error_messages = [
"(401) Invalid channel access token",
"(429) Rate limit exceeded",
"(400) Bad Request"
]
results = await analyzer.analyze_batch(error_messages, batch_size=10)
for result in results:
print(f"エラー: {result.category.value} - {result.recommended_action}")
asyncio.run(analyze_errors())
📚 ドキュメント
詳細ガイド
- 📖 インストールガイド - 詳細なセットアップ手順
- 🚀 クイックスタート - すぐに始められるガイド
- 🎯 使用例集 - 実際のプロジェクトでの活用例
- 🔧 統合ガイド - FastAPI、Flask との統合
- 🐛 エラーリファレンス - 全エラーコード詳細とトラブルシューティング
💻 実装例
本ライブラリには、実際の LINE Bot 開発で使用できる実装例を含んでいます:
- 📁 Examples Collection - 実用的な LINE Bot 実装例
simple_usage.py- 基本的な使用方法のデモflask_echo_bot.py- Flask を使用したエコー Bot(エラー処理付き)fastapi_echo_bot.py- FastAPI を使用した非同期エコー Botaiohttp_echo_bot.py- aiohttp を使用したフル非同期実装
これらの例は LINE Bot SDK の公式スタイルに準拠し、コピー&ペーストで実際のプロジェクトに使用できるよう設計されています。
詳細は 📖 Examples Guide をご覧ください。
主要エラーカテゴリ
| カテゴリ | 説明 | 例 |
|---|---|---|
AUTH_ERROR |
認証エラー | 無効なトークン |
RATE_LIMIT |
API 呼び出し制限 | 429 エラー |
INVALID_REPLY_TOKEN |
無効な返信トークン | 期限切れトークン |
USER_NOT_FOUND |
ユーザー未発見 | 削除されたアカウント |
SERVER_ERROR |
サーバーエラー | 5xx 系エラー |
詳細なエラーコード対応表は 📖 エラーリファレンス をご覧ください。
🔧 フレームワーク統合
FastAPI との統合例
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from linebot.v3.messaging.exceptions import ApiException
from linebot_error_analyzer import LineErrorAnalyzer
app = FastAPI()
analyzer = LineErrorAnalyzer()
@app.exception_handler(ApiException)
async def line_api_exception_handler(request, exc):
error_info = analyzer.analyze(exc)
return JSONResponse(
status_code=error_info.status_code,
content={
"error": error_info.category.value,
"message": error_info.message,
"action": error_info.recommended_action,
"retryable": error_info.is_retryable
}
)
テスト実行
# 基本テスト実行
python -m pytest tests/ -v
# テスト用依存関係のインストール
pip install pytest pytest-asyncio
ライセンス
MIT License
免責事項
このライブラリはサードパーティ製です。LINE 株式会社とは関係ありません。
参考リンク
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file linebot_error_analyzer-3.0.1.tar.gz.
File metadata
- Download URL: linebot_error_analyzer-3.0.1.tar.gz
- Upload date:
- Size: 28.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac7fc5157209b4b141b22a8d20d3d971e8b7a568ea71ed22198c611c3ac86483
|
|
| MD5 |
8af79fb15c8fc955315bdd38d64f95eb
|
|
| BLAKE2b-256 |
12b12a7c333f7b04b089cc9515f29edab996987420d5cd3eb88e9b5632c57abc
|
File details
Details for the file linebot_error_analyzer-3.0.1-py3-none-any.whl.
File metadata
- Download URL: linebot_error_analyzer-3.0.1-py3-none-any.whl
- Upload date:
- Size: 31.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
891b850a679cd05abc1bd8658a9e323d76a91a0f2cecdd16d35601299e5e938b
|
|
| MD5 |
abe1f9a9ee2d6f07aee72e5ff878bc8f
|
|
| BLAKE2b-256 |
f75405315e864d93e359a4c999b30eb8130c08d66aa712a26c5e2a4ec0849695
|