EH Forwarder Bot の紹介#
EH Forwarder Bot (EFB)は、複数のプラットフォーム間でメッセージを転送し、アカウントをリモートで制御できる拡張可能なメッセージトンネルチャットボットフレームワークです。
要するに、このプロジェクトを使用して WeChat のメッセージを Telegram に転送しますが、EFBだけでは不十分です。Telegram で WeChat のメッセージを送受信するには、efb-telegram-master(ETM)とefb-wechat-slave(EWS)も必要です。
使用上の注意#
- WeChat アカウントはWeChat ウェブ版にログインできる必要があります。ログインできない場合は、あきらめてください。
- ユーザーからの報告によると、WeChat ウェブ版のログインが Tencent によって禁止される場合があります。原文は以下の通りです:
2017 年中旬以降、ユーザーから WeChat ウェブ版のログインが Tencent によって禁止されたとの報告が相次いでいます。これは、どの方法で WeChat ウェブ版にログインしても「現在のログイン環境が異常です。アカウントの安全のため、一時的に Web WeChat にログインできません。モバイルクライアントまたは Windows WeChat からログインできます」といったメッセージが表示されることを示しています。ほとんどのユーザーは、禁止された後 1 日から 3 ヶ月以内に解除されますが、解除にかかる時間はユーザーによって異なります。観測によると、使用中に禁止されるユーザーは約 1 割未満です。この禁止は他のクライアントのログインには影響しません。現在、禁止の理由は明確ではありません。
一方で、2017 年中旬以降に新規登録された WeChat ユーザーは WeChat ウェブ版を使用できないという現象もあります。初めて使用する前に、WeChat ウェブ版にアクセスしてこの機能が正常に使用できることを確認してください。アカウントがこの機能を使用できない場合は、他のアカウントを試してみてください。
ウェブ版ログインに要件がある場合は、このチャネルの使用に注意してください。詳細な関連情報はissue #7を参照してください。
デプロイチュートリアル#
サービスをデプロイするには、完全な Linux サーバーが必要です。以下は Debian 系のディストリビューションを例に説明します。
Telegram ボットの申請#
Telegram
で@BotFather
と対話を開始します。新しいボット
を作成するために/newbot
を送信し、その際にボットの名前とユーザー名(ユーザー名は bot で終わる)を指定する必要があります。- 作成が完了すると、
@BotFather
が数字:英字
形式の HTTP API(例:123123123:WERGadsgaeDFGAwetfGq
)を提供しますので、それを保存しておきます。
プライバシーと情報の安全を保護するために、ボットのユーザー名やキーを他の人に提供しないでください。これにより、チャット情報の漏洩などのリスクが生じる可能性があります。
完了後、ボットのさらなる設定が必要です。
@BotFather
に/setprivacy
を送信し、先ほど作成したボットのユーザー名を選択し、「無効」を選択します。@BotFather
に/setjoingroups
を送信し、先ほど作成したボットのユーザー名を選択し、「有効」を選択します。@BotFather
に/setcommands
を送信し、先ほど作成したボットのユーザー名を選択し、以下の内容を送信します:
help-コマンドリストを表示します。
chat-チャットヘッダーを生成します。
rm-リモートチャットからメッセージを削除します。
link-リモートチャットをグループにリンクします。
unlink_all-グループ内のすべてのリモートチャットのリンクを解除します。
info-現在のTelegramチャットの情報を表示します。
extra-チャンネルから他の機能にアクセスします。
update_info-リンクされたTelegramグループの更新情報。
これで Telegram ボットが作成されました。ボットにアイコンを設定する必要がある場合は、/setuserpic
コマンドを使用できます。
Telegram ID の取得#
Telegram
で@userinfobot
を検索し、/start
をクリックすると、あなたの Telegram ID(一連の数字:Chat ID)を取得できます。
デプロイの開始#
まず、Debian 系のディストリビューションがインストールされた VPS、または完全なLinuxシステム
をインストールできる、24時間
電源が切れない、安定したネットワークを持つデバイスをサーバーとしてサービスをデプロイする必要があります。
例えば、Raspberry Pi や、root 権限のある使わなくなった Android スマートフォンを使用して、Linux Deploy を通じて Linux ディストリビューションをインストールすることができます。理論的には root 権限がなくても Termux を使用して完全な Linux 環境をインストールしてサービスをデプロイできます
禁止された使用法。
さらに、サーバーは外部ネットワークにアクセスできる必要があります。Telegram は外部ネットワークへのアクセスが必要ですので、サーバーが外部ネットワークにアクセスできない場合は、ETMを使用してプロキシを指定して実行することもできます。後で説明します。
依存関係のインストール#
- 以下のすべてのコマンドは
root
ユーザーで実行するか、sudo
を使用して権限を昇格させる必要があります。
# まず更新します
apt update -y && apt upgrade -y
# 必要な依存関係とツールをインストールします
apt install python3 python3-pip python3-setuptools python3-yaml ffmpeg libcairo2-dev libcairo2 -y
メインのインストール#
pip3 install ehforwarderbot efb-telegram-master efb-wechat-slave
pip3 install --upgrade Pillow
# オプションのプラグインで、tgのステッカーをWeChatに送信できます。インストールをお勧めします。
pip3 install "efb-telegram-master[tgs]"
EFB_設定ファイル#
/etc/ehforwarderbot/profiles/wechat/config.yaml
を作成し、以下の内容を書き込みます:
master_channel: blueset.telegram
slave_channels:
- blueset.wechat
#flags部分は実験的機能です。詳細な機能についてはドキュメントを参照してください:https://github.com/ehForwarderBot/efb-wechat-slave#experimental-features
flags:
delete_on_edit: true
#メッセージを編集する代わりに撤回して再送信します
ETM_設定ファイル#
/etc/ehforwarderbot/profiles/wechat/blueset.telegram/config.yaml
を作成し、以下の内容を書き込みます:
token: "" #""の中に以前にBotFatherから取得したAPIを入力します
admins:
- 1234 #上記で取得した個人のTelegram IDに数字を変更します
#- 1279136259 #複数のtgアカウントを使用したい場合は、ここに2つ目または複数のIDを追加し、先頭の#を削除します
#flags部分は実験的機能です。詳細な機能についてはドキュメントを参照してください:https://github.com/ehForwarderBot/efb-telegram-master#experimental-flags
flags:
send_image_as_file: true
#すべての画像メッセージをファイルとして送信し、アクティブメッセージの画像圧縮を防ぎます。より多くのトラフィックが必要ですが、falseに変更できます
animated_stickers: true
#アニメーションステッカーの実験的サポートを有効にします。この依存関係はチュートリアルの依存関係に含まれています
default_media_prompt: text
#画像/ビデオ/ファイルメッセージにタイトルがない場合のプレースホルダーテキストです。
注意!サーバーが外部ネットワークにアクセスできない場合は、ETM 専用のプロキシを指定できます!/etc/ehforwarderbot/profiles/wechat/blueset.telegram/config.yaml
ファイルの底部に以下の内容を追加するだけです:
request_kwargs:
# ...
proxy_url: http://PROXY_HOST:PROXY_PORT/
# オプション、認証が必要な場合:
username: PROXY_USER
password: PROXY_PASS
上記は http プロキシの場合で、socks5 プロキシが必要な場合は、追加の Python パッケージが必要です:
pip install python-telegram-bot[socks]
次に、以下の内容を使用します:
request_kwargs:
# ...
proxy_url: socks5://URL_OF_THE_PROXY_SERVER:PROXY_PORT
# オプション、認証が必要な場合:
urllib3_proxy_kwargs:
username: PROXY_USER
password: PROXY_PASS
これで、必要なプログラムと設定ファイルがすべて準備完了です。残るはプロセス管理です。
systemd デーモンの作成#
/etc/systemd/system/efb@.service
を作成し、以下の内容を書き込みます:
[Unit]
Description=EFBインスタンスのプロファイル %i
Documentation=https://github.com/blueset/ehForwarderBot
Wants=network-online.target
After=network-online.target
[Service]
PrivateTmp=true
ExecStart=/usr/bin/python3 -m ehforwarderbot -p %i
Environment=EFB_DATA_PATH=/etc/ehforwarderbot LANG=zh_CN.UTF-8
TimeoutStopSec=10
Restart=on-failure
[Install]
WantedBy=multi-user.target
実行#
systemctl start efb@wechat
を使用してサービスを起動します
journalctl -u efb@wechat -e
を使用して出力を確認し、下部の QR コードリンクを開いて WeChat でスキャンしてログインします
systemctl enable efb@wechat
を使用して自動起動を設定します
終了#
これで、サービスの構築が完了しました。tg で WeChat を送受信するのは本当に楽しいです。tg の膨大なステッカーパックを手に入れ、今では WeChat でのスタンプバトルで誰にも負けません(笑)