Course: CSS 360 (Winter 2026)
Project: Travel Planning Discord Bot (Discord Slash Commands)
- Manraj Banga
- Kam Ekwueme
- Tanisha Thakare
- Raya Parsa
- Marco Chan
TREMM is a Discord bot built for CSS 360 to help users plan trips without leaving the chat. It provides travel tools like weather lookups, activities, restaurants, flights, hotels, rental cars, and full trip planning through Discord slash commands.
TREMM 2.1 expands on the original bot by improving trip planning, adding hotel watchlists and trip-saving features, strengthening validation, improving command guidance, and making the bot more useful for real travel workflows.
/watchlist— save hotels you are interested in for later viewing/help— explains how the bot works and gives usage details for each command/savedtrips— view your previously saved trip briefs/deletetrip— delete a saved trip by trip ID/rentalcars— find rental car options for a location
/tripbriefsave option — users can now choose to save a generated trip brief- Saved trips are stored in both
.txtand.jsonformats for readability and structured reuse /newhotelsnow supports more specific destinations such as"Newport Beach"instead of only broader cities like"Los Angeles"/flightsnow prevents users from entering the same airport for both origin and destination/flightsincludes clearer validation and error messages- Added a Google Flights booking link/button to flight results
- Enhanced
/restaurantsfor better discovery and output quality
- Better validation across commands
- Better error handling and user feedback
- Easier navigation of saved travel data
- Improved command discoverability through
/help
Display how the bot works and explain each command.
/help
- Overview of TREMM
- Explanation of available commands
- Inputs, outputs, and limitations for each command
- Intended as an in-app user guide
- Helps new users understand command syntax and expected behavior
Generate a complete trip brief in one command.
/tripbrief destination:<place> depart:<YYYY-MM-DD> return:<YYYY-MM-DD> adults:<1-9> origin:<IATA> save:<true|false>
/tripbrief destination:"Los Angeles, CA" depart:2026-03-10 return:2026-03-14 adults:1 origin:SEA save:true
- Summary (dates, trip length, resolved codes, section status)
- Weather snapshot
- Restaurants
- Activities
- Hotels
- Flights
- Optional save confirmation if the user chooses to save the trip
- Weather is short-term and depends on provider coverage
- Activities, hotels, and flights depend on API availability
- Flights may require an origin IATA code
- Save defaults to false unless the user chooses true
Display the user's previously saved trip briefs.
/savedtrips
- A list of trips saved by the current user
- Trip identifiers for each saved trip
- Saved trip summaries for quick review
- Only shows saved trips for the current user
- Does not show trips from the broader community or other users
Delete one of the user's saved trips by trip ID.
/deletetrip tripid:<ID>
/deletetrip tripid:1034
- Confirmation that the trip was deleted
- Error message if the trip ID does not exist or does not belong to the user
- Only deletes trips belonging to the current user
- Removes the trip from saved trip storage
Save hotels you may be interested in for later review.
/watchlist
- Stores selected hotels for later access
- Hotel entries displayed using Discord embeds
- Intended for users comparing hotel options before booking
- Watchlist behavior depends on the hotel results currently available to the user
Check hotel availability and pricing with more specific location support.
/newhotels location:<place> check_in:<YYYY-MM-DD> check_out:<YYYY-MM-DD> adults:<number>
/newhotels location:"Newport Beach, CA" check_in:2026-03-10 check_out:2026-03-14 adults:2
- Hotel results displayed in Discord embeds
- Hotel name
- Rating
- Price
- Lookup or booking information
- Supports more specific destinations, not just broad city names
- Date validation is enforced
- Coverage depends on API support for the requested location
Find top restaurants in a location.
/restaurants location:<place>
/restaurants location:"Seattle, WA"
- Restaurant name
- Category or cuisine
- Address
- Distance from the center of the city (in km)
- Google search link
- Results depend on API coverage
- Enhanced in v2.1 for better usability and output quality
Get current weather and a short-term forecast.
/weather place:<place>
/weather place:"Paris, FR"
- Current conditions:
- Temperature
- Feels-like
- Wind
- Humidity
- Short-term daily forecast
- Forecast window is provider-limited
Interactive flow to collect trip details in chat.
/plantrip
- Bot prompts the user for:
- Destination
- Trip dates
- Bot responds with a trip plan summary using the provided details
- Only listens to the user who started the command
Find tours and activities for a destination.
/trip activities destination:<place>
/trip activities destination:"Bali, Indonesia"
- Activity name
- Price (when available)
- Description
- Booking link (when available)
- If the provider returns limited or empty results, fallback suggestions may be shown
Get up to 5 flight options for a trip.
/flights origin:<IATA> destination:<IATA> date:<YYYY-MM-DD> adults:<number>
/flights origin:SEA destination:LAX date:2026-03-10 adults:1
- Up to 5 flight options including:
- Airline
- Price
- Depart time
- Arrive time
- Number of stops
- Google Flights booking link/button for easier booking lookup
- Requires valid IATA airport codes
- Origin and destination cannot be the same airport
- Returns clearer error messages for invalid inputs
- If no flights are found, the bot suggests trying different dates or airports
Find rental cars for a given location.
/rentalcars location:<place>
/rentalcars location:"San Diego, CA"
- Rental car options for the specified location
- Link to Google Maps Location
- Coverage depends on API/provider support
- Results may vary by location
When a user saves a trip brief, TREMM stores the trip in two formats:
.txt— easy for users to read quickly.json— structured format for reuse, parsing, or future extensions
This makes saved trips both user-friendly and developer-friendly.
npm installnpm run buildnpm run registernpm startCreate a .env file or set secrets in your deployment environment.
TOKEN=...CLIENT_ID=...GUILD_ID=...
AMADEUS_CLIENT_ID=...AMADEUS_CLIENT_SECRET=...AMADEUS_BASE_URL=https://test.api.amadeus.comDEFAULT_ORIGIN_IATA=SEA
Example regeneration command using Syft:
syft . -o spdx-json > sbom.spdx.json- Added
/help - Added
/watchlist - Added
/savedtrips - Added
/deletetrip - Added
/rentalcar - Added save option to
/tripbrief - Stored saved trips in both
.txtand.json - Improved
/newhotelsto support more specific locations - Improved
/flightsvalidation and error messaging - Added Google Flights booking link/button to flight results
- Enhanced
/restaurants - Continued improving usability, validation, and travel workflow support
TREMM is designed to make trip planning easier, faster, and more collaborative inside Discord. Instead of switching between multiple travel sites and apps, users can search, compare, save, and manage trip information directly in chat using slash commands.
TREMM 2.1 pushes the project closer to a more complete travel assistant by combining trip discovery, trip storage, hotel tracking, and improved booking workflows into one bot.