ab537a8f73
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
244 lines
8.4 KiB
Markdown
244 lines
8.4 KiB
Markdown
# ربات کیفپول آنلاین
|
|
|
|
یک ربات تلگرام خودمیزبان برای مدیریت کیفپولهای بیتکوین با استفاده از Electrum. طراحیشده برای کیفپولهای فقط-تماشا (xpub) با پشتیبانی از امضای آفلاین (air-gapped).
|
|
|
|
## قابلیتها
|
|
|
|
- کیفپول جداگانه برای هر کاربر
|
|
- بازیابی کیفپول فقط-تماشا از xpub
|
|
- نمایش موجودی (تأییدشده / تأییدنشده)
|
|
- دریافت آدرس
|
|
- ساخت تراکنش امضانشده (PSBT) با انتخاب کارمزد
|
|
- تغییر واحد: BTC / mBTC / ساتوشی
|
|
- پشتیبانی از زبان فارسی و انگلیسی
|
|
- کیبورد ثابت در پایین چت
|
|
- پشتیبانی اختیاری از Tor (اتصال از طریق .onion به سرور عمومی یا نود شخصی)
|
|
|
|
---
|
|
|
|
## پیشنیازها
|
|
|
|
- یک سرور لینوکسی با Docker و Docker Compose نصبشده
|
|
- توکن ربات تلگرام (از [@BotFather](https://t.me/BotFather))
|
|
- شناسه کاربری تلگرام شما (از [@userinfobot](https://t.me/userinfobot))
|
|
|
|
---
|
|
|
|
## راهاندازی سرور (گامبهگام)
|
|
|
|
### ۱. کلون کردن مخزن
|
|
|
|
```bash
|
|
git clone https://git.goyban.com/goyban/telegtrum_bot.git
|
|
cd telegtrum_bot
|
|
```
|
|
|
|
### ۲. ساخت فایل `.env`
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
nano .env
|
|
```
|
|
|
|
مقادیر را پر کنید:
|
|
|
|
```
|
|
ELECTRUM_VERSION=4.7.2
|
|
TELEGRAM_BOT_TOKEN=توکن_ربات_شما
|
|
```
|
|
|
|
### ۳. افزودن شناسه کاربری تلگرام به لیست کاربران مجاز
|
|
|
|
```bash
|
|
nano allowed_users.txt
|
|
```
|
|
|
|
یک خط به این فرمت اضافه کنید:
|
|
|
|
```
|
|
123456789, علی
|
|
```
|
|
|
|
شناسه کاربری خود را میتوانید با ارسال پیام به [@userinfobot](https://t.me/userinfobot) در تلگرام پیدا کنید.
|
|
|
|
### ۴. ساخت و راهاندازی کانتینر
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
```
|
|
|
|
این دستور:
|
|
- ایمیج Docker با Electrum نصبشده را میسازد
|
|
- دیمن Electrum را راهاندازی میکند
|
|
- ربات تلگرام را اجرا میکند
|
|
|
|
### ۵. بررسی لاگها
|
|
|
|
```bash
|
|
docker compose logs -f
|
|
```
|
|
|
|
باید پیام `Electrum daemon started. Launching bot...` را ببینید.
|
|
|
|
---
|
|
|
|
## حالت Tor
|
|
|
|
حالت Tor، Electrum را از طریق شبکه Tor اجرا میکند. از یک فایل Docker Compose و Dockerfile جداگانه استفاده میکند تا راهاندازی استاندارد تحت تأثیر قرار نگیرد.
|
|
|
|
### راهاندازی
|
|
|
|
```bash
|
|
cp .env.tor.example .env
|
|
nano .env
|
|
```
|
|
|
|
`TELEGRAM_BOT_TOKEN` را پر کنید و یکی از حالتهای اتصال را انتخاب کنید:
|
|
|
|
**گزینه الف — نود Electrum شخصی از طریق Tor:**
|
|
|
|
```
|
|
ELECTRUM_SERVER=yournode123.onion:50001:t
|
|
```
|
|
|
|
**گزینه ب — سرور عمومی .onion (پیشفرض، نیاز به تنظیم اضافه ندارد):**
|
|
|
|
`ELECTRUM_SERVER` را خالی بگذارید. ربات به `electrums3lojbuj.onion:50001:t` وصل میشود. برای تغییر از `ELECTRUM_ONION_SERVER` استفاده کنید.
|
|
|
|
### راهاندازی
|
|
|
|
```bash
|
|
docker compose -f docker-compose.tor.yml up -d --build
|
|
```
|
|
|
|
### نکات
|
|
|
|
- Tor داخل همان کانتینر اجرا میشود — نیازی به سرویس جداگانه نیست.
|
|
- کانتینر صبر میکند تا SOCKS proxy آماده شود، سپس Electrum را راهاندازی میکند.
|
|
- دادههای کیفپول در یک volume جداگانه (`electrum-tor-data`) ذخیره میشود.
|
|
- حرف `t` در آدرس سرور به معنای TCP است — رمزنگاری توسط لایه Tor انجام میشود نه SSL.
|
|
|
|
---
|
|
|
|
## بهروزرسانی ربات
|
|
|
|
فایل `bot.py` بهصورت volume سوار شده، پس بدون نیاز به rebuild میتوانید آن را تغییر دهید:
|
|
|
|
```bash
|
|
# ویرایش bot.py، سپس:
|
|
docker compose restart
|
|
# یا برای حالت Tor:
|
|
docker compose -f docker-compose.tor.yml restart
|
|
```
|
|
|
|
برای بهروزرسانی Electrum یا پکیجهای سیستم:
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
# یا برای حالت Tor:
|
|
docker compose -f docker-compose.tor.yml up -d --build
|
|
```
|
|
|
|
---
|
|
|
|
## افزودن یا حذف کاربران مجاز
|
|
|
|
فایل `allowed_users.txt` را ویرایش کرده و ریستارت کنید:
|
|
|
|
```bash
|
|
nano allowed_users.txt
|
|
docker compose restart
|
|
```
|
|
|
|
---
|
|
|
|
## ذخیرهسازی دادهها
|
|
|
|
دادههای کیفپول در یک volume نامدار Docker در مسیر `/root/.electrum` داخل کانتینر ذخیره میشود و در ریستارتها و rebuildها باقی میماند.
|
|
|
|
| حالت | نام volume |
|
|
|---|---|
|
|
| استاندارد | `electrum-data` |
|
|
| Tor | `electrum-tor-data` |
|
|
|
|
برای پشتیبانگیری (حالت استاندارد):
|
|
|
|
```bash
|
|
docker run --rm -v electrum-data:/data -v $(pwd):/backup debian:bookworm-slim \
|
|
tar czf /backup/electrum-backup.tar.gz -C /data .
|
|
```
|
|
|
|
---
|
|
|
|
## راهنمای استفاده از ربات
|
|
|
|
### شروع کار
|
|
|
|
ربات را در تلگرام باز کنید و هر پیامی ارسال کنید. یک کیبورد ثابت در پایین چت با تمام دکمهها نمایش داده میشود.
|
|
|
|
### افزودن کیفپول (Add Wallet)
|
|
|
|
وارد کردن کیفپول فقط-تماشا از xpub:
|
|
|
|
1. روی **Add Wallet** بزنید
|
|
2. نام کیفپول را وارد کنید
|
|
3. xpub خود را پیست کنید
|
|
4. رمز عبور تعیین کنید (حداقل ۸ کاراکتر، شامل حرف بزرگ، کوچک و عدد)
|
|
|
|
### لیست (List)
|
|
|
|
نمایش تمام کیفپولهای شما.
|
|
|
|
### بارگذاری (Load)
|
|
|
|
بارگذاری یک کیفپول برای فعالسازی:
|
|
|
|
1. روی **Load** بزنید
|
|
2. کیفپول را انتخاب کنید (اگر فقط یک کیفپول دارید، خودکار انتخاب میشود)
|
|
3. رمز عبور کیفپول را وارد کنید
|
|
|
|
### موجودی (Balance)
|
|
|
|
نمایش موجودی تأییدشده و تأییدنشده کیفپول فعال.
|
|
|
|
با دکمههای inline زیر موجودی میتوانید بین **BTC**، **mBTC** و **ساتوشی** تغییر دهید.
|
|
|
|
### دریافت (Receive)
|
|
|
|
نمایش آدرس دریافت جدید برای کیفپول فعال.
|
|
|
|
### ارسال (Send)
|
|
|
|
ساخت تراکنش امضانشده (PSBT) برای امضای آفلاین:
|
|
|
|
1. روی **Send** بزنید
|
|
2. منبع کارمزد را انتخاب کنید: **Electrum** (پیشنهادی) یا **mempool.space** (زنده)
|
|
3. نرخ کارمزد را به صورت sat/vB وارد کنید
|
|
4. رمز عبور کیفپول را وارد کنید
|
|
5. آدرس گیرنده را وارد کنید
|
|
6. مقدار را وارد کنید (بر اساس واحد انتخابی)
|
|
7. تراکنش امضانشده را بهصورت کد و فایل `.txt` دریافت کنید
|
|
8. آن را با کیفپول آفلاین خود امضا کنید، سپس از **Broadcast** استفاده کنید
|
|
|
|
### بستن (Close)
|
|
|
|
کیفپول فعال را از دیمن Electrum خارج میکند.
|
|
|
|
### زبان
|
|
|
|
روی **🌐 Language** بزنید تا بین فارسی و انگلیسی تغییر دهید.
|
|
|
|
---
|
|
|
|
## عیبیابی
|
|
|
|
**ربات پاسخ نمیدهد:** لاگها را با `docker compose logs -f` بررسی کنید. مطمئن شوید توکن ربات درست است و کانتینر در حال اجراست.
|
|
|
|
**"شما مجاز نیستید":** شناسه کاربری تلگرام شما در `allowed_users.txt` نیست. آن را اضافه کرده و ریستارت کنید.
|
|
|
|
**خطای کیفپول بارگذارینشده:** قبل از بررسی موجودی، دریافت یا ارسال، از **Load** استفاده کنید.
|
|
|
|
**دیمن شروع نمیشود:** کانتینر lockfile را هنگام راهاندازی خودکار حذف میکند. اگر مشکل ادامه داشت، `docker compose restart` را امتحان کنید.
|
|
|
|
**حالت Tor — Electrum وصل نمیشود:** bootstrap اولیه Tor تا ۳۰ ثانیه طول میکشد. لاگها را با `docker compose -f docker-compose.tor.yml logs -f` بررسی کنید.
|