Create a Telegram bot powered by Solana Agent Kit to interact with Solana blockchain through natural language conversations. This implementation provides a seamless way to execute blockchain operations via Telegram.
Quick Start
1. Agent Setup
# Clone the repository
npm install -g degit
degit sendaifun/solana-agent-kit/tree/main/examples/tg-bot-starter tg-agent
cd tg-agent
# Install dependencies
pnpm install
2. Environment Configuration
Create a .env.local
file:
OPENAI_API_KEY=your_openai_key
RPC_URL=your_solana_rpc_url
SOLANA_PRIVATE_KEY=your_wallet_private_key_base58
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
3. Create Telegram Bot
- Message @BotFather on Telegram
- Use
/newbot
command
- Follow instructions to create bot
- Save the bot token
Project Structure
├── app/
│ ├── api/
│ │ └── bot/
│ │ └── route.ts # Telegram webhook handler
│ ├── lib/
│ │ ├── agent.ts # Solana Agent setup
│ │ └── telegram.ts # Telegram utilities
│ └── config.ts # Configuration
├── public/
└── package.json
Implementation Steps
1. Set Up Webhook
# Using curl
curl https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/setWebhook?url=https://<your-domain>/api/bot
# Or visit in browser
https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/setWebhook?url=https://<your-domain>/api/bot
2. Local Development
# Start development server
pnpm dev
# Start ngrok tunnel
ngrok http 3000
Core Components
Webhook Handler
// app/api/bot/route.ts
export async function POST(req: Request) {
const body = await req.json();
// Initialize agent
const agent = new SolanaAgentKit(
process.env.SOLANA_PRIVATE_KEY!,
process.env.RPC_URL!,
process.env.OPENAI_API_KEY
);
// Process message
const response = await processMessage(body, agent);
return new Response(JSON.stringify(response));
}
Message Processing
async function processMessage(message: any, agent: SolanaAgentKit) {
const { text, chat } = message;
// Generate response using agent
const response = await agent.chat(text);
// Send response to Telegram
await sendTelegramMessage(chat.id, response);
}
Features
-
Chat Interaction
- Natural language processing
- Command handling
- Error responses
- Message formatting
-
Blockchain Operations
- Transaction execution
- Balance checking
- Token transfers
- Price queries
-
Bot Management
- User session handling
- Rate limiting
- Error handling
- Logging
Deployment
Deploy to Vercel
- Push code to GitHub
- Import project in Vercel
- Configure environment variables
- Deploy
Set Up Webhook
After deployment:
- Get your deployment URL
- Set webhook using the URL
- Verify webhook status
- Test bot functionality
Security Considerations
-
Token Security
- Secure storage of bot token
- Environment variable protection
- Access control
- Rate limiting
-
Request Validation
- Validate Telegram updates
- Check message format
- Verify user permissions
- Monitor activity
-
Error Handling
- Graceful error messages
- Transaction failures
- Network issues
- API limits
Example Bot Commands
/balance - Check wallet balance
/price SOL - Get SOL price
/transfer 1 SOL address - Transfer SOL
/help - Show available commands
Development Tips
-
Local Testing
- Use ngrok for local development
- Test all commands thoroughly
- Monitor error logs
- Check response times
-
Message Handling
- Parse commands correctly
- Format responses properly
- Handle long messages
- Implement retry logic
-
User Experience
- Clear error messages
- Progress indicators
- Command suggestions
- Help documentation
Common Issues
-
Webhook Setup
- Invalid URL format
- SSL certificate issues
- Port configuration
- Domain verification
-
Bot Responses
- Slow response times
- Message formatting
- Command parsing
- Error handling
-
Deployment
- Environment variables
- Webhook configuration
- API access
- Rate limits
Testing
Local Testing
# Start local server
pnpm dev
# Start ngrok
ngrok http 3000
# Set webhook to ngrok URL
curl https://api.telegram.org/bot<token>/setWebhook?url=<ngrok-url>/api/bot
Production Testing
- Send test messages
- Check transaction execution
- Verify responses
- Monitor errors
Resources
Support
For support and questions:
- Create GitHub issue
- Join Telegram support group
- Check documentation
- Contact maintainers
Responses are generated using AI and may contain mistakes.