mirror of
https://github.com/aljazceru/mcp-code.git
synced 2025-12-17 12:45:28 +01:00
wip
This commit is contained in:
60
logic/deposit.ts
Normal file
60
logic/deposit.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
||||
import { z } from "zod";
|
||||
import { getWallet } from "../lib/cache/wallets";
|
||||
import { getSigner } from "../lib/nostr/utils";
|
||||
import { log } from "../utils/log";
|
||||
|
||||
export async function deposit(username: string, amount: number) {
|
||||
try {
|
||||
const signer = await getSigner(username);
|
||||
const wallet = await getWallet(signer.pubkey, signer);
|
||||
|
||||
const depositOperation = wallet?.deposit(amount);
|
||||
if (!depositOperation) {
|
||||
throw new Error(
|
||||
`Failed to initiate deposit for user ${username}. Wallet might not support deposits or user not found.`
|
||||
);
|
||||
}
|
||||
const result = await depositOperation.start();
|
||||
log(
|
||||
`Deposit of ${amount} for ${username} started successfully: ${result}`
|
||||
);
|
||||
|
||||
return { qrCode: result };
|
||||
} catch (error: unknown) {
|
||||
const errorMessage =
|
||||
error instanceof Error ? error.message : String(error);
|
||||
console.error(
|
||||
`Failed to deposit ${amount} for ${username}: ${errorMessage}`
|
||||
);
|
||||
// Re-throw the error so the MCP handler can catch it
|
||||
throw new Error(`Deposit failed for ${username}: ${errorMessage}`);
|
||||
}
|
||||
}
|
||||
|
||||
export function addDepositCommand(server: McpServer) {
|
||||
server.tool(
|
||||
"deposit",
|
||||
"Initiate a deposit for a user",
|
||||
{
|
||||
username: z.string().describe("Username to deposit for"),
|
||||
amount: z.number().describe("Amount in sats to deposit"),
|
||||
},
|
||||
async (input) => {
|
||||
const { username, amount } = input;
|
||||
log(`Received deposit request for ${username} amount ${amount}`);
|
||||
const result = await deposit(username, amount);
|
||||
if (!result || !result.qrCode) {
|
||||
throw new Error("Deposit failed to return a QR code result");
|
||||
}
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: "text",
|
||||
text: `Deposit initiated. Please scan the QR code or copy the invoice: ${result.qrCode}`,
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user