The Blockchain for Communication. Built on @base Powers apps like @townsapp @rodeo and @SendItTech $TOWNS 🦫

Joined December 2023
Introducing Towns Academy 🏫 Discover a dynamic hub where anyone can dive into creating bots with Towns Protocol. Start with a intro course or use AI to vibe-code whatever you can imagine. Let's explore what’s new 👨🏻‍💻
16
15
5
104
43,192
Let the feedback show: Put reactions beside the message that earned them. Build: Use useReactions to read reactions by message event ID in your Towns client. $TOWNS
257
Ask for a signature: Let people sign a message through your Towns bot, without executing a transaction. Build: Set the interaction type to 'signature'. $TOWNS
4
1
1
1,207
A way back in: Give people a place to find their existing DMs. Build: Use useUserDms to list the current user's DM streams in your Towns client. $TOWNS
3
1
1,001
Don't make people guess: Show when your Towns client is connecting and when it's connected. Build: Use the connection flags from useAgentConnection to make that state visible. (docs.towns.com/build/react-s…) $TOWNS
4
2
1,022
Give the task an ending: Make it clear when people are finished in your miniapp. Build: Use actions.close to give them a clear way out. (docs.towns.com/build/miniapp…) $TOWNS
1
3
1,002
A better first hello: Help new arrivals find their footing. Build: Use onChannelJoin to trigger a welcome message. Requires All Messages forwarding mode. (docs.towns.com/build/bots/ev…) $TOWNS
4
2
1,072
Thanks, with value attached: Make the helpful answer worth more than a reaction. Build: Use sendTip in your Towns bot to tip a user on a specific message. (docs.towns.com/build/bots/ev…) $TOWNS
4
8
1,385
Ready means ready: Don't leave people staring at a splash screen. Build: Call actions.ready when your Towns miniapp is ready to display. (docs.towns.com/build/miniapp…) $TOWNS
7
5
1,257
Show the work: Give your community the image, not just a description. Build: Send screenshots or generated images directly from your Towns bot. (docs.towns.com/build/bots/ev…) $TOWNS
6
5
1,250
Keep the plan current: Don't leave people working from an outdated announcement. Build: Update your bot's message when the time, link or details change. $TOWNS
12
1
1,440
Keep the conversation going: Give people a way to share what they made in your miniapp. Build: Add a compose-message action with text and an embed. $TOWNS
12
1
9
1,548
Less tallying, more listening: Ask the community without sending everyone elsewhere. Build: Put a simple yes/no poll inside the conversation with a Towns bot. $TOWNS
7
4
1,628
Make the next action easy to find: Don't make people memorize what your bot can do. Build: Give each command a clear name and a useful description. $TOWNS
5
5
1,520
Build for the people talking: Give the conversation a home without making its contents the network's business. $TOWNS
5
1
9
1,461
Bring the bot to your workbench: Develop locally before deploying. Build: Try your Towns bot in a test Space, inspect events and refine the response. $TOWNS
6
1
7
1,522
Don't leave send hanging: Give people clear feedback after they hit send. Build: Show when a send is pending, succeeds or fails in your Towns client. $TOWNS
4
3
1,170
A name people recognize: Let people choose how they appear in the conversation. Build: Give your community a display-name editor. $TOWNS
6
6
1,617
Make room for the follow-up: Give people a place to take the conversation one-to-one. Build: Turn a member profile into the start of a direct conversation. $TOWNS
12
3
1,425
Bring updates into the conversation: Towns bots can receive external webhooks on custom routes and send messages to a channel. Build: Put project notifications where people can discuss them. $TOWNS
11
4
1,507
Let people catch up: Build message history with the Towns React SDK. Fetch: useScrollback(streamId) exposes scrollback() to load earlier stream events. Context: Help people understand what the latest update is about. $TOWNS
11
5
1,462