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