Files

20 lines
378 B
JSON
Raw Permalink Normal View History

2026-05-11 21:51:59 +02:00
{
"name": "minecraft-telegram-bot",
"version": "0.1.0",
"private": true,
"type": "module",
"scripts": {
"start": "bun run bot.ts"
},
"dependencies": {
"@grammyjs/auto-retry": "^2.0.2",
"@grammyjs/stream": "^1.0.1",
feat(redstone): wiki_recipe_image — composite real recipe PNG and upload Previous wiki_recipe only returned the page thumbnail, so "send me the recipe image" delivered a picture of the item, not the recipe itself. minecraft.wiki renders recipes as live HTML grids, not standalone PNGs, so we now generate the image ourselves. mcp/lib/minecraft-wiki-tools.ts: - parseCraftingGrid(html): pulls the 3×3 input grid + result item URL from <span class="mcui mcui-Crafting_Table">. Each <span class="invslot"> is either empty (chunk starts with </span>) or has an <img src="/images/ Invicon_X.png?h">. Reading-order chunks → grid; first non-null after the 9th input slot → result. - composeRecipePng(grid, result): fetches each unique sprite, resizes to 64×64 via sharp (nearest-neighbour to keep pixel art crisp), composites onto a #8b8b8b inventory-style background with #6f6f6f slot squares + dark borders, places an SVG-rendered "→" arrow, then the result cell next to it. PNG buffer returned. - New tool wiki_recipe_image(title, chat, caption?) that runs the pipeline end-to-end and uploads via tg.sendPhotoBytes — one tool call, image already in the chat when it returns. mcp/lib/types.ts: - TgClient gains sendPhotoBytes({ chat_id, bytes, filename?, caption?, parse_mode?, reply_to_message_id? }). Multipart/form-data POST to sendPhoto, since Telegram's URL-mode can only fetch public URLs and the composited PNG only lives in memory. 30s timeout (vs the 20s on the JSON call) because uploads are bigger. mcp/package.json + bot/package.json: add sharp ^0.33.5. mcp/ pulls it in too so /mc/mcp/lib resolves it at the bot's runtime (the bot's node_modules is at /app while the lib files live at /mc/mcp/lib). Persona prompt: wiki_recipe_image is now the FIRST call for any "recipe" / "send me the recipe image" request. Single tool turn ends with the photo already in the chat. wiki_recipe stays as a fallback when the page has no 3×3 crafting widget (smelting / brewing / smithing use different mcui classes). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 23:54:20 +02:00
"grammy": "^1.30.0",
"sharp": "^0.33.5"
2026-05-11 21:51:59 +02:00
},
"devDependencies": {
"@types/bun": "latest",
"typescript": "^5.5.0"
}
}