Chatwork Auto Read は、Chatwork のメッセージを自動的に既読化するアプリケーションです。
- 自動既読化: 新着メッセージを自動で既読にします
- スキップ機能: 特定の条件でメッセージ処理をスキップできます
-
プログラムのダウンロード:
- ダウンロードページにアクセスします。
- 最新版の下にある「Assets」という見出しを探します。
- お使いのパソコンに合ったファイルをダウンロードします:
- Windows パソコンの方:
chatwork_auto_read-Windows.exe - Mac の方:
chatwork_auto_read-macOS - Linux の方:
chatwork_auto_read-Linux
- Windows パソコンの方:
-
ダウンロードしたファイルの保存:
- パソコンの分かりやすい場所(例:デスクトップ)に新しいフォルダを作り、その中にダウンロードしたファイルを移動させます。
- このフォルダを「Chatwork 自動既読」などと名付けると良いかと思います。
-
Chatwork API トークンの取得:
- Chatwork API トークンが必要です。取得方法は以下の手順で確認できます:
- Chatwork 公式ヘルプページ「API トークンを発行する」 にアクセスします。
- このページの手順に従って、自分の Chatwork API トークンを取得してください。
- 取得した API トークンは、次の手順で使用しますので、メモしておいてください。
- Chatwork API トークンが必要です。取得方法は以下の手順で確認できます:
-
設定ファイルの作成:
-
ダウンロードしたプログラムと同じフォルダに、
configというフォルダを作ります。 -
configフォルダの中にdefault.tomlというファイルを作ります。 -
default.tomlファイルを開き、以下のような内容を入力します:[chatwork] api_token = "ここにあなたのAPIトークンを入れてください" exclude_account_ids = ["あなたのアカウントID", "その他既読にしたくないメンションのアカウントID1", "その他既読にしたくないメンションのアカウントID2"] exclude_room_ids = [スキップしたいルームID1, スキップしたいルームID2]
設定例:
[chatwork] api_token = "abcdef1234567890ghijklmnopqrstuvwxyz" exclude_account_ids = ["123456","7891011"] exclude_room_ids = [11111, 22222]
この例では:
- API トークンは
"abcdef1234567890ghijklmnopqrstuvwxyz"です(これは架空のものです。実際のトークンに置き換えてください)。 - 自分のアカウント ID(123456)が含まれるメッセージは自動既読にされません。
- ルーム ID 11111 と 22222 のメッセージは自動既読にされません。
注意:
- アカウント ID はかぎかっこ(
[])の中にダブルクォーテーション(")で囲んで入力します。 - ルーム ID はかぎかっこ(
[])の中に直接数字を入力します。 - 複数のアカウント ID やルーム ID を設定する場合は、カンマ(
,)で区切ります。
アカウント ID の確認方法:
- Chatwork 公式ヘルプページ「アカウント ID を確認する」の手順に従って確認できます。
簡単な手順:
- Chatwork のウェブサイトにログインします。
- 画面右上のアイコンをクリックし、「アカウント設定」を選択します。
- 「プロフィール」タブを開くと、「アカウント ID」が表示されています。
ルーム ID の確認方法:
- Chatwork 公式ヘルプページ「ルーム ID を確認する」の手順に従って確認できます。
簡単な手順:
- Chatwork のウェブサイトでルームを開きます。
- ブラウザのアドレスバーに表示される URL の末尾の数字がルーム ID です。
例:
https://www.chatwork.com/#!rid00000の00000部分がルーム ID です。
-
-
プログラムの実行:
Windows の方:
- 「Chatwork 自動既読」フォルダ内の
chatwork_auto_read-Windows.exeをダブルクリックします。 - 「Windows によって PC が保護されました」という警告が出た場合は、「詳細情報」をクリックし、「実行」を選んでください。
Mac の方:
- 「ターミナル」アプリを開きます(アプリケーション → ユーティリティ → ターミナル)。
- 以下のコマンドを順番に入力します(各行を入力後、Enter キーを押します):
cd デスクトップ/Chatwork自動既読 chmod +x ./chatwork_auto_read-macOS ./chatwork_auto_read-macOS - 「開発元を確認できないため開けません」という警告が出た場合は、「システム環境設定」→「セキュリティとプライバシー」から、「このまま開く」を選択してください。
Linux の方:
- ターミナルを開きます。
- 以下のコマンドを順番に入力します(各行を入力後、Enter キーを押します):
cd ~/デスクトップ/Chatwork自動既読 chmod +x ./chatwork_auto_read-Linux ./chatwork_auto_read-Linux
- 「Chatwork 自動既読」フォルダ内の
注意: プログラムを初めて実行する際、お使いのパソコンのセキュリティ設定により警告が表示される場合があります。これは正常な動作です。上記の手順に従って許可を与えてください。
詳細な API ドキュメントはこちらでご覧いただけます。
- 言語: Rust 1.70+
- 非同期処理: tokio
- HTTP 通信: reqwest
- シリアライゼーション: serde
- 設定管理: config
- ログ管理: log, env_logger
- エラー処理: anyhow, thiserror
- 非同期トレイト: async-trait
- テスト: mockall
- 効率的な非同期処理: tokio を使用した高性能な非同期処理
- 堅牢なエラーハンドリング: anyhow と thiserror を用いた包括的なエラー管理
- レート制限対応: API レート制限に対する自動再試行機能
- テスト駆動開発: mockall を使用した単体テストの実装
-
リポジトリのクローン:
git clone https://github.com/sano-suguru/chatwork_auto_read.git cd chatwork_auto_read -
依存関係のインストール:
cargo build
-
config/default.tomlファイルを作成:[chatwork] api_token = "YOUR_CHATWORK_API_TOKEN" exclude_account_ids = ["TARGET_ID_1", "TARGET_ID_2"] exclude_room_ids = [ROOM_ID_1, ROOM_ID_2]
-
必要に応じて環境別の設定ファイル(例:
config/production.toml)を作成
基本的な実行:
./chatwork_auto_read環境別の設定を使用:
RUN_MODE=production ./chatwork_auto_readログレベルの調整:
RUST_LOG=debug ./chatwork_auto_read単体テストの実行:
cargo testsrc/
├── main.rs # アプリケーションのエントリーポイント
├── lib.rs # ライブラリのエントリーポイント
├── client/
│ └── chatwork.rs # Chatwork API クライアント
├── models/
│ ├── message.rs # メッセージモデル
│ └── room.rs # ルームモデル
├── error.rs # エラー定義
├── settings.rs # 設定管理
├── processor.rs # メッセージ処理ロジック
└── utils.rs # ユーティリティ関数(ログ設定など)
- モジュラー設計: 機能ごとに分離されたモジュール構造
- 非同期プログラミング:
async/awaitを活用した効率的な非同期処理 - エラーハンドリング: カスタムエラー型と
Resultを用いた包括的なエラー管理 - 設定の柔軟性: 環境変数と設定ファイルを組み合わせた適応性の高い設定システム
- API レート制限対策: 指数バックオフアルゴリズムによる再試行メカニズム
- ログ管理: 詳細なログ記録による運用性の向上
- テスト駆動開発: モックを使用した包括的な単体テスト
- スキップロジック: 特定の条件に基づいてメッセージ処理をスキップする機能
- CI/CD パイプラインの構築
- パフォーマンスの最適化
- より詳細なドキュメンテーション
- コードカバレッジの向上
このプロジェクトは MIT ライセンス の下で公開されています。
- 👨💻 開発者: @sano-suguru