Приветствую, я написал скрипт который автоматически списывает поступившие TRX на счет кошелька в сети "tron", скрипт работает с мультиподптсью (У вас должна быть включена функция Multi-Sign). В начале кода вам нужно добавить свои значения такие как: 2 приватных ключа, адрес отправителя, адрес получателя, токен телеграм бота, ваш user_id, апи ключь с сайта тронгрид. Скрипт далеко не идеал, есть куда приложить руки и допилить функционал - (возможно я этим займусь и выложу) надеюсь кому-то пригодится.
Не ругайтесь на плохой код, я не гуру программист
Не ругайтесь на плохой код, я не гуру программист
Python:
import time
import requests
from art import tprint
from notifiers import get_notifier
from tronpy import Tron
from tronpy.keys import PrivateKey
from tronpy.providers import HTTPProvider
private_key = '' # ПЕРВЫЙ ПРИВАТНЫЙ КЛЮЧ КОШЕЛЬКА
private_key2 = '' # ВТОРОЙ ПРИВАТНЫЙ КЛЮЧ КОШЕЛЬКА
from_address = '' # АДРЕС ОТПРАВИТЕЛЯ
to_address = '' # АДРЕС ПОЛУЧАТЕЛЯ
api_key = '' # АПИ КЛЮЧ С САЙТА trongrid.io
bot_key = '' # ТОКЕН БОТА
user_id = '' # ВАШ ЮЗЕР ID, МОЖНО ПОЛУЧИТЬ В БОТЕ get my id
# Set provider and client(Tron)
provider = HTTPProvider(api_key=api_key)
client = Tron(provider, network='mainnet') # network selection
# # Set privete key wallet.
priv_key1 = PrivateKey(bytes.fromhex(private_key))
priv_key2 = PrivateKey(bytes.fromhex(private_key2))
def get_new_transaction(api_key, addr):
""" This function requests new transactions and processes them """
try:
query_time = 2
global txid, f_txid, amount
url = f'https://api.trongrid.io/v1/accounts/{addr}/transactions?only_to=true&limit=1'
headers = {
'Content-Type': "application/json",
'TRON-PRO-API-KEY': api_key
}
response = requests.get(url=url, headers=headers)
for data in response.json().get('data', []):
o = data.get('raw_data', {})
con = o['contract'][0]['parameter']['value']
f_amount = con.get('amount', [])
f_txid = data.get('txID', [])
while True:
url = f'https://api.trongrid.io/v1/accounts/{addr}/transactions?only_to=true&limit=1'
headers = {
'Content-Type': "application/json",
'TRON-PRO-API-KEY': api_key
}
response = requests.get(url=url, headers=headers)
for data in response.json().get('data', []):
o = data.get('raw_data', {})
con = o['contract'][0]['parameter']['value']
amount = con.get('amount', [])
txid = data.get('txID', [])
if txid != f_txid:
if amount > 1:
f_txid = txid
print("Новая транзакция", amount, "TRX", txid, "txID")
trx = amount / 10 ** 6
# sending a notification in a telegram
tg = get_notifier('telegram')
tg.notify(token=bot_key, chat_id=user_id,
message=f'Новая транзакция: {trx} TRX\n '
f'{txid} txID')
# set the transaction fee
free_amount = amount - 1_400_000
send_multi_sign_trx(amount=free_amount)
time.sleep(query_time)
# return amount
except Exception as _ex:
print("Ошибка при получении новой транзакции, смотри логи")
# sending a notification in a telegram
tg = get_notifier('telegram')
tg.notify(token=bot_key, chat_id=user_id,
message="Ошибка при получении новой транзакции, возможны сетевые проблемы на сервере.")
def send_multi_sign_trx(amount):
""" This function implements the method of sending a transaction Multi-Sign TRX """
global responce
try:
# create a transaction object and sign it with two keys
transaction = client.trx.transfer(from_address, to_address, amount).build(10)
segn1 = transaction.sign(priv_key1)
segn2 = transaction.sign(priv_key2)
# to get the id of the transaction to be sent
id_tx = transaction.txid
# send transaction
responce = transaction.broadcast().wait()
if id_tx is not None:
print("Транзакция успешно отправлена")
# sending a notification in a telegram
tg = get_notifier('telegram')
tg.notify(token=bot_key, chat_id=user_id,
message=f"Транзакция успешно отправлена {id_tx} txID")
except Exception as _ex:
print("Ошибка при отправки транзакции, см, логи")
# sending a notification in a telegram
tg = get_notifier('telegram')
tg.notify(token=bot_key, chat_id=user_id,
message=f"Ошибка при отправки транзакции, смотри логи {responce}")
if __name__ == '__main__':
get_new_transaction(api_key=api_key, addr=from_address)
# send_trx(from_address, to_address, amount)