Here’s the final upgrade to your LanaCoin monitoring bot with Telegram alerts for wallet balance changes:

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).