-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1773 from Lukapetro/feature/add-coinmarketcap-plugin
Feature/add coinmarketcap plugin
- Loading branch information
Showing
24 changed files
with
728 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
# @elizaos/plugin-coinmarketcap | ||
|
||
A plugin for Eliza that enables cryptocurrency price checking using the CoinMarketCap API. | ||
|
||
## Features | ||
|
||
- Real-time cryptocurrency price checking | ||
- Support for multiple cryptocurrencies (BTC, ETH, SOL, etc.) | ||
- Currency conversion (USD, EUR, etc.) | ||
- Detailed price and market data | ||
- Natural language processing for price queries | ||
|
||
## Installation | ||
|
||
```bash | ||
npm install @elizaos/plugin-coinmarketcap | ||
``` | ||
|
||
## Configuration | ||
|
||
1. Get your API key from [CoinMarketCap](https://pro.coinmarketcap.com) | ||
|
||
2. Set up your environment variables: | ||
|
||
```bash | ||
COINMARKETCAP_API_KEY=your_api_key | ||
``` | ||
|
||
3. Register the plugin in your Eliza configuration: | ||
|
||
```typescript | ||
import { CoinMarketCapPlugin } from "@elizaos/plugin-coinmarketcap"; | ||
|
||
// In your Eliza configuration | ||
plugins: [ | ||
new CoinMarketCapPlugin(), | ||
// ... other plugins | ||
]; | ||
``` | ||
|
||
## Usage | ||
|
||
The plugin responds to natural language queries about cryptocurrency prices. Here are some examples: | ||
|
||
```plaintext | ||
"What's the current price of Bitcoin?" | ||
"Show me ETH price in USD" | ||
"Get the price of SOL" | ||
``` | ||
|
||
### Supported Cryptocurrencies | ||
|
||
The plugin supports major cryptocurrencies including: | ||
|
||
- Bitcoin (BTC) | ||
- Ethereum (ETH) | ||
- Solana (SOL) | ||
- USD Coin (USDC) | ||
- And many more... | ||
|
||
### Available Actions | ||
|
||
#### GET_PRICE | ||
|
||
Fetches the current price of a cryptocurrency. | ||
|
||
```typescript | ||
// Example response format | ||
{ | ||
symbol: "BTC", | ||
price: 50000.00, | ||
currency: "USD", | ||
marketCap: 1000000000000, | ||
volume24h: 50000000000, | ||
percentChange24h: 2.5 | ||
} | ||
``` | ||
|
||
## API Reference | ||
|
||
### Environment Variables | ||
|
||
| Variable | Description | Required | | ||
| --------------------- | -------------------------- | -------- | | ||
| COINMARKETCAP_API_KEY | Your CoinMarketCap API key | Yes | | ||
|
||
### Types | ||
|
||
```typescript | ||
interface PriceData { | ||
price: number; | ||
marketCap: number; | ||
volume24h: number; | ||
percentChange24h: number; | ||
} | ||
|
||
interface GetPriceContent { | ||
symbol: string; | ||
currency: string; | ||
} | ||
``` | ||
|
||
## Error Handling | ||
|
||
The plugin includes comprehensive error handling for: | ||
|
||
- Invalid API keys | ||
- Rate limiting | ||
- Network timeouts | ||
- Invalid cryptocurrency symbols | ||
- Unsupported currencies | ||
|
||
## Rate Limits | ||
|
||
CoinMarketCap API has different rate limits based on your subscription plan. Please refer to [CoinMarketCap's pricing page](https://coinmarketcap.com/api/pricing/) for detailed information. | ||
|
||
## Support | ||
|
||
For support, please open an issue in the repository or reach out to the maintainers: | ||
|
||
- Discord: 0xspit | ||
|
||
## Links | ||
|
||
- [CoinMarketCap API Documentation](https://coinmarketcap.com/api/documentation/v1/) | ||
|
||
- [GitHub Repository](https://github.com/elizaOS/eliza/tree/main/packages/plugin-coinmarketcap) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
{ | ||
"name": "@elizaos/plugin-coinmarketcap", | ||
"version": "0.1.7-alpha.2", | ||
"main": "dist/index.js", | ||
"type": "module", | ||
"types": "dist/index.d.ts", | ||
"dependencies": { | ||
"@elizaos/core": "workspace:*", | ||
"axios": "^1.6.7", | ||
"zod": "^3.22.4" | ||
}, | ||
"devDependencies": { | ||
"tsup": "^8.3.5" | ||
}, | ||
"scripts": { | ||
"build": "tsup --format esm --dts", | ||
"dev": "tsup --format esm --dts --watch" | ||
} | ||
} |
46 changes: 46 additions & 0 deletions
46
packages/plugin-coinmarketcap/src/actions/getPrice/examples.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
import { ActionExample } from "@elizaos/core"; | ||
|
||
export const priceExamples: ActionExample[][] = [ | ||
[ | ||
{ | ||
user: "{{user1}}", | ||
content: { | ||
text: "What's the current price of Bitcoin?", | ||
}, | ||
}, | ||
{ | ||
user: "{{agent}}", | ||
content: { | ||
text: "Let me check the current Bitcoin price for you.", | ||
action: "GET_PRICE", | ||
}, | ||
}, | ||
{ | ||
user: "{{agent}}", | ||
content: { | ||
text: "The current price of BTC is 65,432.21 USD", | ||
}, | ||
}, | ||
], | ||
[ | ||
{ | ||
user: "{{user1}}", | ||
content: { | ||
text: "Check ETH price in EUR", | ||
}, | ||
}, | ||
{ | ||
user: "{{agent}}", | ||
content: { | ||
text: "I'll check the current Ethereum price in EUR.", | ||
action: "GET_PRICE", | ||
}, | ||
}, | ||
{ | ||
user: "{{agent}}", | ||
content: { | ||
text: "The current price of ETH is 2,345.67 EUR", | ||
}, | ||
}, | ||
], | ||
]; |
Oops, something went wrong.