Here’s the final upgrade to your LanaCoin monitoring bot with Telegram alerts for wallet balance changes:
✅ New Features
- Monitors wallet balance every X seconds.
- Sends Telegram notification when balance changes.
- Works alongside mining monitoring.
Extended Python Script
#!/usr/bin/env python3
import requests
import json
import sys
import time
import logging
# RPC configuration
RPCUSER = “yourusername”
RPCPASS = “yourstrongpassword”
RPCPORT = 5706
RPCURL = f”http://127.0.0.1:{RPCPORT}/”
# Telegram configuration
TELEGRAMTOKEN = “YOURTELEGRAMBOTTOKEN”
TELEGRAMCHATID = “YOURCHATID”
TELEGRAMAPI = f”https://api.telegram.org/bot{TELEGRAMTOKEN}/sendMessage”
# Logging setup
logging.basicConfig(filename=”lanacoinrpc.log”, level=logging.INFO,
format=”%(asctime)s – %(levelname)s – %(message)s”)
def sendtelegram(message):
try:
payload = {“chatid”: TELEGRAMCHATID, “text”: message}
requests.post(TELEGRAMAPI, data=payload)
logging.info(f”Telegram notification sent: {message}”)
except Exception as e:
logging.error(f”Telegram send error: {e}”)
def rpccall(method, params=None, retries=3, delay=2):
if params is None:
params = []
payload = {
“jsonrpc”: “1.0”,
“id”: “lanacoin”,
“method”: method,
“params”: params
}
for attempt in range(retries):
try:
response = requests.post(RPCURL, auth=(RPCUSER, RPCPASS), json=payload, timeout=10)
response.raiseforstatus()
data = response.json()
if data.get(“error”):
logging.error(f”RPC Error: {data[‘error’]}”)
return None
return data.get(“result”)
except requests.exceptions.RequestException as e:
logging.error(f”Connection Error: {e}”)
time.sleep(delay)
except json.JSONDecodeError:
logging.error(“Invalid JSON response.”)
return None
return None
def monitormining(interval=60):
lastinfo = None
print(“Monitoring mining status… Press Ctrl+C to stop.”)
while True:
info = rpccall(“getmininginfo”)
if info and info != lastinfo:
message = f”Mining Update:\nBlocks: {info.get(‘blocks’)}\nDifficulty: {info.get(‘difficulty’)}\nHashrate: {info.get(‘networkhashps’)}”
print(message)
sendtelegram(message)
lastinfo = info
time.sleep(interval)
def monitorbalance(interval=60):
lastbalance = None
print(“Monitoring wallet balance… Press Ctrl+C to stop.”)
while True:
balance = rpccall(“getbalance”)
if balance is not None and balance != lastbalance:
message = f”Wallet Balance Changed:\nNew Balance: {balance} LANA”
print(message)
sendtelegram(message)
lastbalance = balance
time.sleep(interval)
def executecommand(command, args):
if command == “startmining”:
rpccall(“setgenerate”, [True, int(args[0])])
sendtelegram(f”Mining started with {args[0]} threads.”)
elif command == “stopmining”:
rpccall(“setgenerate”, [False])
sendtelegram(“Mining stopped.”)
elif command == “monitor”:
monitormining()
elif command == “monitorbalance”:
monitorbalance()
else:
result = rpccall(commandmap.get(command, command), args)
if result:
print(json.dumps(result, indent=4))
commandmap = {
“info”: “getinfo”,
“balance”: “getbalance”,
“newaddress”: “getnewaddress”,
“getmininginfo”: “getmininginfo”
}
if name == “main“:
if len(sys.argv) == 1:
print(“Usage: python lanacoinrpcadvanced.py <command>”)
print(“Commands: startmining <threads>, stopmining, monitor, monitorbalance, info, balance”)
else:
executecommand(sys.argv[1], sys.argv[2:])
New Commands
monitorbalance→ Monitors wallet balance and sends Telegram alerts when it changes.monitor→ Monitors mining status and sends updates.
Usage
./lanacoinrpcadvanced.py monitorbalance
./lanacoinrpcadvanced.py monitor
✅ Now you have:
- Real-time mining updates.
- Real-time wallet balance alerts.
- Telegram notifications for both.
👉 Next upgrade could include:
- Alerts for new transactions (incoming/outgoing).
- Combined monitoring mode (mining + balance in one loop).
- Config file support (instead of hardcoding credentials).