1# Dev Null
2
3A JS function and API inspired by `/dev/null` that will throw away whatever you send it and return `null`.
4
5## Function usage
9```
10
11## API Usage
12
13https://api.val.town/v1/run/stevekrouse.devNull?args=[%22useless%20data%22]
14
15## Why?
21## Usage
22
23You can call this function via the [@stevekrouse.runValAPIAuth](/v/stevekrouse.runValAPIAuth) helper:
24
25```js
26@stevekrouse.runValAPIAuth({
27 val: "@stevekrouse.dm",
28 args: ["hi steve!"],
1Migrated from folder: External_APIs/telegram/telegramValTownBot
50## How it works
51
52Telegram has a lovely API.
53
541. I created a @ValTownBot via [Bot Father](https://t.me/botfather).
552. I created a [webhook](https://www.val.town/v/stevekrouse.telegramValTownBotWebhook) and [registered it with telegram](https://www.val.town/v/stevekrouse.telegramValTownBotWebhookSetup)
563. Whenever someone new messages @ValTownBot, I generate a secret and save it along with their Chat Id in @stevekrouse/telegramValTownBotSecrets (a private val), and message it back to them
574. Now whenever you call this val, it calls [`telegramValTownAPI`](https://www.val.town/v/stevekrouse.telegramValTownAPI), which looks up your Chat Id via your secret and sends you a message
58
59## Telegram Resources
71
72- [ ] Store user data in Val Town SQLite
73- [ ] Parse user data on the API side using Zod
74
75Migrated from folder: External_APIs/telegram/telegram
1# Poll Twitter & Populate SQlite database
2
3The twitter API (or in this case someone else's wrapper over the twitter API) is finicky, so we just try to get one handle per minute, and shove whatever we get into our database, which could be an error message (this is why handles don't have a unique index).
4
5Migrated from folder: Archive/turso/twitterFollows/populateTwitterDB
1# [The Big Story](https://tmcw-big_story_visualization.express.val.run/)
2
3This val, along with [@tmcw.big_story](https://www.val.town/v/tmcw.big_story), which requests from the [New York Times API](https://developer.nytimes.com/), and [@tmcw.big_stories_ranks](https://www.val.town/v/tmcw.big_stories_ranks), which contains the data, generates a visualization of top stories on the NYTimes homepage.
4
5This is here just to ask the question – what happens to cover stories over time? Do they slowly drop down the page, or just get replaced by a fully new lede? So far it doesn't have quite enough data to answer that question.
5[https://tmcw-poll.express.val.run](https://tmcw-poll.express.val.run)
6
7This val, along with a val called `poll_results` and a val called `poll_options`, lets you conduct a little poll using just Val Town! With the [express API](https://docs.val.town/api#9bff1f5f778e4fe3a143df8169101795), this exposes a web interface in which people can click an option and vote. We make sure everyone only votes once by setting a cookie in their browser.
8
9This uses [htmx](https://htmx.org/) to make the voting experience slick, [Tailwind](https://tailwindcss.com/) to style the UI, and [htm](https://github.com/developit/htm) to generate HTML for the pages.
1Migrated from folder: Archive/gptPlugin/openaiOpenAPI
1# SVG Button Link for Markdown
2
3Pioneered by [@easrng](/u/easrng), this val allows you to create an SVG image via the Express API, which we can embed in Val Town markdown, and wrap so it acts like a button.
4
5## Usage
152. Replace "SPOT" with the symbol you want
16
17## API
18
19This val currently uses Alpha Vantage's free plan (5 requests per minute & 500 per day).
20
21You can sign up for your own API Key here: https://www.alphavantage.co/support/#api-key
22
23Migrated from folder: External_APIs/AlphaVantage/stockPrice