1541551. Customize the bot's responses by editing the API endpoints in `api-server.js`
1562. Add more categories for link classification in `database.js`
1573. Enhance the AI queries by modifying prompts in `query-service.js`
1584. Create a web interface that connects to your API endpoints
discord-botdatabase.js15 matches
1import Database from 'better-sqlite3';
2import linkify from 'linkify-it';
3import 'dotenv/config';
45// For Val.town, we'll use the built-in SQLite functionality
6// In local dev, we'll use a file-based database
7const DB_PATH = process.env.NODE_ENV === 'production' ? ':memory:' : './messages.db';
81112/**
13* Initialize the database schema
14*/
15export function initializeDatabase() {
16const db = new Database(DB_PATH);
17
18// Create messages table
9798/**
99* Save messages to the database
100* @param {Array} messages - Array of message objects to save
101*/
102export async function saveDMMessages(messages) {
103const db = initializeDatabase();
104
105// Prepare statements
165transaction(messages);
166
167console.log(`Saved ${messages.length} messages to database`);
168
169db.close();
171172/**
173* Get messages from the database, with optional filtering
174* @param {Object} filters - Optional filters for messages
175* @returns {Array} - Array of message objects
176*/
177export function getMessages(filters = {}) {
178const db = initializeDatabase();
179
180let query = `
229230/**
231* Get links from the database, with optional filtering
232* @param {Object} filters - Optional filters for links
233* @returns {Array} - Array of link objects
234*/
235export function getLinks(filters = {}) {
236const db = initializeDatabase();
237
238let query = `
292*/
293export function updateLinkCategory(linkId, category) {
294const db = initializeDatabase();
295
296db.prepare('UPDATE links SET category = ? WHERE id = ?').run(category, linkId);
304*/
305export function getCategories() {
306const db = initializeDatabase();
307
308const categories = db.prepare('SELECT * FROM categories ORDER BY name').all();
318*/
319export function addCategory(name) {
320const db = initializeDatabase();
321
322db.prepare('INSERT OR IGNORE INTO categories (name, created_at) VALUES (?, ?)').run(name, Date.now());
vt-discordREADME.md1 match
9- The **client-side entrypoint** is `/frontend/index.html`, which in turn imports `/frontend/index.tsx`, which in turn imports the React app from `/frontend/components/App.tsx`.
1011[React Hono Example](https://www.val.town/x/stevekrouse/reactHonoExample) is a fuller featured example project, with a SQLite database table, queries, client-side CSS and a favicon, and some shared code that runs on both client and server.
MiniAppStarterREADME.md1 match
9- The **client-side entrypoint** is `/frontend/index.html`, which in turn imports `/frontend/index.tsx`, which in turn imports the React app from `/frontend/App.tsx`.
1011[React Hono Example](https://www.val.town/x/stevekrouse/reactHonoExample) is a fuller featured example project, with a SQLite database table, queries, client-side CSS and a favicon, and some shared code that runs on both client and server.
MiniAppStarterApp.tsx5 matches
13const navLinks = [
14{ name: "Farcaster SDK", path: "/" },
15{ name: "Database", path: "/db" },
16{ name: "About", path: "/about" },
17];
35<Routes>
36<Route path="/" element={<FarcasterMiniApp />} />
37<Route path="/db" element={<Database />} />
38<Route path="/about" element={<About />} />
39<Route path="/neynar" element={<Neynar />} />
50<div className="">β· Hono + React + Tailwind</div>
51<div className="">β· React Router + React Query</div>
52<div className="">β· Built-in database (blob storage)</div>
53<div className="">β· Farcaster mini app manifest + webhook + embed metadata</div>
54<div className="">β· Farcaster notifications (storing tokens, sending recurring notifications, ...)</div>
66}
6768function Database() {
69const queryFn = () => fetch("/api/counter/get").then((r) => r.json());
70const { data, refetch } = useQuery({ queryKey: ["counter"], queryFn });
71return (
72<Section className="flex flex-col items-start gap-3 m-5">
73{/* <h2 className="font-semibold">Database Example</h2> */}
74<div className="">Counter value: {data}</div>
75<Button variant="outline" onClick={() => fetch("/api/counter/increment").then(refetch)}>
WillpersonalWebsiteHTTP1011 match
26<ul>
27<li><strong>HTTP</strong> is the movie-rental kiosk interfaceβhow you browse, check out, and return movies.</li>
28<li><strong>Client</strong> is the customer at the kiosk; <strong>Server</strong> is the machineβs inventory database.</li>
29<li>An <strong>HTTP Request</strong> is your on-screen selection:</li>
30<li><strong>Method</strong> β Action button (β<strong>GET</strong>β to view details, β<strong>PUT</strong>β to update return date, β<strong>POST</strong>β to add a new rental);</li>
OpenTownie_jacksonTODOs.md1 match
9- [ ] make it one click to branch off like old jp townie demos
10- [ ] opentownie as a pr bot
11- [ ] give it the ability to see its own client-side and server-side logs by building a middleware that shoves them into a SQL light database date and then give it a tool to access them
12- [ ] do a browser use or screenshot thing to give it access to its own visual output
13- [ ] Have it default to creating a new branch off main
OpenTownie_jacksonthink.ts1 match
7export const thinkTool = tool({
8description:
9"Use the tool to think about something. It will not obtain new information or change the database, but just append the thought to the log. Use it when complex reasoning or some cache memory is needed.",
10parameters: z.object({
11thought: z.string().describe("A thought to think about."),
OpenTownie_jacksonsystem_prompt.txt2 matches
192```
193βββ backend/
194β βββ database/
195β β βββ migrations.ts # Schema definitions
196β β βββ queries.ts # DB query functions
251```
252253### Database Patterns
254- Run migrations on startup or comment out for performance
255- Change table names when modifying schemas rather than altering
OpenTownieTODOs.md1 match
9- [ ] make it one click to branch off like old jp townie demos
10- [ ] opentownie as a pr bot
11- [ ] give it the ability to see its own client-side and server-side logs by building a middleware that shoves them into a SQL light database date and then give it a tool to access them
12- [ ] do a browser use or screenshot thing to give it access to its own visual output
13- [ ] Have it default to creating a new branch off main