I am trying to get the token symbol for a certain ERC20 token with web3js
HERE IS MY CODE
//Token ABI
var contractAddress='0xbcf9dbf8b14ed096b2ba08b7269356197fdd1b5d'
const contractABI=[{"constant": true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type": "function"},{"constant": true,"inputs": [],"name": "decimals","outputs": [{"name": "","type": "uint8"}],"payable": false,"type": "function"},{"constant": true,"inputs": [{"name": "_owner","type": "address"}],"name": "balanceOf","outputs": [{"name": "balance","type": "uint256"}],"payable": false,"type": "function"},{"constant": true,"inputs": [],"name": "symbol","outputs": [{"name": "","type": "string"}],"payable": false,"type": "function"}]
//const DAI_ABI = [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_burner","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
var tokenContract = new web3.eth.Contract(contractABI,contractAddress);
async function checkPair(args) {
const { inputTokenSymbol, inputTokenAddress, outputTokenSymbol, outputTokenAddress, inputAmount } = args
const exchangeAddress = await uniswapFactoryContract.methods.getExchange(outputTokenAddress).call()
const exchangeContract = new web3.eth.Contract(UNISWAP_EXCHANGE_ABI, exchangeAddress)
const uniswapResult = await exchangeContract.methods.getEthToTokenInputPrice(inputAmount).call()
console.table([{
'Input Token': inputTokenSymbol,
'Output Token': outputTokenSymbol,
'Input Amount': web3.utils.fromWei(inputAmount, 'Ether'),
'Uniswap Return': web3.utils.fromWei(uniswapResult, 'Ether'),
'Timestamp': moment().tz('Turkey/Istanbul').format(),
}])
}
let priceMonitor
let monitoringPrice = false
async function monitorPrice() {
if(monitoringPrice) {
return
}
console.log("Checking prices...")
monitoringPrice = true
try {
// ADD YOUR CUSTOM TOKEN PAIRS HERE!!!
await checkPair({
inputTokenSymbol: 'ETH',
inputTokenAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
outputTokenSymbol:tokenContract.symbol().call(),
outputTokenAddress: contractAddress,
inputAmount: web3.utils.toWei('1', 'ETHER')
})
} catch (error) {
console.error(error)
monitoringPrice = false
clearInterval(priceMonitor)
return
}
monitoringPrice = false
}
// Check markets every n seconds
const POLLING_INTERVAL = process.env.POLLING_INTERVAL || 3000 // 3 Seconds
priceMonitor = setInterval(async () => { await monitorPrice() }, POLLING_INTERVAL)
And this is the error I am getting:
> trading-bot@0.3.0 start /Users/Kantemirovs/price-bot
> node index.js
Listening on 5000
Checking prices...
TypeError: tokenContract.symbol is not a function
at monitorPrice (/Users/Kantemirovs/price-bot/index.js:76:39)
at Timeout._onTimeout (/Users/Kantemirovs/price-bot/index.js:95:48)
at listOnTimeout (internal/timers.js:554:17)
at processTimers (internal/timers.js:497:7)
Can someone please help me