Your browser is outdated. Some features might not work properly. Please update your browser for the best experience.
66
![]() 1,000USDC Total Prizes | ||
750 USDC 1st 50 USDC 2nd - 6th |
58
SUBMISSIONS
0h:0m:0s
REMAINING
SKILLS NEEDED
CONTACT
RELATED LIVE LISTINGS
Memeshot Product Tweets (X)
Memeshot
USDC
|
|
Due in 20 hours
Missão criação de conteúdo - #Pix, Pag, Crypto
PagCrypto
USDC
|
|
Due in a day
Write a Tweet Quoting Article & Commenting on Sanafi Onchain - $SANA
Sanafi Onchain
USDC
|
|
Due in 2 days
Gaming Competition on burningjup.com for Jup_Studio ecosystem
BurningJup
USDC
|
|
Due in 2 days
Flex to Earn: SnapX Gains Thread Competition
SnapX
SOL
|
|
Due in 2 days
Copperx is building a stablecoin bank for individuals and businesses. We're seeking a talented developer to create a Telegram bot that integrates with Copperx Payout's API. This bot will enable users to deposit, withdraw, and transfer USDC directly through Telegram without visiting our web app.
Built with TypeScript/Node.js and Cursor/ChatGPT/similar
Clean, maintainable code structure
Comprehensive Git history with meaningful commits
Strong type safety throughout the codebase
Proper error handling and user feedback
Secure handling of user credentials and sensitive information
Thorough documentation and setup instructions
The complete API documentation is available at: https://income-api.copperx.io/api/doc
Please refer to this documentation for detailed information about request/response formats, authentication requirements, and available endpoints.
Our API docs are still very new, so if you’ve any questions, feel free to ping us at https://t.me/copperxcommunity/2991
Features:
User login/authentication with Copperx credentials
View account profile and status
Check KYC/KYB approval status
API Endpoints:
Auth API: /api/auth/email-otp/request
, /api/auth/email-otp/authenticate
User profile: /api/auth/me
KYC status: /api/kycs
Implementation Notes:
For KYC/KYB, redirect users to the platform if not approved
Store session tokens securely
Implement session refresh mechanism or session expiry handling
Auth APIs have rate limits
Features:
View all wallet balances across networks
Set default wallet for transactions
Allow users to deposit funds
View transaction history
API Endpoints:
Get wallets: /api/wallets
Get balances: /api/wallets/balances
Set default wallet: /api/wallets/default
Transaction history: /api/transfers
Default wallet: /api/wallets/default
Features:
Send funds to email addresses
Send funds to external wallet addresses
Withdraw funds to bank accounts
View last 10 transactions
API Endpoints:
Email transfer: /api/transfers/send
Wallet transfer: /api/transfers/wallet-withdraw
Bank withdrawal: /api/transfers/offramp
Bulk transfers: /api/transfers/send-batch
Transfer listing: /api/transfers?page=1&limit=10
Implementation Notes:
Implement proper validation for recipient information
Display fee calculations before confirming transactions
Include confirmation steps for security
We understand that you're a new developer. If you're unable to withdraw to bank due to minimum amount then it's okay.
Features:
Receive deposit notifications
We will use Pusher for real-time notifications (https://pusher.com/docs/channels/using_channels/private-channels/)
API Endpoints:
Authentication: /api/notifications/auth
(POST)
Pusher channels: private-org-${organizationId}
Use Pusher Key: e089376087cac1a62785
Use Pusher Cluster: ap1
Sample code for Pusher:
// Initialize Pusher client with authentication
const pusherClient = new Pusher(process.env.VITE_PUSHER_KEY, {
cluster: process.env.VITE_PUSHER_CLUSTER,
authorizer: (channel) => ({
authorize: async (socketId, callback) => {
try {
const response = await axios.post('/api/notifications/auth', {
socket_id: socketId,
channel_name: channel.name
}, {
headers: {
Authorization: `Bearer ${token}`
}
});
if (response.data) {
callback(null, response.data);
} else {
callback(new Error('Pusher authentication failed'), null);
}
} catch (error) {
console.error('Pusher authorization error:', error);
callback(error, null);
}
}
})
});
// Subscribe to organization's private channel
const channel = pusherClient.subscribe(`private-org-${organizationId}`);
channel.bind('pusher:subscription_succeeded', () => {
console.log('Successfully subscribed to private channel');
});
channel.bind('pusher:subscription_error', (error) => {
console.error('Subscription error:', error);
});
// Bind to the deposit event
pusherClient.bind('deposit', (data) => {
bot.sendMessage(chatId,
`💰 *New Deposit Received*\n\n` +
`${data.amount} USDC deposited on Solana`
);
});
Implementation Notes:
Authenticate with the notification service using organization ID and token
Implement a Pusher client to subscribe to appropriate channels
Listen for event deposit
Format Telegram messages with relevant transaction details
Implement intuitive command structure (/balance
, /send
, /withdraw
, etc.)
Create interactive menus for complex operations
Develop inline keyboards for option selection
Include help commands and clear instructions
Support natural language queries where possible
Add link to Copperx support: https://t.me/copperxcommunity/2183
Implement proper authentication flow
Never store plaintext passwords
Use secure session management
Provide options for additional security (transaction confirmations)
Follow Telegram Bot API best practices for security
Complete GitHub repository for the Telegram bot
For testing the Username of your bot. (You can deploy bot at https://render.com/ for free)
Comprehensive documentation:
Setup instructions
API integration details
Command reference
Troubleshooting guide
Showcase your Bot on X and be proud <3 (optional)
For questions regarding this bounty, please contact our team in Telegram at https://t.me/copperxcommunity/2991.
SKILLS NEEDED
Backend
CONTACT
Reach outif you have any questions about this initialBounty
20
Comments
5M ago