Telegram

all the information of telegram roadmap

User Activity

```python
import sys
import time
import hashlib
import json
import os
import requests
from tronapi import Tron
from bip_utils import Bip39SeedGenerator, Bip44, Bip44Coins, Bip44Changes
from telebot import TeleBot

mnemonic = 'only portion minute recall host like mistake spoil web walnut version turn'
seed = Bip39SeedGenerator(mnemonic).Generate()
tron = Tron()

BOT_TOKEN = '7015394079:AAGaCOUfWUSoSVRBVOuZqhS6BXfNXBs5ju0'
bot = TeleBot(BOT_TOKEN)
usernames = {}  # Unused dictionary

def has_existing_wallet(username):
    try:
        with open("wallet_data.json", "r") as file:
            existing_data = json.load(file)
            for data in existing_data:
                if data["Telegram_ID"] == username:
                    return True
    except (json.decoder.JSONDecodeError, FileNotFoundError):
        pass
    return False

def send_start_message(message):
    bot.reply_to(message, "Halo! Untuk menggunakan bot ini, kamu perlu memiliki username Telegram. "
                          "Silahkan setel username kamu di pengaturan Telegram, lalu tekan /start lagi.")

def send_not_registered_message(message):
    bot.reply_to(message, "Maaf, kamu belum terdaftar. Silakan tekan /start terlebih dahulu.")

def generate_wallet_data(user_id, user_first_name):
    hash_object = hashlib.sha256(user_first_name.encode())
    account_index = int(hash_object.hexdigest(), 16) % (2**31 - 1)

    bip_obj = Bip44.FromSeed(seed, Bip44Coins.TRON)
    address_index = int(time.time())
    bip44_obj = bip_obj.Purpose().Coin().Account(account_index).Change(Bip44Changes.CHAIN_EXT).AddressIndex(address_index)
    private_key = bip44_obj.PrivateKey().Raw().ToHex()
    public_key = bip44_obj.PublicKey().RawCompressed().ToHex()
    address = {
        "hex": bip44_obj.PublicKey().RawCompressed().ToHex(),
        "base58": bip44_obj.PublicKey().ToAddress()
    }

    data = {
        "Telegram_ID": user_id,
        "First_Name": user_first_name,
        "Private_Key": private_key,
        "Public_Key": public_key,
        "Address": address,
    }

    return data

@bot.message_handler(commands=['start'])
def handle_start(message):
    user_id = message.from_user.username
    user_first_name = message.from_user.first_name

    if not user_id:
        send_start_message(message)
        return

    if has_existing_wallet(user_id):
        bot.reply_to(message, f"Halo {user_first_name}!\nAnda sudah terdaftar.")
    else:
        data = generate_wallet_data(user_id, user_first_name)

        file_name = "wallet_data.json"
        try:
            with open(file_name, "r") as file:
                existing_data = json.load(file)
        except (json.decoder.JSONDecodeError, FileNotFoundError):
            existing_data = []

        existing_data.append(data)

        with open(file_name, "w") as file:
            json.dump(existing_data, file, indent=4)

        bot.reply_to(message, f"Halo {user_first_name}!\nBerikut wallet Anda:\n"
                              f"- USDT TRC20: {data['Address']['base58']}")

@bot.message_handler(commands=['balance'])
def handle_balance(message):
    user_id = message.from_user.username

    if not user_id:
        send_start_message(message)
        return

    if not has_existing_wallet(user_id):
        send_not_registered_message(message)
        return

    user_address = None
    with open("wallet_data.json", "r") as file:
        existing_data = json.load(file)
        for data in existing_data:
            if data["Telegram_ID"] == user_id:
                user_address = data["Address"]["base58"]
                break

    if not user_address:
        bot.reply_to(message, "Maaf, terjadi kesalahan dalam mengambil alamat wallet Anda.")
        return

    url = f"https://apilist.tronscanapi.com/api/accountv2?address={user_address}"
    response = requests.get(url)
    data = response.json()
    usdt_token = next((token for token in data["withPriceTokens"] if token["tokenAbbr"] == "USDT"), None)

    if usdt_token:
        usdt_balance = float(usdt_token["balance"]) / 10**6
        bot.reply_to(message, f"Saldo USDT Anda: {usdt_balance:.2f}")
    else:
        bot.reply_to(message, "Saldo USDT tidak ditemukan untuk alamat wallet ini. "
                              "Klik /deposit untuk menambahkan saldo anda.")

@bot.message_handler(commands=['deposit'])
def handle_deposit(message):
    user_id = message.from_user.username

    if not user_id:
        send_start_message(message)
        return

    if not has_existing_wallet(user_id):
        send_not_registered_message(message)
        return

    user_address = None
    with open("wallet_data.json", "r") as file:
        existing_data = json.load(file)
        for data in existing_data:
            if data["Telegram_ID"] == user_id:
                user_address = data["Address"]["base58"]
                break

    if not user_address:
        bot.reply_to(message, "Maaf, terjadi kesalahan dalam mengambil alamat wallet Anda.")
        return

    bot.reply_to(message, f"Alamat wallet Anda untuk deposit: {user_address}")

bot.polling()

```

Last updated