-
Notifications
You must be signed in to change notification settings - Fork 0
Worker Backend Template
Lionel Timothy Tarigan edited this page May 13, 2026
·
5 revisions
Paste this code into your Cloudflare Worker:
export default {
async fetch(request, env) {
if (request.method !== "POST") {
return Response.json(
{ error: "Method not allowed" },
{ status: 405 }
);
}
const authHeader = request.headers.get("Authorization");
const expectedSecret = `Bearer ${env.API_SECRET}`;
if (authHeader !== expectedSecret) {
return Response.json(
{ error: "Unauthorized" },
{ status: 401 }
);
}
let data;
try {
data = await request.json();
} catch {
return Response.json(
{ error: "Invalid JSON body" },
{ status: 400 }
);
}
const {
player,
message,
system_prompt,
model,
safe_mode,
online_players,
max_players,
dimension,
world_time,
can_access_online_player_count,
can_access_dimension,
can_access_world_time,
can_access_player_coordinates
} = data;
const selectedModel =
model || "@cf/meta/llama-3.1-8b-instruct";
let serverContext = "";
if (can_access_online_player_count) {
serverContext +=
`Online players: ${online_players}/${max_players}\n`;
}
if (can_access_dimension) {
serverContext +=
`Player dimension: ${dimension}\n`;
}
if (can_access_world_time) {
serverContext +=
`World time: ${world_time}\n`;
}
serverContext += `
Capabilities:
- Can access online player count: ${can_access_online_player_count}
- Can access player coordinates: ${can_access_player_coordinates}
- Can access dimension: ${can_access_dimension}
- Can access world time: ${can_access_world_time}
- Safe mode: ${safe_mode}
Important rules:
- Do not invent player counts, coordinates, structures, inventories, commands, or admin data.
- Only use server data provided in this request.
- If the requested data is not provided, say you do not have access to it.
`;
const aiResponse = await env.AI.run(selectedModel, {
messages: [
{
role: "system",
content: `${system_prompt}\n\n${serverContext}`
},
{
role: "user",
content: `${player}: ${message}`
}
]
});
return Response.json({
reply: aiResponse.response || "No response from AI."
});
}
};CloudChat requires a Cloudflare Worker backend to connect Minecraft chat to Cloudflare Workers AI.
This backend handles:
- AI requests
- API authentication
- Model selection
- Server awareness context
- AI responses
-
Create a Cloudflare Worker
-
Delete the default Worker code
-
Copy and paste the CloudChat Worker template below
-
Deploy the Worker
-
Copy your Worker URL
Example:
https://cloudchat.yourname.workers.dev- Put the Worker URL into your CloudChat config:
worker_url=https://cloudchat.yourname.workers.devPaste this code into your Cloudflare Worker: