- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试完成电报机器人,它会在几个命令后以消息响应......失去了尝试我可以单独解决这个问题的任何希望。那些带有预定义消息的命令已经完成,并且工作起来就像一个魅力。但现在我陷入了/price 命令,该命令应该在来自 coinmarket API 响应的消息中显示硬币值(value)。
我尝试了很多变体,但以下结果总是调用 API 调用错误:或类似 [object Object] 的消息..
ALQO: $0.0443407142 | 9.73% 🙂
ETH: 0.000313592 | 10.14% 🙂
BTC: 0.0000107949 | 9.5% 🙂
Cap: $2,545,718
上面的文字是来自机器人的正确响应...不幸的是,使用 CMC 的免费 API,我只能用美元定价,所以正确的答案应该是
Coinname: Price | Change%
Cap: Marketcap
我的/price 命令代码
//This is /price command code
'use strict';
const Telegram = require('telegram-node-bot');
const rp = require('request-promise');
const requestOptions = {
method: 'GET',
uri: 'https://pro-
api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?
id=3501&convert=USD',
headers: {
'X-CMC_PRO_API_KEY': 'MYFREEAPIKEYFROMCMC'
},
json: true,
gzip: true
};
rp(requestOptions).then(response => {
console.log('API call response:', response['data'][3501]);
}).catch((err) => {
console.log('API call error:', err.message);
});
class PriceController extends Telegram.TelegramBaseController {
PriceHandler($) {
rp(requestOptions).then(response => {
console.log('API call response:', response['data'][3501]);
$.sendMessage('Cryptosoul: price', response['data']['USD']['price']
[3501]);
}).catch((err) => {
$.sendMessage('API call error:', err.message);
});
}
get routes() {
return {
'priceCommand': 'PriceHandler'
};
};
}
module.exports = PriceController;
在 Node index.js之后从API响应(打开机器人,(来自Visual Studio终端的消息)
API call response: { id: 3501,
name: 'CryptoSoul',
symbol: 'SOUL',
slug: 'cryptosoul',
circulating_supply: 143362580.31,
total_supply: 499280500,
max_supply: null,
date_added: '2018-10-25T00:00:00.000Z',
num_market_pairs: 3,
tags: [],
platform:
{ id: 1027,
name: 'Ethereum',
symbol: 'ETH',
slug: 'ethereum',
token_address: '0xbb1f24c0c1554b9990222f036b0aad6ee4caec29' },
cmc_rank: 1194,
last_updated: '2019-04-01T23:03:07.000Z',
quote:
{ USD:
{ price: 0.000188038816143,
volume_24h: 11691.5261174775,
percent_change_1h: 0.29247,
percent_change_24h: 0.0222015,
percent_change_7d: 4.69888,
market_cap: 26957.72988069816,
last_updated: '2019-04-01T23:03:07.000Z' } } }
触发/price 命令后出现的消息“API调用错误:”“[对象对象]”“运行 Node index.js时出错(错误代码)”Chat with Bot
最佳答案
正如我所见,您在这里错误地访问了生成的 json 响应对象:
$.sendMessage('Cryptosoul: price', response['data']['USD']['price']
[3501])
只需漂亮地打印响应对象即可提供访问某些属性的正确方法。
{
"status": {
"timestamp": "2019-04-02T08:38:09.230Z",
"error_code": 0,
"error_message": null,
"elapsed": 14,
"credit_count": 1
},
"data": {
"3501": {
"id": 3501,
"name": "CryptoSoul",
"symbol": "SOUL",
"slug": "cryptosoul",
"circulating_supply": 143362580.31,
"total_supply": 499280500,
"max_supply": null,
"date_added": "2018-10-25T00:00:00.000Z",
"num_market_pairs": 3,
"tags": [],
"platform": {
"id": 1027,
"name": "Ethereum",
"symbol": "ETH",
"slug": "ethereum",
"token_address": "0xbb1f24c0c1554b9990222f036b0aad6ee4caec29"
},
"cmc_rank": 1232,
"last_updated": "2019-04-02T08:37:08.000Z",
"quote": {
"USD": {
"price": 0.000201447607597,
"volume_24h": 12118.3983544441,
"percent_change_1h": 1.48854,
"percent_change_24h": 6.88076,
"percent_change_7d": 12.4484,
"market_cap": 28880.04882238228,
"last_updated": "2019-04-02T08:37:08.000Z"
}
}
}
}
}
因此我们可以看到 price
字段位于 USD
对象下,而该对象本身位于 quote
对象下,而您的代码中缺少该对象。
获取它的正确方法是:
const price = response["data"][3501]["quote"]["USD"]["price"];
PriceHandler 代码:
PriceHandler($) {
rp(requestOptions)
.then((response) => {
const price = response["data"][3501]["quote"]["USD"]["price"];
$.sendMessage("Cryptosoul: price", price);
})
.catch((err) => {
console.error("API call error:", err.message);
});
}
关于node.js - 如何将 coinmarketcap API 中的值添加到电报消息中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55465087/
下面是我为 coinmarketcap.com 提供的 API。我正在尝试提取当前价格并将其放入表格中。由于某种原因,此代码无法正常工作,我无法找出错误。非常感谢任何帮助。
只是通过 API 获取一些数据的简单测试是行不通的。我使用了他们自己网站上的 PHP 示例,但没有打印任何结果。来源:https://pro.coinmarketcap.com/api/v1#sect
只是通过 API 获取一些数据的简单测试是行不通的。我使用了他们自己网站上的 PHP 示例,但没有打印任何结果。来源:https://pro.coinmarketcap.com/api/v1#sect
Coinmarketcap 正在将他们的 API 更新到版本 2。你能帮我访问 JSON 数组结构吗,因为它与 API 版本 1 不同?数组路径是数据、#-of-crypto-token、报价、美元、
这个问题已经存在: How to fetch data from coinmarketcap API [duplicate] 关闭 3 年前。 我正在尝试从 coinmarketcap 获取数据,我
看起来信息是一个带有嵌入字典的列表。我是初学者,不完全了解如何从列表/字典中提取信息。 经验: 'data': [{ 'id': 1, 'name': 'Bitcoin',
我正在学习一个显示加密货币价格的应用教程,但我在使用新 API 时遇到了问题。下面的代码仅来自教程,导师使用的是旧的 coinmarketcap API。 Coinmarketcap 已经迁移到一个新
我只想获得例如的“price_usd”值比特币来自 https://coinmarketcap.com/api/我试过下面这段代码,但我不知道如何只获得这个值。我使用的是 Python 3.5.3。如
我正在尝试学习如何使用 Python、requests 和 BeautifulSoup 从 Coinmarketcap.com 网络抓取 BTC 历史数据。 我想解析以下内容: 1)日期 2)关闭 3
我正在尝试完成电报机器人,它会在几个命令后以消息响应......失去了尝试我可以单独解决这个问题的任何希望。那些带有预定义消息的命令已经完成,并且工作起来就像一个魅力。但现在我陷入了/price 命令
我正在尝试集成coinmarketcap api但无法真正获取数据。我注册了,获取了 API key ,并编写了以下方法来获取数据: let getPostsList = async () => {
这里没有编程经验...我一直在阅读一些与此相关的问题,但无法正确解决。我将 React 用于一个小型应用程序,并希望从 API(本例中为 Coinmarketcap)获取数据,但它需要一个 key ,
我需要使用 Java 从页面顶部提取货币市值(例如:市值:$306,020,249,332),请参阅附图。 我在Java Eclipse中使用了jsoup库,但没有提取卷。 Jsoup 仅提取其他属性
这里没有编程经验...我一直在阅读一些与此相关的问题,但无法正确解决。我将 React 用于一个小型应用程序,并希望从 API(本例中为 Coinmarketcap)获取数据,但它需要一个 key ,
我什至没有问题,甚至 刮 我定义的任意数量的页面,但它只显示每个页面的前 10 个结果 def scrape_pages(page_num): for page in range(1, page_nu
我已阅读 How to decode a nested JSON struct with Swift Decodable protocol?它没有解决我将字符串文字数字值用作根字典的特定用例。 还有
我正在使用 coinmarketcap api 用数据填充 google 工作表。 https://coinmarketcap.com/api/ 他们正在做出一些改变,这将使这变得困难。让我困惑的两个
我是一名优秀的程序员,十分优秀!