Updated show-token-balance to work with any wallet address and mint.
This commit is contained in:
parent
43be1fa192
commit
3ac729ac5c
|
@ -3,6 +3,10 @@
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import typing
|
||||||
|
|
||||||
|
from decimal import Decimal
|
||||||
|
from solana.publickey import PublicKey
|
||||||
|
|
||||||
sys.path.insert(0, os.path.abspath(
|
sys.path.insert(0, os.path.abspath(
|
||||||
os.path.join(os.path.dirname(__file__), "..")))
|
os.path.join(os.path.dirname(__file__), "..")))
|
||||||
|
@ -13,13 +17,24 @@ mango.ContextBuilder.add_command_line_parameters(parser)
|
||||||
mango.Wallet.add_command_line_parameters(parser)
|
mango.Wallet.add_command_line_parameters(parser)
|
||||||
parser.add_argument("--symbol", type=str, required=True,
|
parser.add_argument("--symbol", type=str, required=True,
|
||||||
help="symbol of the token to look up, e.g. 'ETH'")
|
help="symbol of the token to look up, e.g. 'ETH'")
|
||||||
|
parser.add_argument("--owner", type=PublicKey,
|
||||||
|
help="wallet address of the wallet owner")
|
||||||
|
parser.add_argument("--mint", type=PublicKey,
|
||||||
|
help="mint address of the token")
|
||||||
|
parser.add_argument("--decimals", type=Decimal, default=Decimal(6),
|
||||||
|
help="number of decimal places for token values")
|
||||||
args: argparse.Namespace = mango.parse_args(parser)
|
args: argparse.Namespace = mango.parse_args(parser)
|
||||||
|
|
||||||
context = mango.ContextBuilder.from_command_line_parameters(args)
|
context: mango.Context = mango.ContextBuilder.from_command_line_parameters(args)
|
||||||
wallet = mango.Wallet.from_command_line_parameters_or_raise(args)
|
wallet: mango.Wallet = mango.Wallet.from_command_line_parameters_or_raise(args)
|
||||||
|
owner_address: PublicKey = args.owner or wallet.address
|
||||||
|
|
||||||
token = context.token_lookup.find_by_symbol_or_raise(args.symbol.upper())
|
if args.mint is not None:
|
||||||
token_accounts = mango.TokenAccount.fetch_all_for_owner_and_token(context, wallet.address, token)
|
token: mango.Token = mango.Token(args.symbol, args.symbol, args.mint, args.decimals)
|
||||||
|
else:
|
||||||
|
token = context.token_lookup.find_by_symbol_or_raise(args.symbol.upper())
|
||||||
|
token_accounts: typing.Sequence[mango.TokenAccount] = mango.TokenAccount.fetch_all_for_owner_and_token(
|
||||||
|
context, owner_address, token)
|
||||||
|
|
||||||
if len(token_accounts) == 0:
|
if len(token_accounts) == 0:
|
||||||
print("No wrapped SOL accounts.")
|
print("No wrapped SOL accounts.")
|
||||||
|
|
|
@ -53,7 +53,7 @@ class TokenAccount(AddressableAccount):
|
||||||
return TokenAccount.load(context, new_account_address)
|
return TokenAccount.load(context, new_account_address)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def fetch_all_for_owner_and_token(context: Context, owner_public_key: PublicKey, token: Token) -> typing.List["TokenAccount"]:
|
def fetch_all_for_owner_and_token(context: Context, owner_public_key: PublicKey, token: Token) -> typing.Sequence["TokenAccount"]:
|
||||||
opts = TokenAccountOpts(mint=token.mint)
|
opts = TokenAccountOpts(mint=token.mint)
|
||||||
|
|
||||||
token_accounts = context.client.get_token_accounts_by_owner(owner_public_key, opts)
|
token_accounts = context.client.get_token_accounts_by_owner(owner_public_key, opts)
|
||||||
|
|
Loading…
Reference in New Issue