const ccxt = require ('ccxt')
const exchange = new ccxt.bitfinex ()
Для начала вынеси строки импорта ccxt и определения биржи для работы на верхний уровень, их не нужно определять в функции ответа на сообщения, иначе это будет происходить каждый раз когда будет вызвана команда "Курс валют".
if (exchange.has['fetchTicker'])
Убери эту проверку в ccxt у биржи bitfenix есть метод fetchTicker, не нужно проверять его наличие. Этот пример просто указан в документации ибо не у всех бирж реализован такой метод.
exchange.fetchTicker ('BTC/USD','info = {last_price}')
В примере документации вторым аргументом как params передается объект, не стоит передавать в него строку. CCXT типизирована и можно залезть внутрь функции fetchTicker и посмотреть какие типы должны быть у аргументов.
Как вывести не всю информацию о курсе, а только цену, например из info:
Смотри, вот какие данные хранятся в info, просто доставай их оттуда:
info: {
mid: '16552.5', // средняя цена между минимальной покупке/продажи
bid: '16552.0', // цена моментальной продажи
ask: '16553.0', // цена моментальной покупки
last_price: '16554.0', // цена последней сделки
low: '16493.0', // минимальная цена за 24 часа
high: '16797.0', // максимальная цена за 24 часа
volume: '1153.23504823', // объем торгов в BTC за 24 часа
timestamp: '1672263150.0189922' // время запроса информации
}