9async function message(channel: string, text: string, thread_ts?: string) {
10 return await fetchJSON(
11 "https://slack.com/api/chat.postMessage",
12 {
13 headers: { "Authorization": `Bearer ${SLACK_BOT_TOKEN}` },
20async function reaction(channel: string, timestamp: string, name: string = "thumbsup") {
21 return await fetchJSON(
22 "https://slack.com/api/reactions.add",
23 {
24 headers: { "Authorization": `Bearer ${SLACK_BOT_TOKEN}` },
54 query: topic,
55 pages: 2,
56 apiKey: Deno.env.get("BROWSERBASE_API_KEY") ?? "",
57 });
58}
63// maxResults: 10,
64// daysBack: 1,
65// apiKey: Deno.env.get("TWITTER_BEARER_TOKEN") ?? "",
66// });
67// }
98
99 if (!response.ok) {
100 throw new Error(`Slack API error: ${response.status} ${response.statusText}`);
101 }
102
7## Getting Started
8To run Slack Scout, you’ll need a
9- Browserbase API key
10- Slack Webhook URL: setup [here](https://docs.val.town/integrations/slack/send-messages-to-slack/)
11- Twitter Developer API key
12
13### Browserbase
19### Twitter
20
21We’ve decided to use the Twitter API to include Twitter post results. It costs $100 / month to have a Basic Twitter Developer account. _If you decide to use Browserbase, we can lend our token. Comment below for access._
22
23Once you have the `SLACK_WEBHOOK_URL`, `BROWSERBASE_API_KEY`, and `TWITTER_BEARER_TOKEN`, input all of these as [Val Town Environment Variables](https://www.val.town/settings/environment-variables).
24
25---
16 const { provider, id } = c.req.param();
17 if (!["rabbit", "mega"].includes(provider)) {
18 return c.json({ error: "Invalid API request" }, 500);
19 }
20 // const cache = await blob.getJSON(id);
3export default async function proxy(req: Request) {
4 const resp = await fetch(
5 "http://api.quotable.io/quotes/random?limit=1",
6 );
7 const json = await resp.json();
1# Quotable API Proxy
2
3Small HTTP proxy to the Quotable API (`https://api.quotable.io`).
4
5I built this due to some DNSSEC issues that the Quotable API is currently experiencing.
6
7See this Github issue [here](https://github.com/lukePeavey/quotable/issues/239) for more information.
4const { BOT_TOKEN, ME } = env;
5
6const TELEGRAM = `https://api.telegram.org`;
7const BOT = `${TELEGRAM}/bot${BOT_TOKEN}`;
8
4import { appendTrailingSlash } from "npm:hono/trailing-slash";
5
6// import { getVals, getValsWithVersions } from "./api.js";
7import { getVals, getValsWithVersions } from "https://esm.town/v/yawnxyz/valVersions";
8
4import { appendTrailingSlash } from "npm:hono/trailing-slash";
5
6// import { getVals, getValsWithVersions } from "./api.js";
7import { getVals, getValsWithVersions } from "https://esm.town/v/yawnxyz/valVersions";
8
67 <body style="display: flex; justify-content: center; align-items: center;">
68 <article>
69 <p>This website is protected behind ${val.handle}'s Val Town API token.</p>
70 <p>If you are ${val.handle}, get your <a href="https://www.val.town/settings/api" target="_blank">API token here</a>.</p>
71 <p>If you are not ${val.handle}, you can fork <a href="https://val.town/v/${val.handle}/${val.name}">this val</a> to your account, and then login with your API token.
72 <footer>
73 <form method="POST" style="margin-block-end: 0em;">