0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Piで構築する、Telegramメッセージの「既読回避」&「永続保存」アーカイブシステム

0
Last updated at Posted at 2026-03-26

■ はじめに

Telegramは便利ですが、以下のような悩みはありませんか?

  • 「メッセージを読みたいけど、今は既読をつけたくない」
  • 「送信者が後から消したり編集したりしたメッセージも、元の内容を確認したい」

そこで、Raspberry Piを24時間稼働させ、Python(Telethonライブラリ)を使用してバックグラウンドで全メッセージを監視・保存・転送するシステムを構築しました。

■ 本システムのメリット

  1. 既読回避(ステルス閲覧)
    • API経由でメッセージを取得し、自分専用の「アーカイブ用チャンネル」に転送します。
    • 公式アプリのチャット画面を開かずに内容を確認できるため、相手に既読をつけません。
  2. 削除・編集の証拠保持
    • メッセージが削除・編集されても、SQLiteに保存された元データから復元してログを再投稿します。
  3. マルチデバイス・マルチアカウント運用
    • 複垢をアーカイブチャンネルの管理者にすれば、本垢をログアウトしていても安全にログを追えます。

■ システム構成

  • ハードウェア: Raspberry Pi (OS: Raspberry Pi OS)
  • 言語: Python 3 (venv)
  • 主要ライブラリ: Telethon, PyYAML, SQLite3
  • 常駐管理: systemd
    Raspberry Pi 4 / Python 3.9 で動作確認済み

ディレクトリ構成

設定ファイルと実行ファイルを分離し、管理しやすくしています。

■ 技術的なポイント:削除検知の仕組み

メッセージが削除された際、通常は内容も消えてしまいますが、本システムでは受信時にメッセージIDをSQLiteへ保存しています。
削除イベントが発生した瞬間にDBから内容を引っ張り出し、アーカイブチャンネルへ「削除されました」という通知と共に元の内容を投稿します。
Telethonの events.MessageDeleted では削除されたIDしか取得できませんが、事前に受信メッセージをSQLiteに保存しておくことで、IDを照合して元のテキストを呼び出しています。これにより、送信者が『送信取消』をしてもアーカイブ側には残る仕組みです。

■ ソースコード・詳細な設定方法

GitHubにて、設定ファイルのテンプレートやsystemdのユニットファイルを含め公開しています。

GitHubリポジトリ:

■ おわりに

ラズパイに常駐させておくだけで、自分だけの「消えないログサーバー」が手に入ります。
設定も config.yaml を書き換えるだけで複数のユーザーやチャンネルに対応可能です。
詳細はGitHubのREADMEを参照してください。

ディレクトリ構成

設定ファイルと実行ファイルを分離し、管理しやすくしています。
リポジトリ内の config.yaml.example を config.yaml にリネームし、自分のAPI IDやチャンネルIDを記入してください。IDの調査には同梱の get_ids.py が便利です。

tg-archiver/
├── archiver.py          # DM監視用メインスクリプト
├── channel_archiver.py  # チャンネル監視用メインスクリプト
├── config.yaml.example  # 設定ファイルのテンプレート
├── get_ids.py           # 対象のIDを調べるための補助ツール
└── README.md            # セットアップ手順書
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?