MEMBRANE
BETA
What is Membrane?
Stateful serverless TypeScript for internal tools.
FEATURESEXAMPLES
example discord bot
Discord bot that responds to the
/weather 'city-name'
command.Reference to a Discord Guild
Subscribe to Discord's slash command.
Get weather information for a city
Respond slash command with weather details
import { nodes, root, state } from "membrane";
export async function configure({ guildId }) {
const gref = nodes.discord.guilds.one({ id: guildId });
await gref.createCommand({
name: "weather",
description: "Get the weather for a location",
options: [
{
type: 3,
description: "The city to get the weather for",
name: "city",
},
],
});
await gref.onSlashCommand.$subscribe(root.handleEvent);
}
export async function handleEvent(_, { event }) {
const { token, application_id, options } = await event;
const [data] = JSON.parse(options);
const city = data.value;
const weather = await nodes.weather
.now({ city })
.$query(`{ temp feels_like }`);
await nodes.discord.followUpWebhook({
token,
application_id,
message: {
content: `The weather in ${city.toUpperCase()}
is ${weather.temp} degrees,
but feels like ${weather.feels_like}.`,
},
});
}
What is Membrane?
Stateful serverless TypeScript for internal tools.
FEATURESEXAMPLES
Features Walkthrough
Communication
- 2023.08.20 Progress Update #3 Simpler function signatures, built-in Google auth.
- 2023.08.13 Progress Update #2 Windows support and OOM handling.
- 2023.07.30 Progress Update #1 Internal logging architecture, improved HTTP UI.
- 2023.07.14 Progress Update #0 Exit nodes and Program Replays.
Enter your email for occasional updates