メモ:Telegram - 特定チャンネル転送を消すBot

公開日

原文言語: 中国語 。 AI翻訳: 英語 日本語


刷屏禁止~


刷屏がうざい

グループで他チャンネルからの転送が多い。1つで1画面埋まるようなメッセージを頻繁に転送してくるので、うざい。
見てみると転送しているのは大体2〜3アカウントで、転送元も1〜2チャンネル。たぶんボット。

解決策:アカウントかチャンネル、どちらかをbanする。

面倒を恐れない精神で、特定チャンネルからの転送メッセージを削除するTelegramボットを作ってみる。

輪を探す

Googleで探してもなかなか見つからない。
そのうち「GitHubで探す方が早い」と思って探したら、これを見つけた: Tooruchan / Anti-Forward-Bot

作者が使い方を書いてくれている。
ただ説明が短く、自分みたいな初心者には少し難しかった。少し研究して、なんとかデプロイできた。

以下は手順。

手順

Botを申請

tgで @BotFather にDMしてBotを作る。
案内に従って入力するとtokenがもらえる(パスワード並みに重要なので漏らさない)。
グループでBotを使うにはprivacy modeをオフにする必要がある。方法はGitHubページに書いてある。

appを申請

(何に使うのかよく分からないけど、言われた通りにやる)

Telegram - API Settings でapplicationを申請する。
フォームの URLplatform が何か分からず適当に書いた。
申請後 API HashAPI ID が見られる。

サービスをデプロイ

Tooruchan / Anti-Forward-Bot の通りにやる。

  • pip3 install -U pyrogram tgcrypto
    Telegram製(?)のフレームワークを入れる(何なのかは不明)

  • git clone https://github.com/Tooruchan/Anti-Forward-Bot.git
    cloneして cd

  • vim config.json
    設定ファイルを編集し、bot Token API Hash API ID を入れる

  • vim channels.json
    channel id の取り方をいくつか試したが、あまりうまくいかなかった。
    その代わり、デバッグ中にこういう方法を見つけた:

    • python3 bot.py でサービスを動かす(Pyrogramの説明: Get Pyrogram Real Fast
    • tgで小さいグループを作ってBotを入れる
    • ブロックしたいチャンネルの投稿をグループに転送する
    • サーバー側の標準出力に解析結果が出て、その中に forward_from_chat がある
    Terminal window
    "forward_from_chat": {
    "_": "pyrogram.Chat",
    "id": -1001232395606,
    "type": "channel",
    "is_verified": false,
    "is_restricted": false,
    "is_scam": false,
    ...
    }
    • "id": -1001232395606channel id なので、設定ファイルに入れる

バックグラウンド実行

screen -dmS anti_forward_bot python3 bot.py
テストOKなら常駐させる。


技術力が低くて途中で何回か踏んだが、最終的には動いた。よし。


screenよく使うコマンド

最近 screen でバックグラウンド実行を何回かしたので、コマンドだけメモ。

Terminal window
screen -ls
screen -r process_id
screen -dmS session_name command

参考: How To Use Linux Screen