|
59533
|
slakie by @IcedThrower_95 | Stardance
|
IcedThrower_95
|
1
|
10.71
|
48
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T10:32:16Z", "hours": 8.0, "multiplier": 6.23, "payout": 48, "blessing": "neutral", "text": "What did you make? I built Slackie—a multi-purpose Slack bot packed with 10 fully functional slash commands! I wanted to make something that wasn’t just a simple text responder, so I integrated multiple APIs to make it genuinely useful and fun. It features a Gemini 3.8 Flash AI assistant that can browse the web, a currency converter, a math expression evaluator, a QR code generator, and even a command that fetches the exact countdown and details for the next Formula 1 race. What was challenging? Trying to get the currency converter to accept flexible inputs (like “1299 USD to INR” vs just “USD to INR”) without completely breaking the code took a lot of trial and error. What am I proud of? The F1 Command: As a massive Formula 1 fan, building a custom /my-slakie-f1 command that tracks the next Grand Prix weekend using the Jolpica API was super satisfying. I am really proud that I figured out the Linux service file stuff. Slackie is now running flawlessly 24/7 on my own hardware. What should you know before testing? To talk to the AI, use /my-slakie-gemini [your question]. It has Google Search grounding enabled, so you can ask it about current events or tech news! Try /my-slakie-currency 100 USD to INR to test the live exchange rates. Type /my-slakie-help to see the full list of all 10 commands you can play with. Make sure you use the exact /my-slakie-… prefix so it doesn’t collide with other bots in the workspace! Example Here in the image attached shows the working of the /my-slakie-gemini [Question] command the model intellingently uses web search to get the latest information if its system instrutction is outdated", "repo": "https://github.com/IcedThrower95/slakie_bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0C16D3SXCK"}]...
|
[{"post_id": 72632, "ts": "202 [{"post_id": 72632, "ts": "2026-09-23T12:01:07Z", "hours": 1.6297, "text": "wrote the code my self from scratch again, as the reviewers were flagging it as “more than 30% usage of AI”"}, {"post_id": 66636, "ts": "2026-09-12T14:20:36Z", "hours": 1.0817, "text": "final devlog after review. Today I edited some of my codebase to make it more cleaner rather than having it clustered.I added a few comments as well along the way"}, {"post_id": 65887, "ts": "2026-09-11T10:18:56Z", "hours": 0.2964, "text": "at last i finished the README document and also edited some code(tiny changes to make it better)"}, {"post_id": 65832, "ts": "2026-09-11T07:29:41Z", "hours": 1.0794, "text": "#final - devlog3 I have finally fixed the gemini ai integration and i have 10 fully working commands, here i have attached. It took me a lot of time to debug the Gemini AI errors. i even used AI to debug but failed unfortunately. Anyways it is now fixed and everything works. Signing off on this project"}, {"post_id": 65318, "ts": "2026-09-10T12:10:30Z", "hours": 3.1189, "text": "#devlog2 , today i completed all the commands which i wanted to integrate in my slackbot.Moreover I am trying to fix the gemini ai which i have intergrated in my slakie it keeps giving me outdated information it is unable to do a web search. I hope to fix it by the end of today"}, {"post_id": 64343, "ts": "2026-09-08T17:24:03Z", "hours": 3.2531, "text": "#devlog1, today I started working on my project Slack bot—my-slakie. At first I followed the guide and went along with the flow. After a while, I had some ideas pop up into my head, and I tried to integrate Gemini AI in the slash command, but unfortunately I was unable to get the desired result—the bot is giving outdated data; the rest of the functions are fine. I will work on debugging the problem with Gemini tomorrow. Also, I am hosting my Slack bot on my Raspberry Pi instead of using the Hack Club Nest. So yeah, that’s it for today!!"}]...
|
Title: slakie by @IcedThrower_95 | Stardance
Devl Title: slakie by @IcedThrower_95 | Stardance
Devlogs:
#devlog1, today I started working on my project Slack bot—my-slakie. At first I followed the guide and went along with the flow. After a while, I had some ideas pop up into my head, and I tried to integrate Gemini AI in the slash command, but unfortunately I was unable to get the desired result—the bot is giving outdated data; the rest of the functions are fine. I will work on debugging the problem with Gemini tomorrow. Also, I am hosting my Slack bot on my Raspberry Pi instead of using the Hack Club Nest. So yeah, that’s it for today!!
#devlog2 , today i completed all the commands which i wanted to integrate in my slackbot.Moreover I am trying to fix the gemini ai which i have intergrated in my slakie it keeps giving me outdated information it is unable to do a web search. I hope to fix it by the end of today
#final - devlog3 I have finally fixed the gemini ai integration and i have 10 fully working commands, here i have attached. It took me a lot of time to debug the Gemini AI errors. i even used AI to debug but failed unfortunately. Anyways it is now fixed and everything works. Signing off on this project
at last i finished the README document and also edited some code(tiny changes to make it better)
final devlog after review. Today I edited some of my codebase to make it more cleaner rather than having it clustered.I added a few comments as well along the way
wrote the code my self from scratch again, as the reviewers were flagging it as “more than 30% usage of AI”
Ships:
What did you make? I built Slackie—a multi-purpose Slack bot packed with 10 fully functional slash commands! I wanted to make something that wasn’t just a simple text responder, so I integrated multiple APIs to make it genuinely useful and fun. It features a Gemini 3.8 Flash AI assistant that can browse the web, a currency converter, a math expression evaluator, a QR code generator, and even a command that fetches the exact countdown and details for the next Formula 1 race. What was challenging? Trying to get the currency converter to accept flexible inputs (like “1299 USD to INR” vs just “USD to INR”) without completely breaking the code took a lot of trial and error. What am I proud of? The F1 Command: As a massive Formula 1 fan, building a custom /my-slakie-f1 command that tracks the next Grand Prix weekend using the Jolpica API was super satisfying. I am really proud that I figured out the Linux service file stuff. Slackie is now running flawlessly 24/7 on my own hardware. What should you know before testing? To talk to the AI, use /my-slakie-gemini [your question]. It has Google Search grounding enabled, so you can ask it about current events or tech news! Try /my-slakie-currency 100 USD to INR to test the live exchange rates. Type /my-slakie-help to see the full list of all 10 commands you can play with. Make sure you use the exact /my-slakie-… prefix so it doesn’t collide with other bots in the workspace! Example Here in the image attached shows the working of the /my-slakie-gemini [Question] command the model intellingently uses web search to get the latest information if its system instrutction is outdated...
|
1793137755.3672502
|
1793224155.3672502
|
|
44437
|
slak bot by @bahodirboliqulov3 | Stardance
|
bahodirboliqulov3
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slak bot by @bahodirboliqulov3 | Stardance
|
1792586848.5790803
|
1793191648.5790803
|
|
4967
|
slackzilla 🦖🦖 by @rylvion | Stardance
|
rylvion
|
0
|
151.14
|
0
|
[]
|
[{"post_id": 78787, "ts": "202 [{"post_id": 78787, "ts": "2026-10-11T16:34:14Z", "hours": 31.9517, "text": "devlog 11 - ADMIN EHANCEMENTS: errors views, log archiving & restoration, logs deletion controls, RAG IMPROVEMENTS AND MORE… date: 11/10/2026 time logged: 31hr 57m version: v0.9.6-beta this release focused on making Slackzilla easier to debug, manage and understand internally. a LOT of work went into the admin panel, route extraction and testing. 1. admin panel got some SERIOUS upgrades added 3 new admin pages for server events, errors and logs. also split admin.css into separate stylesheets because one giant stylesheet isn’t exactly a maintenance strategy. error monitoring added an error viewer with timestamps, stack traces and source files improved error messages to make them more user-friendly log management added a log archive viewer with backup timestamps, line counts and file sizes added backup restoration and switching added controls to delete specific lines, ranges or the last X lines added log rotation and telemetry reset controls added the /log-archives admin endpoint 7 new admin controls: delete-logs , delete-lines , delete-last , delete-line , rotate-logs , restore-log and reset-telemetry that’s a LOT more control over server logs than before. 2. endpoints & session security added 4 new endpoints : 3 admin endpoints: /errors , /errors/stream , /log-archives 1 public endpoint: /api/session /api/session now provides current session information, with csrfToken moved from /api/admin/summary to the new endpoint. also fixed the CSRF token not appearing in the document head. small bug, annoying consequences. removed the children=[] pattern from routes.js and its associated dependencies. 3. RAG / code parser improvements route extraction got a substantial upgrade. detects routes using exact path checks, prefix checks and array-based matching improved HTTP method inference for conditional routes, including GET and POST merges duplicate route entries and inferred methods expanded discovery beyond server/api/ , including /webhook and /admin/login improved /api/routes to return supported methods, match types, source files and line numbers the goal: give the RAG system more accurate route information instead of confidently retrieving incomplete or duplicated data. ᕦ(ò_óˇ)ᕤ 4. AI activity & markdown the AI activity view now displays elapsed time alongside tool summaries and responses, making it easier to follow what the system actually did. replaced the custom Markdown parser with marked AND dompurify for established parsing and HTML sanitisation. switched the configured model from openrouter/free to openai/gpt-6-luna , aiming for better performance and reliability. also deduplicated getReleaseInfo to avoid maintaining redundant version information. 5. testing added 3 npm scripts : test:code-parser for code parser tests test:rag for RAG tests test:all for the broader test suite and validation checks added automated code parser tests covering route extraction, HTTP method inference and deduplication. 6. docs updated README.md and project documentation to reflect the latest endpoints, admin controls, route extraction changes and RAG improvements. documentation staying in sync with the codebase. revolutionary concept, apparently. release summary v0.9.6-beta added: 4 endpoints 7 admin controls 3 admin pages 3 npm testing scripts improved error visibility, log management, session information and route extraction updated Markdown rendering, AI activity information and documentation the main focus was improving maintainability, debugging and the reliability of Slackzilla’s internal tooling. ( ͡° ͜ʖ ͡°) next devlog hint: a terminal is coming. think less clicking through admin pages, more interacting with Slackzilla directly through a terminal interface. details in the NEXT devlog. \(^o^)/"}, {"post_id": 71489, "ts": "2026-09-20T22:15:26Z", "hours": 27.4447, "text": "Devlog 10 - QOL DASHBOARD IMPROVEMENTS, RAG ENHANCEMENTS WITH TOOLS & CACING AND LOTS OF STUFF time logged: 27 hrs 30 mins date: 20/09/2026 version: v0.9.5-beta This devlog is COVERING A LOT of stuff that i did, but im not gonna drag this over like i did from all other devlogs so heres are the features: covering from v0.9.1-beta to v0.9.5-beta, see release-history.json for the full changelog Features added Added RAG TOOLS including getStatus - returns the status of the RAG getCommands - with enhanced filtering (filter by name, usage hint, id, category and fuzzy filter (makes it easier for RAG to find commands)) getReleaseInfo - returns the release info of the CURRENT version and (optionally) any other version (pass it by parameter) runCommand - runs a command by id getLogs - returns recent logs for the RAG to inspect (max 100, default 20) getMetrics - returns the metrics of the RAG (memory usage, cpu usage, etc) getRoutes - returns the routes of the APIs added 3 new scripts ( npm run ) which are rag - runs the RAG with or without the --ai flag to see context/answer cli rag:use-tool - runs a tool by name (with optional parameters) release - appends current release notes from package.json to release-history.json . Added new endpoints /api/telemetry - returns the telemetry history separately from the main status endpoint /api/command/:id - gets or executes a command by id /api/telemetry/stream - streams telemetry updates using SSE /api/admin/server-events - returns server events for the admin dashboard /api/ask - now uses SSE to stream the RAG’s activity ( yers now we can see the RAG in aciton ), context, tool usage, token usage and final response dashboard imporvements added a seperate admin server events page (wevent searching, filtering, prioritisation and stylying) added a command runner on the command page fixed recent activity not showing up on the dashboard Added visible AI activity to the AI page the RAG now emits activity events while processing a question AI page is cached on localStorage so you can go back and forth between pages without losing the AI page state Improved the RAG’s repository awareness added AST-based parsing using acorn and acorn-walk added persistent .rag/index.json added symbol search and dependency analysis added function, export, function call, environment variable and route extraction added richer code context and source metadata added automatic index rebuilding improved path-based dependency detection fixed the RAG detecting references created using path.join(rootDir, ...) add token budgeting and usage tracking. Changed how telemetry is handled telemetry history is no longer included in /api/status or any other endpoints CHANGED all admin endpoints so that none of them has the telemetryHistory anymore Added release history tracking added release-history.json /sz-release can now retrieve release information for different versions npm run release automatically appends the current release notes Tl;DR: RAG got a major upgrade with AST-powered repository indexing (acorn/acorn-walk), persistent indexing via .rag/index.json , symbol search, dependency analysis, function/export/call/env-var/route extraction, richer source metadata, automatic index rebuilding, 7 new RAG tools, 3 new CLI tools, SSE-powered streaming for /api/ask and telemetry, telemetry endpoints, admin server events, live AI activity tracing, token/context/tool usage visibility, AI session caching, release history tracking, telemetry separation from /api/status, admin API cleanup, and a large collection of bug fixes, repository-awareness improvements and major QOL improvements. . hopefully i will be devloging every version till i ship"}, {"post_id": 61072, "ts": "2026-09-03T19:44:37Z", "hours": 29.0225, "text": "Devlog 9: React Dashboard time logged: 29hr 1m date: 03/09/2026 The React dashboard is finally here! I completely migrated the old EJS dashboard with a new React app. THIS will be IS the biggest devlog yet, as it covers a lot of changes and new features. main features added is migration, codebase assistance, graphs, telemetary and a new api. Heres a summary of what i changed renamed src/ to bot/ - this is because its related to the bot and not the server and its not where all the main files are migrated the EJS dashboard into a React app overhauled the UI deleted the pages system and the workflow to build it added a new RAG modal that answers questions about the repo and shows related visual assets (also includes a new rag.js file that handles retrieval and generation of answers) The react dashboard has the following features: 10 pages (Home, Admin, Api, Commands, Docs, Home, Logs, AI, Sitemap, Status) 12 components 8 utilities js exports in the utils/ folder 404 page (with routing) & Error Boundary modal page public AI assistant page with repository-aware retrieval and related visual assets command API with stable IDs, command help, and captured command responses (so API can be called from the dashboard) public status, logs, metrics, command, and AI API endpoints admin feedback controls for filtering, viewing, replying, marking read/unread, and deleting (they dont work on windows only linux) CPU, memory, disk, and network telemetry with responsive graphs and hover data tooltips (so satisfying) Current React Architecture The active client source lives in server/client/src/ . Vite builds it into server/client/dist/ , which is served by server/server.js . React Router renders the page routes declared in server/client/src/components/utils/routes.js . The server still owns the HTTP status code: known browser routes receive the React shell with 200 , while unknown browser routes receive the same shell with 404 so the client can render the NotFound page without hiding the correct HTTP semantics. The old EJS dashboard and static page-generation flow are no longer the active dashboard path. The bot remains in bot/ , separate from the dashboard server, and the server uses explicit Node http handlers under server/api/ . RAG and Command APIs The new /ai page sends questions to POST /api/ask . server/lib/rag.js retrieves relevant repository text while excluding priv/ , .env files, dependencies, logs, and build output. It can identify related image assets such as the calculator flowchart without parsing binary image contents. If configured, the retrieved context is sent to the AI provider; otherwise the endpoint returns a local configuration message and source metadata. Commands are exposed through GET /api/commands , GET /api/commands/:id , and POST /api/commands/:id . The API adapter reuses the same command modules as Slack and captures their responses. The Commands page provides the interactive runner, while the AI page remains focused on repository questions. Explicit natural-language requests can still ask the RAG service to execute a recognised slash command and return its result. Limitations The migration exposed several boundaries that are now documented in docs/ : authentication and CSRF, the webhook protocol, API registration, setup, and RAG behaviour. Runtime persistence is still file-backed through server/database/store.js ; an external database remains a future adapter project rather than a required dependency. Linux systemd controls and deployment scripts are intended for the hosted environment. On Windows local development, the dashboard, APIs, telemetry, and React pages work, but system service actions and Bash deployment are not expected to succeed. The dashboard must be rebuilt and restarted after production client or server changes."}, {"post_id": 48936, "ts": "2026-08-17T14:33:48Z", "hours": 17.7958, "text": "Devlog 8 - server hosted dashboard finally happened time logged: 17hr 47min 45s date: 16/08/2026 The server hosted dashboard is finally here! It is hosted with the webhook, connected to the bot, and shows logs, status, and other information. architecture The Slackzilla server-hosted dashboard is the web control centre sitting alongside the webhook (runs on the same port). The server runs the dashboard, API routes, authentication/session handling, CSRF protection, logging, monitoring and administrative controls. The dashboard has been moving from the earlier static local/pages prototype (see devlog 7) towards an EJS-based server-rendered architecture, with shared layouts/partials and a global dashboard styling system. The server also handles the GitHub deployment webhook on port 9000 , while Nginx sits in front of the application. The dashboard is intended to expose things such as bot status, logs, statistics, monitoring, API documentation and admin controls rather than sshing into the server and running commands manually I’ve been separating the dashboard’s presentation layer, API layer and server logic. During development, I encountered and fixed several contract problems where route modules expected helpers such as context.sendError() and context.sendOk() that the runtime context did not provide. I also changed the authentication-aware API/SSE routes so unauthenticated requests return proper JSON/HTTP responses rather than accidentally redirecting an EventSource connection into an HTML login page. The dashboard has admin-only functionality, CSRF protection and server-side authentication, whilst the bot itself uses Slack’s Events/Slash Command mechanisms for incoming Slack activity. Slack’s Events API delivers subscribed events to the HTTP endpoint, while slash commands are sent to the configured app endpoint via HTTP POST. /api/admin routes are protected by an authenticated admin session and CSRF protection. Admin authentication uses a session cookie, which is only created after logging in through rylvion.hackclub.app/admin/login . The admin password is never stored in plaintext. It is stored as a PBKDF2-HMAC-SHA512 hash in the server environment, using a random salt and a high iteration count. The dashboard does not allow the password to be created or changed, so the server environment must be updated manually before restarting the service. CSRF tokens are generated server-side and sent to the authenticated client via a cookie. For POST requests, the client must return the token in the X-CSRF-Token header, preventing unauthorised or forged requests from triggering admin actions. /api/ (excluding /api/admin ) has no authentication Port 9000 is used for the webhook and the dashboard whilst the bot itself runs on socket mode. The api that currently has these endpoints base url: https://rylvion.hackclub.app/api/ GET /api/status - returns the bot status and other information GET /api/logs - returns the bot logs from slackzilla.log as JSON, including the file size in bytes POST /api/admin/control - allow the admin to control the accepts several actions such as start , stop , restart , redeploy , refresh , refresh-logs , refresh-status (self explanatory actions) with dangerous actions (such as redeploy , restart and stop ) contains a confirmation prompt to prevent accidental execution of the action. GET /api/admin/feedback - returns database feedback as JSON GET /api/admin/feedback/:id - returns the feedback with the given ID as JSON POST /api/admin/feedback/:id - allows the admin to control and accepts 3 actions such as delete , read , unread , respond . GET /api/admin/events - is a SSE (Server Sent Event) endpoint that allows the admin to receive real time events from the server such as logs, status, feedbacks and other information about the bot."}, {"post_id": 38519, "ts": "2026-07-31T22:58:19Z", "hours": 9.9792, "text": "Devlog 7 - Adding a Web Dashboard (locally) time logged: 9hr 58m date: 31/07/2026 ███████╗██╗ █████╗ ██████╗██╗ ██╗███████╗██╗██╗ ██╗ █████╗ ██╔════╝██║ ██╔══██╗██╔════╝██║ ██╔╝╚══███╔╝██║██║ ██║ ██╔══██╗ ███████╗██║ ███████║██║ █████╔╝ ███╔╝ ██║██║ ██║ ███████║ ╚════██║██║ ██╔══██║██║ ██╔═██╗ ███╔╝ ██║██║ ██║ ██╔══██║ ███████║███████╗██║ ██║╚██████╗██║ ██╗███████╗██║███████╗███████╗██║ ██║ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ added a local prototype view of the web dashboard for slackzilla, its hosted on Github Pages and is a static site that is not connected to the bot yet, it shows the design and layout of the dashboard and how it will look when its connected to the bot. the dashboard is designed to be responsive and works on both desktop and mobile devices. it has a clean and modern design that is easy to navigate. for Github Pages hosting, i used gh-pages branch which meant creating a seperate workflow ( pages.yml ) to build and deploy the dashboard to the dist/ folder. before that i needed a way to make it minified and optimised for production, so i used terser , clean-css and html-minifier-terser to minify the js, css and html files respectively, i do realise that this meant adding extra dependencies to the project (even though its not linked to the bot yet). The deployment website will be hosted on the bot’s server ( rylvion.hackclub.app ) and on the same port as the webhook server i also added new logging functionality that return smth like this the one below, this helps me track the usage of the commands and see how many times they have been used, when they were last used and by whom. this will be useful for the dashboard to show command usage statistics and manage command permissions. { \" commands \" : { \" sz-hash \" : { \" count \" : 3 , \" lastUsedAt \" : \" 2026-07-23T13:27:28.116Z \" , \" lastUser \" : \" rylvion \" , \" lastUserId \" : \" U0A84FA2NP2 \" } } } TL;DR: added a local prototype view of the web dashboard for slackzilla, its hosted on Github Pages and is a static site that is not connected to the bot yet, it shows the design and layout of the dashboard and how it will look when its connected to the bot and logging functionality that return command usage statistics and manage command permissions. introduced a new logging system that logs to both console and a file. added command usage tracking to record how often each command is used. enhanced server.js to serve dashboard, logs, and status pages. improved webhook handling and added signature verification. added a new metrics utility and feedback.js for tracking command usage statistics. next devlog will be about connecting the dashboard to the bot & server and making it functional, its gonna be a long one so stay tuned for that"}, {"post_id": 35837, "ts": "2026-07-27T15:06:51Z", "hours": 6.6219, "text": "Devlog 6 - command buffet time logged: 6hr 37m 19s date: 22/07/2026 okay since most of the major architectural refactors are done, i can finally focus on adding more commands to Slackzilla. this devlog is about the new commands that i added to the bot, which are mostly utility commands that can be used for various purposes. base64 encoding hashing - supports multiple algorithms, default: sha256 decoder - decodes every algorithm that hashing supports random ids (uuid) secure tokens random numbers unix date conversion text case conversion (camel, pascal, snake, kebab) character counter rock paper scissors magic 8ball (the only entertainment command added in this devlog) the trickier parts were the input parsers. hash has to decide whether the first word is an algorithm or part of the text, case needs to split words without mangling the content too much, and unix has to switch between timestamps and readable dates without getting confused by weird inputs. i also added guardrails for invalid ranges and missing text so the bot gives a useful reply instead of just silently failing. the fun commands were the easiest win. 8ball just picks from a response list, and rps does a quick match against the player choice and the bot choice to decide whether it was a win, lose, or tie. it is very low stakes code, which is honestly refreshing after the manifest workflow stuff from last time. all utilities commands all have a help command associated to it the current utilities commands include: /sz-base64 - encodes a string to base64 /sz-hash - generates a hash of a string, default: sha256 /sz-decode - decodes a base64 encoded string /sz-uuid - generates a random uuid /sz-token - generates a random secure token /sz-random - generates a random number in a given range /sz-unix - converts a unix timestamp to a human-readable date and vice versa /sz-case - converts a string to camelCase, PascalCase, snake_case, or kebab-case /sz-count - counts the number of characters in a string /sz-rps - plays rock paper scissors with the bot /sz-calc - evaluates mathematical expression so all of it has a 2nd argument for help, so for example /sz-hash help will show the usage and examples of the command. i also added on package.json , 2 new scripts \"validate-commands\" : \"ajv validate -s schemas/command.schema.json -d src/data/commands.json\" , \"cmd-stats\" : \"node scripts/stats.js\" one to validate the commands.json file against the command.schema.json file, and another to provide statistics about the number of commands in the commands.json file. this will help me keep track of how many commands are in the bot and also make sure that the commands.json file is valid before a pull request is merged. currently, the bot has 22 commands in total, and 11 of them are utility commands (10 of them got added into this devlog (excluding the /sz-8ball that also was added in this devlog, but is an entertainment command)). the other 11 commands are the ones that were already in the bot before this devlog. i need some feedback on what other commands i should add to the bot, so if you have any ideas, please let me know. (im running out of ideas * sighs * ) im also planning on adding a web dashboard to the bot, which will allow users to see the bot’s status, logs, and other information in a more user-friendly way. this will be a big change, so stay tuned for that in the next devlog TL;DR: added a bunch of new slash commands for Slackzilla, kept the implementations small and native where possible, and tightened up the input handling so the new tools fail a little more gracefully."}, {"post_id": 33001, "ts": "2026-07-22T15:09:05Z", "hours": 7.1047, "text": "Devlog 5 - manifest workflow time logged: 7hrs 6min 16 sec date: 21/07/2026 ok so i kinda lied in the last devlog. this ended up being another major architectural change to slackzilla. the slack manifest system was always the most brittle part of the pipeline and manually maintaining manifest.json was a guaranteed way to let things drift. today i finally automated the entire manifest workflow. the new setup makes commands.json and meta.js the single source of truth. i wrote a manifest generator that loads all metadata like descriptions colours oauth scopes bot info and merges it with the command definitions to build a complete slack manifest object. once assembled it writes manifest.json and syncs it during deployment. validation is baked directly into the generator. i wired AJV into both stages. every command is validated against command.schema.json and the final manifest is validated again against slack’s official schema. if anything fails the generator stops immediately with a clear error instead of producing a broken file. this caught several issues especially after i moved all schemas into a dedicated schemas/ directory to clean up the project structure. the github actions workflow also got a major overhaul. every push now generates the manifest validates commands and manifest rotates the slack configuration token updates github secrets syncs the manifest through the slack api and deploys the bot. changing a slash command in commands.json now updates both the bot and the slack app config automatically. no more manual edits to manifest.json or the slack app settings. the entire pipeline is now self maintaining and fully automated. token rotation was the biggest pain. slack configuration tokens only last twelve hours so storing them in github secrets was not enough. i created a fine grained github PAT with permission to modify repo secrets and wrote rotateManifestToken.js to handle the full refresh cycle. it rotates the manifest token receives a new refresh token and updates both secrets so the next deployment does not break. i spent way too long debugging an invalid_refresh_token error. note that slack’s copy button does not copy the existing refresh token it generates a new pair. every time i clicked it the previously saved token became invalid instantly. once i realised that i started updating github secrets immediately after copying the new pair so everything stayed in sync. after that the rotated token still was not being passed correctly between github actions steps. i switched to GITHUB_OUTPUT so the rotation step could hand the new token to the manifest sync step. then slack started returning not_authed which led to another rabbit hole. the manifest update endpoint requires the token in the correct auth header not the request body. once i fixed the request format the entire pipeline finally ran clean end to end. See figure 2 for github actions workflow TL;DR slackzilla now auto generates its slack manifest validates everything with AJV rotates configuration tokens syncs the manifest during deployment and updates the bot server with minimal manual work. after a lot of debugging around token rotation schema mismatches and github actions quirks the deployment pipeline is basically self maintaining except refreshing the github PAT every ninety days."}, {"post_id": 30675, "ts": "2026-07-18T13:24:53Z", "hours": 2.345, "text": "Devlog 4: calc and roll commands time logged: 2 hr 20 minutes date: 17/07/2026 today i spent some time reading the Java Shunting Yard Algorithm implementation on GeeksforGeeks . The example focuses entirely on converting an infix expression into postfix form. It scans the expression character by character, places operands directly into the output string, and uses a stack to manage operators based on precedence and associativity. Once the scan is complete, any remaining operators are appended to produce a postfix expression like 5238-52^^/+. The Java version supports operators including + , - , * , / , and ^ , and it handles parentheses, but it stops after producing the postfix representation. It does not evaluate the numerical result. after reading that, i wanted something more complete for Slackzilla. I used the same core idea of converting infix to postfix, but I extended it in several ways. My implementation tokenises the input instead of reading one character at a time, which allows it to support multi digit numbers and decimals. I added unary minus detection so expressions like -3 or 5*-2 behave correctly. One challenge was distinguishing unary minus from subtraction. The parser has to determine whether it starts with a number or subtracts two values depending on the previous token. I kept exponentiation with the correct right associativity. Once the postfix array is built, I added a second stage that evaluates the postfix expression using a number stack. This lets the function return the final computed value rather than just the postfix notation. The result is a more flexible and practical version of the algorithm that fits naturally into Slackzilla and can evaluate real expressions interactively. after finishing the calculator command, I also added another command to Slackzilla called /sz-roll . This command allows users to simulate dice rolls directly inside Slack. It supports normal dice notation like d6 , custom dice sizes like d20 , multiple dice such as 2d6 , and modifiers like 2d20+5 . I added parsing logic to split the dice expression into the amount of dice, number of sides, and any modifier before rolling each dice individually and calculating the final total. I also added a /sz-roll help and /sz-calc help command which explains how to use the command and shows examples of supported formats. also i spent A LOT of time making the flowchart to describe this more than the implementation itself. I think it will be useful for future reference and for anyone else who wants to understand how the algorithm works. i also added json schema validation for commands.json as talked in devlog 2 the commands.json is the source of truth, so i addded a validator.yml to validate the json schema of commands.json and make sure it is valid before a pull request is merged. This will help prevent errors and ensure that the commands are correctly defined. TL;DR: added a calculator using the Shunting Yard algorithm with postfix evaluation, plus a flexible dice rolling command. Also added help commands, a flowchart and automated JSON schema validation. also ill add way more devlogs from now on since most of my last devlogs were major architecture refactor, unless there is a major change, i will just add a small devlog to add a new command/small feature, fix a bug, improve an existing feature and add more documentation."}, {"post_id": 27894, "ts": "2026-07-13T20:15:52Z", "hours": 6.0267, "text": "Devlog 3 - github actions webhook request (13/07/2026) time logged: 6hr 01min i added a webhook dispatcher that automatically triggers a deployment whenever i commit to the main branch. Instead of manually pulling changes on the server and restarting the service myself, the GitHub Action now sends a signed webhook to my deployment server, which verifies it and runs the deploy script for me. i also added 2 more commands /sz-meme - this makes a meme /sz-echo [str] - this echoes the string you can see the flowchart below and see the full devlog 3 here (hyperlinked) TL;DR whenever i commit the server automatically receives it and slackzilla updates to the latest version"}, {"post_id": 21774, "ts": "2026-07-03T21:35:52Z", "hours": 11.0325, "text": "Devlog 2 - server setup & modular command system & more [03/07/2026] time logged: 10hr 59 min so since the last devlog, i’ve have worked on LOADS of things including behind the scene (this doesnt get tracked on hacaktime :( ), i dont even know if this will hit the char limit, but anyways, here are the logs EDIT: IT DID HIT THE CHAR LIMIT, turns out the original devlog was ~9.6k characters 💀 while the limit is only 4k, so this is the shortened version. the full one is still in priv/devlogs/devlog2.md if anyone wants the extended edition.z Commits logs e47c48ac0970b49015e920607a59657259122f2f - made the cur proj into more modular featuring dynamic command loading system w commands.json as the source of truth on this, i figured out that packing every single thing into one file is a bad idea, so i made a modular command system that loads commands dynamically from a commands.json file, this way, i can add new commands without having to touch the main bot.js file, and also, it makes it easier to manage commands since they are all in one place 03b07ffc6f44d0231f9073f637caee1f9437705a) - added more detailed server logging with time & user at the start of most console logs onto terminal [coloured output] this was way more of a pain than i thought it was gonna be. after countless rounds of testing i finally got it working how i wanted. the ansi colours kept either leaking into the rest of the terminal or resetting back to the default colour when i needed them to go back to the current log level. i was genuinely losing my mind because every “fix” just broke something else. after hours of messing around i ended up making a wrapper so instead of resetting after things like the username or command, it switches back to whatever the current log level colour is (info, success or error), then only resets once right at the end of the log. it took way longer than it should’ve and nearly made me give up, but it finally does exactly what i wanted and nothing leaks anymore.added src/utils/logger.js and switched almost every console.log over to it. it adds timestamps, users, commands and coloured log levels.and changed all the console logs in src/bot.js and src/cmds/ to use the new logger api b81c739cc06edba2895695e51dbbf88d8868f19f - overhauled readme well as the name implies its pretty self explanatory lol but i massively expanded the README with better documentation and setup instructions. Server setup find more info in the setup guide on Step 7 out of 8 in https://stardance.hackclub.com/missions/slack-bot/guide#step-7 i had to apply for a Nest server and get SSH access.yeah so basically my starting gear is a potato server (2GB RAM, 16GB storage) but that’s more than enough for this bot. i also got to mess around with linux for a bit ( yes i am a windows user ). honestly… i kinda liked it and i’m like 80% convinced i’ll switch one day (but too much of a hassle to switch rn, but maybe in the future). after installing everything, setting up the environment variables and creating a systemd service, i finally got the bot running 24/7.TL;DR: i got the bot running 24/7 in the server and it works perfectly fine, and i can now add new commands without having to touch the main bot.js file, and also, and added detailed server logging with time & user aight y’all i spent an ENTIRE HOUR writing this devlog and THEN i had to rewrite a shortened down version, y’all better rate me 9/9 for story telling, rylvion signing out 🫡 pls see my full devlog version"}, {"post_id": 1731, "ts": "2026-06-03T22:11:42Z", "hours": 1.815, "text": "slackzilla after countless testing of figuring out why my bot isnt working, i found out the reason… well sort of… it seems so that the bot doesnt read my messages nad only respond to app commands idk how to make it respond to my messages if it not a cmd but anyways here are the logs 7be9077de2a487f7be8a779123420295dc9bff7e - add MIT license 9ceb9c2fe638f91ab6b0a14326437c9a5f32f499 - add initial bot setup (just for testing!] 66eb775434c871f063fd57daf0bdfc7bd66501f1 - add launch.json, .env.example (like formats), README.md, add stuff to bot.js btw this isnt hosted (will host soon) or anything and to use it you have to use the cmd prefix (sc-) e.g., /sz-ping"}]...
|
Title: slackzilla 🦖🦖 by @rylvion | Stardance
Devl Title: slackzilla 🦖🦖 by @rylvion | Stardance
Devlogs:
slackzilla after countless testing of figuring out why my bot isnt working, i found out the reason… well sort of… it seems so that the bot doesnt read my messages nad only respond to app commands idk how to make it respond to my messages if it not a cmd but anyways here are the logs 7be9077de2a487f7be8a779123420295dc9bff7e - add MIT license 9ceb9c2fe638f91ab6b0a14326437c9a5f32f499 - add initial bot setup (just for testing!] 66eb775434c871f063fd57daf0bdfc7bd66501f1 - add launch.json, .env.example (like formats), README.md, add stuff to bot.js btw this isnt hosted (will host soon) or anything and to use it you have to use the cmd prefix (sc-) e.g., /sz-ping
Devlog 2 - server setup & modular command system & more [03/07/2026] time logged: 10hr 59 min so since the last devlog, i’ve have worked on LOADS of things including behind the scene (this doesnt get tracked on hacaktime :( ), i dont even know if this will hit the char limit, but anyways, here are the logs EDIT: IT DID HIT THE CHAR LIMIT, turns out the original devlog was ~9.6k characters 💀 while the limit is only 4k, so this is the shortened version. the full one is still in priv/devlogs/devlog2.md if anyone wants the extended edition.z Commits logs e47c48ac0970b49015e920607a59657259122f2f - made the cur proj into more modular featuring dynamic command loading system w commands.json as the source of truth on this, i figured out that packing every single thing into one file is a bad idea, so i made a modular command system that loads commands dynamically from a commands.json file, this way, i can add new commands without having to touch the main bot.js file, and also, it makes it easier to manage commands since they are all in one place 03b07ffc6f44d0231f9073f637caee1f9437705a) - added more detailed server logging with time & user at the start of most console logs onto terminal [coloured output] this was way more of a pain than i thought it was gonna be. after countless rounds of testing i finally got it working how i wanted. the ansi colours kept either leaking into the rest of the terminal or resetting back to the default colour when i needed them to go back to the current log level. i was genuinely losing my mind because every “fix” just broke something else. after hours of messing around i ended up making a wrapper so instead of resetting after things like the username or command, it switches back to whatever the current log level colour is (info, success or error), then only resets once right at the end of the log. it took way longer than it should’ve and nearly made me give up, but it finally does exactly what i wanted and nothing leaks anymore.added src/utils/logger.js and switched almost every console.log over to it. it adds timestamps, users, commands and coloured log levels.and changed all the console logs in src/bot.js and src/cmds/ to use the new logger api b81c739cc06edba2895695e51dbbf88d8868f19f - overhauled readme well as the name implies its pretty self explanatory lol but i massively expanded the README with better documentation and setup instructions. Server setup find more info in the setup guide on Step 7 out of 8 in https://stardance.hackclub.com/missions/slack-bot/guide#step-7 i had to apply for a Nest server and get SSH access.yeah so basically my starting gear is a potato server (2GB RAM, 16GB storage) but that’s more than enough for this bot. i also got to mess around with linux for a bit ( yes i am a windows user ). honestly… i kinda liked it and i’m like 80% convinced i’ll switch one day (but too much of a hassle to switch rn, but maybe in the future). after installing everything, setting up the environment variables and creating a systemd service, i finally got the bot running 24/7.TL;DR: i got the bot running 24/7 in the server and it works perfectly fine, and i can now add new commands without having to touch the main bot.js file, and also, and added detailed server logging with time & user aight y’all i spent an ENTIRE HOUR writing this devlog and THEN i had to rewrite a shortened down version, y’all better rate me 9/9 for story telling, rylvion signing out 🫡 pls see my full devlog version
Devlog 3 - github actions webhook request (13/07/2026) time logged: 6hr 01min i added a webhook dispatcher that automatically triggers a deployment whenever i commit to the main branch. Instead of manually pulling changes on the server and restarting the service myself, the GitHub Action now sends a signed webhook to my deployment server, which verifies it and runs the deploy script for me. i also added 2 more commands /sz-meme - this makes a meme /sz-echo [str] - this echoes the string you can see the flowchart below and see the full devlog 3 here (hyperlinked) TL;DR whenever i commit the server automatically receives it and slackzilla updates to the latest version
Devlog 4: calc and roll commands time logged: 2 hr 20 minutes date: 17/07/2026 today i spent some time reading the Java Shunting Yard Algorithm implementation on GeeksforGeeks . The example focuses entirely on converting an infix expression into postfix form. It scans the expression character by character, places operands directly into the output string, and uses a stack to manage operators based on precedence and associativity. Once the scan is complete, any remaining operators are appended to produce a postfix expression like 5238-52^^/+. The Java version supports operators including + , - , * , / , and ^ , and it handles parentheses, but it stops after producing the postfix representation. It does not evaluate the numerical result. after reading that, i wanted something more complete for Slackzilla. I used the same core idea of converting infix to postfix, but I extended it in several ways. My implementation tokenises the input instead of reading one character at a time, which allows it to support multi digit numbers and decimals. I added unary minus detection so expressions like -3 or 5*-2 behave correctly. One challenge was distinguishing unary minus from subtraction. The parser has to determine whether it starts with a number or subtracts two values depending on the previous token. I kept exponentiation with the correct right associativity. Once the postfix array is built, I added a second stage that evaluates the postfix expression using a number stack. This lets the function return the final computed value rather than just the postfix notation. The result is a more flexible and practical version of the algorithm that fits naturally into Slackzilla and can evaluate real expressions interactively. after finishing the calculator command, I also added another command to Slackzilla called /sz-roll . This command allows users to simulate dice rolls directly inside Slack. It supports normal dice notation like d6 , custom dice sizes like d20 , multiple dice such as 2d6 , and modifiers like 2d20+5 . I added parsing logic to split the dice expression into the amount of dice, number of sides, and any modifier before rolling each dice individually and calculating the final total. I also added a /sz-roll help and /sz-calc help command which explains how to use the command and shows examples of supported formats. also i spent A LOT of time making the flowchart to describe this more than the implementation itself. I think it will be useful for future reference and for anyone else who wants to understand how the algorithm works. i also added json schema validation for commands.json as talked in devlog 2 the commands.json is the source of truth, so i addded a validator.yml to validate the json schema of commands.json and make sure it is valid before a pull request is merged. This will help prevent errors and ensure that the commands are correctly defined. TL;DR: added a calculator using the Shunting Yard algorithm with postfix evaluation, plus a flexible dice rolling command. Also added help commands, a flowchart and automated JSON schema validation. also ill add way more devlogs from now on since most of my last devlogs were major architecture refactor, unless there is a major change, i will just add a small devlog to add a new command/small feature, fix a bug, improve an existing feature and add more documentation.
Devlog 5 - manifest workflow time logged: 7hrs 6min 16 sec date: 21/07/2026 ok so i kinda lied in the last devlog. this ended up being another major architectural change to slackzilla. the slack manifest system was always the most brittle part of the pipeline and manually maintaining manifest.json was a guaranteed way to let things drift. today i finally automated the entire manifest workflow. the new setup makes commands.json and meta.js the single source of truth. i wrote a manifest generator that loads all metadata like descriptions colours oauth scopes bot info and merges it with the command definitions to build a complete slack manifest object. once assembled it writes manifest.json and syncs it during deployment. validation is baked directly into the generator. i wired AJV into both stages. every command is validated against command.schema.json and the final manifest is validated again against slack’s official schema. if anything fails the generator stops immediately with a clear error instead of producing a broken file. this caught several issues especially after i moved all schemas into a dedicated schemas/ directory to clean up the project structure. the github actions workflow also got a major overhaul. every push now generates the manifest validates commands and manifest rotates the slack configuration token updates github secrets syncs the manifest through the slack api and deploys the bot. changing a slash command in commands.json now updates both the bot and the slack app config automatically. no more manual edits to manifest.json or the slack app settings. the entire pipeline is now self maintaining and fully automated. token rotation was the biggest pain. slack configuration tokens only last twelve hours so storing them in github secrets was not enough. i created a fine grained github PAT with permission to modify repo secrets and wrote rotateManifestToken.js to handle the full refresh cycle. it rotates the manifest token receives a new refresh token and updates both secrets so the next deployment does not break. i spent way too long debugging an invalid_refresh_token error. note that slack’s copy button does not copy the existing refresh token it generates a new pair. every time i clicked it the previously saved token became invalid instantly. once i realised that i started updating github secrets immediately after copying the new pair so everything stayed in sync. after that the rotated token still was not being passed correctly between github actions steps. i switched to GITHUB_OUTPUT so the rotation step could hand the new token to the manifest sync step. then slack started returning not_authed which led to another rabbit hole. the manifest update endpoint requires the token in the correct auth header not the request body. once i fixed the request format the entire pipeline finally ran clean end to end. See figure 2 for github actions workflow TL;DR slackzilla now auto generates its slack manifest validates everything with AJV rotates configuration tokens syncs the manifest during deployment and updates the bot server with minimal manual work. after a lot of debugging around token rotation schema mismatches and github actions quirks the deployment pipeline is basically self maintaining except refreshing the github PAT every ninety days.
Devlog 6 - command buffet time logged: 6hr 37m 19s date: 22/07/2026 okay since most of the major architectural refactors are done, i can finally focus on adding more commands to Slackzilla. this devlog is about the new commands that i added to the bot, which are mostly utility commands that can be used for various purposes. base64 encoding hashing - supports multiple algorithms, default: sha256 decoder - decodes every algorithm that hashing supports random ids (uuid) secure tokens random numbers unix date conversion text case conversion (camel, pascal, snake, kebab) character counter rock paper scissors magic 8ball (the only entertainment command added in this devlog) the trickier parts were the input parsers. hash has to decide whether the first word is an algorithm or part of the text, case needs to split words without mangling the content too much, and unix has to switch between timestamps and readable dates without getting confused by weird inputs. i also added guardrails for invalid ranges and missing text so the bot gives a useful reply instead of just silently failing. the fun commands were the easiest win. 8ball just picks from a response list, and rps does a quick match against the player choice and the bot choice to decide whether it was a win, lose, or tie. it is very low stakes code, which is honestly refreshing after the manifest workflow stuff from last time. all utilities commands all have a help command associated to it the current utilities commands include: /sz-base64 - encodes a string to base64 /sz-hash - generates a hash of a string, default: sha256 /sz-decode - decodes a base64 encoded string /sz-uuid - generates a random uuid /sz-token - generates a random secure token /sz-random - generates a random number in a given range /sz-unix - converts a unix timestamp to a human-readable date and vice versa /sz-case - converts a string to camelCase, PascalCase, snake_case, or kebab-case /sz-count - counts the number of characters in a string /sz-rps - plays rock paper scissors with the bot /sz-calc - evaluates mathematical expression so all of it has a 2nd argument for help, so for example /sz-hash help will show the usage and examples of the command. i also added on package.json , 2 new scripts "validate-commands" : "ajv validate -s schemas/command.schema.json -d src/data/commands.json" , "cmd-stats" : "node scripts/stats.js" one to validate the commands.json file against the command.schema.json file, and another to provide statistics about the number of commands in the commands.json file. this will help me keep track of how many commands are in the bot and also make sure that the commands.json file is valid before a pull request is merged. currently, the bot has 22 commands in total, and 11 of them are utility commands (10 of them got added into this devlog (excluding the /sz-8ball that also was added in this devlog, but is an entertainment command)). the other 11 commands are the ones that were already in the bot before this devlog. i need some feedback on what other commands i should add to the bot, so if you have any ideas, please let me know. (im running out of ideas * sighs * ) im also planning on adding a web dashboard to the bot, which will allow users to see the bot’s status, logs, and other information in a more user-friendly way. this will be a big change, so stay tuned for that in the next devlog TL;DR: added a bunch of new slash commands for Slackzilla, kept the implementations small and native where possible, and tightened up the input handling so the new tools fail a little more gracefully.
Devlog 7 - Adding a Web Dashboard (locally) time logged: 9hr 58m date: 31/07/2026 ███████╗██╗ █████╗ ██████╗██╗ ██╗███████╗██╗██╗ ██╗ █████╗ ██╔════╝██║ ██╔══██╗██╔════╝██║ ██╔╝╚══███╔╝██║██║ ██║ ██╔══██╗ ███████╗██║ ███████║██║ █████╔╝ ███╔╝ ██║██║ ██║ ███████║ ╚════██║██║ ██╔══██║██║ ██╔═██╗ ███╔╝ ██║██║ ██║ ██╔══██║ ███████║███████╗██║ ██║╚██████╗██║ ██╗███████╗██║███████╗███████╗██║ ██║ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ added a local prototype view of the web dashboard for slackzilla, its hosted on Github Pages and is a static site that is not connected to the bot yet, it shows the design and layout of the dashboard and how it will look when its connected to the bot. the dashboard is designed to be responsive and works on both desktop and mobile devices. it has a clean and modern design that is easy to navigate. for Github Pages hosting, i used gh-pages branch which meant creating a seperate workflow ( pages.yml ) to build and deploy the dashboard to the dist/ folder. before that i needed a way to make it minified and optimised for production, so i used terser , clean-css and html-minifier-terser to minify the js, css and html files respectively, i do realise that this meant adding extra dependencies to the project (even though its not linked to the bot yet). The deployment website will be hosted on the bot’s server ( rylvion.hackclub.app ) and on the same port as the webhook server i also added new logging functionality that return smth like this the one below, this helps me track the usage of the commands and see how many times they have been used, when they were last used and by whom. this will be useful for the dashboard to show command usage statistics and manage command permissions. { " commands " : { " sz-hash " : { " count " : 3 , " lastUsedAt " : " 2026-07-23T13:27:28.116Z " , " lastUser " : " rylvion " , " lastUserId " : " U0A84FA2NP2 " } } } TL;DR: added a local prototype view of the web dashboard for slackzilla, its hosted on Github Pages and is a static site that is not connected to the bot yet, it shows the design and layout of the dashboard and how it will look when its connected to the bot and logging functionality that return command usage statistics and manage command permissions. introduced a new logging system that logs to both console and a file. added command usage tracking to record how often each command is used. enhanced server.js to serve dashboard, logs, and status pages. improved webhook handling and added signature verification. added a new metrics utility and feedback.js for tracking command usage statistics. next devlog will be about connecting the dashboard to the bot & server and making it functional, its gonna be a long one so stay tuned for that
Devlog 8 - server hosted dashboard finally happened time logged: 17hr 47min 45s date: 16/08/2026 The server hosted dashboard is finally here! It is hosted with the webhook, connected to the bot, and shows logs, status, and other information. architecture The Slackzilla server-hosted dashboard is the web control centre sitting alongside the webhook (runs on the same port). The server runs the dashboard, API routes, authentication/session handling, CSRF protection, logging, monitoring and administrative controls. The dashboard has been moving from the earlier static local/pages prototype (see devlog 7) towards an EJS-based server-rendered architecture, with shared layouts/partials and a global dashboard styling system. The server also handles the GitHub deployment webhook on port 9000 , while Nginx sits in front of the application. The dashboard is intended to expose things such as bot status, logs, statistics, monitoring, API documentation and admin controls rather than sshing into the server and running commands manually I’ve been separating the dashboard’s presentation layer, API layer and server logic. During development, I encountered and fixed several contract problems where route modules expected helpers such as context.sendError() and context.sendOk() that the runtime context did not provide. I also changed the authentication-aware API/SSE routes so unauthenticated requests return proper JSON/HTTP responses rather than accidentally redirecting an EventSource connection into an HTML login page. The dashboard has admin-only functionality, CSRF protection and server-side authentication, whilst the bot itself uses Slack’s Events/Slash Command mechanisms for incoming Slack activity. Slack’s Events API delivers subscribed events to the HTTP endpoint, while slash commands are sent to the configured app endpoint via HTTP POST. /api/admin routes are protected by an authenticated admin session and CSRF protection. Admin authentication uses a session cookie, which is only created after logging in through rylvion.hackclub.app/admin/login . The admin password is never stored in plaintext. It is stored as a PBKDF2-HMAC-SHA512 hash in the server environment, using a random salt and a high iteration count. The dashboard does not allow the password to be created or changed, so the server environment must be updated manually before restarting the service. CSRF tokens are generated server-side and sent to the authenticated client via a cookie. For POST requests, the client must return the token in the X-CSRF-Token header, preventing unauthorised or forged requests from triggering admin actions. /api/ (excluding /api/admin ) has no authentication Port 9000 is used for the webhook and the dashboard whilst the bot itself runs on socket mode. The api that currently has these endpoints base url: https://rylvion.hackclub.app/api/ GET /api/status - returns the bot status and other information GET /api/logs - returns the bot logs from slackzilla.log as JSON, including the file size in bytes POST /api/admin/control - allow the admin to control the accepts several actions such as start , stop , restart , redeploy , refresh , refresh-logs , refresh-status (self explanatory actions) with dangerous actions (such as redeploy , restart and stop ) contains a confirmation prompt to prevent accidental execution of the action. GET /api/admin/feedback - returns database feedback as JSON GET /api/admin/feedback/:id - returns the feedback with the given ID as JSON POST /api/admin/feedback/:id - allows the admin to control and accepts 3 actions such as delete , read , unread , respond . GET /api/admin/events - is a SSE (Server Sent Event) endpoint that allows the admin to receive real time events from the server such as logs, status, feedbacks and other information about the bot.
Devlog 9: React Dashboard time logged: 29hr 1m date: 03/09/2026 The React dashboard is finally here! I completely migrated the old EJS dashboard with a new React app. THIS will be IS the biggest devlog yet, as it covers a lot of changes and new features. main features added is migration, codebase assistance, graphs, telemetary and a new api. Heres a summary of what i changed renamed src/ to bot/ - this is because its related to the bot and not the server and its not where all the main files are migrated the EJS dashboard into a React app overhauled the UI deleted the pages system and the workflow to build it added a new RAG modal that answers questions about the repo and shows related visual assets (also includes a new rag.js file that handles retrieval and generation of answers) The react dashboard has the following features: 10 pages (Home, Admin, Api, Commands, Docs, Home, Logs, AI, Sitemap, Status) 12 components 8 utilities js exports in the utils/ folder 404 page (with routing) & Error Boundary modal page public AI assistant page with repository-aware retrieval and related visual assets command API with stable IDs, command help, and captured command responses (so API can be called from the dashboard) public status, logs, metrics, command, and AI API endpoints admin feedback controls for filtering, viewing, replying, marking read/unread, and deleting (they dont work on windows only linux) CPU, memory, disk, and network telemetry with responsive graphs and hover data tooltips (so satisfying) Current React Architecture The active client source lives in server/client/src/ . Vite builds it into server/client/dist/ , which is served by server/server.js . React Router renders the page routes declared in server/client/src/components/utils/routes.js . The server still owns the HTTP status code: known browser routes receive the React shell with 200 , while unknown browser routes receive the same shell with 404 so the client can render the NotFound page without hiding the correct HTTP semantics. The old EJS dashboard and static page-generation flow are no longer the active dashboard path. The bot remains in bot/ , separate from the dashboard server, and the server uses explicit Node http handlers under server/api/ . RAG and Command APIs The new /ai page sends questions to POST /api/ask . server/lib/rag.js retrieves relevant repository text while excluding priv/ , .env files, dependencies, logs, and build output. It can identify related image assets such as the calculator flowchart without parsing binary image contents. If configured, the retrieved context is sent to the AI provider; otherwise the endpoint returns a local configuration message and source metadata. Commands are exposed through GET /api/commands , GET /api/commands/:id , and POST /api/commands/:id . The API adapter reuses the same command modules as Slack and captures their responses. The Commands page provides the interactive runner, while the AI page remains focused on repository questions. Explicit natural-language requests can still ask the RAG service to execute a recognised slash command and return its result. Limitations The migration exposed several boundaries that are now documented in docs/ : authentication and CSRF, the webhook protocol, API registration, setup, and RAG behaviour. Runtime persistence is still file-backed through server/database/store.js ; an external database remains a future adapter project rather than a required dependency. Linux systemd controls and deployment scripts are intended for the hosted environment. On Windows local development, the dashboard, APIs, telemetry, and React pages work, but system service actions and Bash deployment are not expected to succeed. The dashboard must be rebuilt and restarted after production client or server changes.
Devlog 10 - QOL DASHBOARD IMPROVEMENTS, RAG ENHANCEMENTS WITH TOOLS & CACING AND LOTS OF STUFF time logged: 27 hrs 30 mins date: 20/09/2026 version: v0.9.5-beta This devlog is COVERING A LOT of stuff that i did, but im not gonna drag this over like i did from all other devlogs so heres are the features: covering from v0.9.1-beta to v0.9.5-beta, see release-history.json for the full changelog Features added Added RAG TOOLS including getStatus - returns the status of the RAG getCommands - with enhanced filtering (filter by name, usage hint, id, category and fuzzy filter (makes it easier for RAG to find commands)) getReleaseInfo - returns the release info of the CURRENT version and (optionally) any other version (pass it by parameter) runCommand - runs a command by id getLogs - returns recent logs for the RAG to inspect (max 100, default 20) getMetrics - returns the metrics of the RAG (memory usage, cpu usage, etc) getRoutes - returns the routes of the APIs added 3 new scripts ( npm run ) which are rag - runs the RAG with or without the --ai flag to see context/answer cli rag:use-tool - runs a tool by name (with optional parameters) release - appends current release notes from package.json to release-history.json . Added new endpoints /api/telemetry - returns the telemetry history separately from the main status endpoint /api/command/:id - gets or executes a command by id /api/telemetry/stream - streams telemetry updates using SSE /api/admin/server-events - returns server events for the admin dashboard /api/ask - now uses SSE to stream the RAG’s activity ( yers now we can see the RAG in aciton ), context, tool usage, token usage and final response dashboard imporvements added a seperate admin server events page (wevent searching, filtering, prioritisation and stylying) added a command runner on the command page fixed recent activity not showing up on the dashboard Added visible AI activity to the AI page the RAG now emits activity events while processing a question AI page is cached on localStorage so you can go back and forth between pages without losing the AI page state Improved the RAG’s repository awareness added AST-based parsing using acorn and acorn-walk added persistent .rag/index.json added symbol search and dependency analysis added function, export, function call, environment variable and route extraction added richer code context and source metadata added automatic index rebuilding improved path-based dependency detection fixed the RAG detecting references created using path.join(rootDir, ...) add token budgeting and usage tracking. Changed how telemetry is handled telemetry history is no longer included in /api/status or any other endpoints CHANGED all admin endpoints so that none of them has the telemetryHistory anymore Added release history tracking added release-history.json /sz-release can now retrieve release information for different versions npm run release automatically appends the current release notes Tl;DR: RAG got a major upgrade with AST-powered repository indexing (acorn/acorn-walk), persistent indexing via .rag/index.json , symbol search, dependency analysis, function/export/call/env-var/route extraction, richer source metadata, automatic index rebuilding, 7 new RAG tools, 3 new CLI tools, SSE-powered streaming for /api/ask and telemetry, telemetry endpoints, admin server events, live AI activity tracing, token/context/tool usage visibility, AI session caching, release history tracking, telemetry separation from /api/status, admin API cleanup, and a large collection of bug fixes, repository-awareness improvements and major QOL improvements. . hopefully i will be devloging every version till i ship
devlog 11 - ADMIN EHANCEMENTS: errors views, log archiving & restoration, logs deletion controls, RAG IMPROVEMENTS AND MORE… date: 11/10/2026 time logged: 31hr 57m version: v0.9.6-beta this release focused on making Slackzilla easier to debug, manage and understand internally. a LOT of work went into the admin panel, route extraction and testing. 1. admin panel got some SERIOUS upgrades added 3 new admin pages for server events, errors and logs. also split admin.css into separate stylesheets because one giant stylesheet isn’t exactly a maintenance strategy. error monitoring added an error viewer with timestamps, stack traces and source files improved error messages to make them more user-friendly log management added a log archive viewer with backup timestamps, line counts and file sizes added backup restoration and switching added controls to delete specific lines, ranges or the last X lines added log rotation and telemetry reset controls added the /log-archives admin endpoint 7 new admin controls: delete-logs , delete-lines , delete-last , delete-line , rotate-logs , restore-log and reset-telemetry that’s a LOT more control over server logs than before. 2. endpoints & session security added 4 new endpoints : 3 admin endpoints: /errors , /errors/stream , /log-archives 1 public endpoint: /api/session /api/session now provides current session information, with csrfToken moved from /api/admin/summary to the new endpoint. also fixed the CSRF token not appearing in the document head. small bug, annoying consequences. removed the children=[] pattern from routes.js and its associated dependencies. 3. RAG / code parser improvements route extraction got a substantial upgrade. detects routes using exact path checks, prefix checks and array-based matching improved HTTP method inference for conditional routes, including GET and POST merges duplicate route entries and inferred methods expanded discovery beyond server/api/ , including /webhook and /admin/login improved /api/routes to return supported methods, match types, source files and line numbers the goal: give the RAG system more accurate route information instead of confidently retrieving incomplete or duplicated data. ᕦ(ò_óˇ)ᕤ 4. AI activity & markdown the AI activity view now displays elapsed time alongside tool summaries and responses, making it easier to follow what the system actually did. replaced the custom Markdown parser with marked AND dompurify for established parsing and HTML sanitisation. switched the configured model from openrouter/free to openai/gpt-6-luna , aiming for better performance and reliability. also deduplicated getReleaseInfo to avoid maintaining redundant version information. 5. testing added 3 npm scripts : test:code-parser for code parser tests test:rag for RAG tests test:all for the broader test suite and validation checks added automated code parser tests covering route extraction, HTTP method inference and deduplication. 6. docs updated README.md and project documentation to reflect the latest endpoints, admin controls, route extraction changes and RAG improvements. documentation staying in sync with the codebase. revolutionary concept, apparently. release summary v0.9.6-beta added: 4 endpoints 7 admin controls 3 admin pages 3 npm testing scripts improved error visibility, log management, session information and route extraction updated Markdown rendering, AI activity information and documentation the main focus was improving maintainability, debugging and the reliability of Slackzilla’s internal tooling. ( ͡° ͜ʖ ͡°) next devlog hint: a terminal is coming. think less clicking through admin pages, more interacting with Slackzilla directly through a terminal interface. details in the NEXT devlog. \(^o^)/...
|
1792752514.4039207
|
1793357314.4039207
|
|
62474
|
slackyyy by @aiza_asad | Stardance
|
aiza_asad
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slackyyy by @aiza_asad | Stardance
|
1793044444.1128385
|
1793649244.1128385
|
|
21682
|
slacky by @alanthereal | Stardance
|
alanthereal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slacky by @alanthereal | Stardance
|
1792507973.8989038
|
1793112773.8989038
|
|
53439
|
slacky by @Kabeer-M | Stardance
|
Kabeer-M
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T20:38:36Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So hey I created this slack bot and named it slackyy. I don’t want it slacking off but it does. It pulls ISS location in real time, Astrononmy picture of the day and also tells a cat fact", "repo": "https://github.com/thedev-k/slackyy", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 53342, "ts": "202 [{"post_id": 53342, "ts": "2026-08-23T20:35:36Z", "hours": 0.2611, "text": "Created slackyy. I worked on the project before but didn’t get nest approval now I got it so here it is. Its working and there are many commands"}]...
|
Title: slacky by @Kabeer-M | Stardance
Devlogs:
C Title: slacky by @Kabeer-M | Stardance
Devlogs:
Created slackyy. I worked on the project before but didn’t get nest approval now I got it so here it is. Its working and there are many commands
Ships:
So hey I created this slack bot and named it slackyy. I don’t want it slacking off but it does. It pulls ISS location in real time, Astrononmy picture of the day and also tells a cat fact...
|
1793051705.244497
|
1793138105.244497
|
|
51337
|
slackinbot by @hamzahabib | Stardance
|
hamzahabib
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slackinbot by @hamzahabib | Stardance
|
1792666298.6360795
|
1793271098.6360795
|
|
56140
|
slackette by @hann | Stardance
|
hann
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slackette by @hann | Stardance
|
1792918413.6328287
|
1793782413.6328287
|
|
29789
|
slackernot by @miminstrels | Stardance
|
miminstrels
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-25T09:59:56Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello! I made a slackbot named Slackernot and frankly it’s really random. There are a few commands you can try out on the channel: /slackernot-ping (checks bot latency) /slackernot-catfact (for a cat fact) /slackernot-dadjoke (for a dad joke) /slackernot-joke - (for a random regular joke) /slackernot-duck - (gets a random duck image) /slackernot-fox - (gets a random fox image) This was only for jokes and giggles so don’t expect too much. But I’m really glad the random image command works yaeyyy.", "repo": "https://github.com/miminstrels/slackernot", "demo": "https://hackclub.enterprise.slack.com/archives/C0CBHD51QBH"}]...
|
[{"post_id": 82577, "ts": "202 [{"post_id": 82577, "ts": "2026-10-25T09:15:30Z", "hours": 0.7603, "text": "replaced a command with a random fox image one, the request on the former was a lil confusing"}, {"post_id": 71691, "ts": "2026-09-21T10:02:41Z", "hours": 0.3972, "text": "fixed this command.. cus i realised that image commands are different."}, {"post_id": 70514, "ts": "2026-09-19T09:39:09Z", "hours": 0.4058, "text": "uploaded on github cus now it kinda works ddhsfa"}, {"post_id": 56660, "ts": "2026-08-28T14:46:30Z", "hours": 0.9728, "text": "added some api commands but apparently the app is having problems so.."}, {"post_id": 36965, "ts": "2026-07-29T12:12:56Z", "hours": 0.5267, "text": "fixed it and now it works!! turns out socket mode wasn’t on. i was pretty busy so i haven’t the chance to tackle this, but now i was able to."}, {"post_id": 22138, "ts": "2026-07-04T13:13:41Z", "hours": 0.2581, "text": "working on the .js. honestly confused about the signingsecret or wtv it’s called."}]...
|
Title: slackernot by @miminstrels | Stardance
Dev Title: slackernot by @miminstrels | Stardance
Devlogs:
working on the .js. honestly confused about the signingsecret or wtv it’s called.
fixed it and now it works!! turns out socket mode wasn’t on. i was pretty busy so i haven’t the chance to tackle this, but now i was able to.
added some api commands but apparently the app is having problems so..
uploaded on github cus now it kinda works ddhsfa
fixed this command.. cus i realised that image commands are different.
replaced a command with a random fox image one, the request on the former was a lil confusing
Ships:
Hello! I made a slackbot named Slackernot and frankly it’s really random. There are a few commands you can try out on the channel: /slackernot-ping (checks bot latency) /slackernot-catfact (for a cat fact) /slackernot-dadjoke (for a dad joke) /slackernot-joke - (for a random regular joke) /slackernot-duck - (gets a random duck image) /slackernot-fox - (gets a random fox image) This was only for jokes and giggles so don’t expect too much. But I’m really glad the random image command works yaeyyy....
|
1793144919.793097
|
1793231319.793097
|
|
57917
|
slackbothub by @RabiaAnwaar | Stardance
|
RabiaAnwaar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slackbothub by @RabiaAnwaar | Stardance
|
1792730888.4704838
|
1793335688.4704838
|
|
71161
|
slackbot-glitchless by @allenmandapath | Stardance
|
allenmandapath
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slackbot-glitchless by @allenmandapath | St Title: slackbot-glitchless by @allenmandapath | Stardance...
|
1792842439.194164
|
1793447239.194164
|
|
70475
|
slackbot by @furgenramen | Stardance
|
furgenramen
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slackbot by @furgenramen | Stardance
|
1793015268.7920105
|
1793879268.7920105
|
|
10984
|
slackbot by @fabianbuthere | Stardance
|
fabianbuthere
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T16:38:52Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The product is not nearly as exciting as the code for it. I had to work with WebSockets, Slack’s (confusing (at least for me)) API and remote deployment (on Railway), including Docker. All in all a fun little project! And in Rust. I love Rust.", "repo": "https://github.com/Fabian2611/slackbot/", "demo": "https://hackclub.enterprise.slack.com/archives/C0BHJU4LEFJ"}]...
|
[{"post_id": 4328, "ts": "2026 [{"post_id": 4328, "ts": "2026-06-07T16:31:36Z", "hours": 0.6353, "text": "Cat commands are here! yayyy :3"}, {"post_id": 4295, "ts": "2026-06-07T15:40:05Z", "hours": 0.6217, "text": "The bot is running! I first set up shuttle, and only realised it was discontinued a few months ago when I tried to deploy. Now I use railway, and it works!"}, {"post_id": 4257, "ts": "2026-06-07T14:40:35Z", "hours": 2.0675, "text": "The bot is running! Getting the WebSocket to work was rather easy, the Slack API is really hard to navigate though. Not sure if I can host it on Nest (or similar services) if it is not NodeJS, that’s my next stop."}]...
|
Title: slackbot by @fabianbuthere | Stardance
Dev Title: slackbot by @fabianbuthere | Stardance
Devlogs:
The bot is running! Getting the WebSocket to work was rather easy, the Slack API is really hard to navigate though. Not sure if I can host it on Nest (or similar services) if it is not NodeJS, that’s my next stop.
The bot is running! I first set up shuttle, and only realised it was discontinued a few months ago when I tried to deploy. Now I use railway, and it works!
Cat commands are here! yayyy :3
Ships:
The product is not nearly as exciting as the code for it. I had to work with WebSockets, Slack’s (confusing (at least for me)) API and remote deployment (on Railway), including Docker. All in all a fun little project! And in Rust. I love Rust....
|
1793137927.4172523
|
1793224327.4172523
|
|
56498
|
slackbot by @benjaminproba | Stardance
|
benjaminproba
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slackbot by @benjaminproba | Stardance
|
1792666082.937427
|
1793270882.937427
|
|
42295
|
slack_agent by @vrajsanghavi | Stardance
|
vrajsanghavi
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T13:08:47Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "finally,my slack bot named v-tash is completed…. it has included many commands like this v-tash commands /v-tash-ping — is the bot alive /v-tash-roast [@name] — roast someone /v-tash-standup — fake standup generator /v-tash-vibe [topic] — vibe check poll /v-tash-quote — random dev quote /v-tash-decide A | B | C — pick for me /v-tash-ship [thing] — announce a ship use /v-tash-help for first time to get this… the hardest part of making this bot was nest ,seriously it takes much time to approve but anyways i got it….", "repo": "https://github.com/vraj2011/slack_agent", "demo": "https://app.slack.com/client/E09V59WQY1E/C083WK4RY2D"}]...
|
[{"post_id": 53032, "ts": "202 [{"post_id": 53032, "ts": "2026-08-23T12:51:25Z", "hours": 0.4367, "text": "finally,we have authenticated with nest ,now it works 24/7 ,test it out by typing /v-tash-help"}, {"post_id": 38394, "ts": "2026-07-31T19:00:31Z", "hours": 0.5997, "text": "we have done a slack bot..-1st achievement.."}]...
|
Title: slack_agent by @vrajsanghavi | Stardance
D Title: slack_agent by @vrajsanghavi | Stardance
Devlogs:
we have done a slack bot..-1st achievement..
finally,we have authenticated with nest ,now it works 24/7 ,test it out by typing /v-tash-help
Ships:
finally,my slack bot named v-tash is completed…. it has included many commands like this v-tash commands /v-tash-ping — is the bot alive /v-tash-roast [@name] — roast someone /v-tash-standup — fake standup generator /v-tash-vibe [topic] — vibe check poll /v-tash-quote — random dev quote /v-tash-decide A | B | C — pick for me /v-tash-ship [thing] — announce a ship use /v-tash-help for first time to get this… the hardest part of making this bot was nest ,seriously it takes much time to approve but anyways i got it…....
|
1792878786.3702478
|
1793742786.3702478
|
|
43889
|
slackBot by @ | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slackBot by @ | Stardance
|
1792565330.6441681
|
1793170130.6441681
|
|
58695
|
slack1 by @khwaa | Stardance
|
khwaa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack1 by @khwaa | Stardance
|
1792760061.2441034
|
1793364861.2441034
|
|
58696
|
slack1 by @khwaa | Stardance
|
khwaa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack1 by @khwaa | Stardance
|
1792760062.9239566
|
1793364862.9239566
|
|
15431
|
slack.hackclub.com by @larry | Stardance
|
larry
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack.hackclub.com by @larry | Stardance
|
1792742037.5531197
|
1793346837.5531197
|
|
48877
|
slack.ai by @Shashwat_Ganapathi_T_S | Stardance
|
Shashwat_Ganapathi_T_S
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack.ai by @Shashwat_Ganapathi_T_S | Stard Title: slack.ai by @Shashwat_Ganapathi_T_S | Stardance...
|
1792569242.4332588
|
1793174042.4332588
|
|
55172
|
slack-slack by @ejo | Stardance
|
ejo
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T16:33:15Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a slack bot named slack-slack, its my first completed mission it was pretty simple, the confusing part was hosting it, i used gemini’s help for that, it was pretty fun project", "repo": "https://github.com/ejojames/slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 56665, "ts": "202 [{"post_id": 56665, "ts": "2026-08-28T14:54:37Z", "hours": 0.3764, "text": "im completing my mission of making a slack bot , it was a simple yet fun project to start with stardance ,it was my first time using nest , so it was a bit confusing , im pretty satisfied with how the bot is rn these are the commands:/slack-slack-help,/slack-slack-ping,/slack-slack-catfact,/slack-slack-joke,/slack-slack-dog,/slack-slack-quote,/slack-slack-roll/slack-slack-coinflip"}]...
|
Title: slack-slack by @ejo | Stardance
Devlogs:
i Title: slack-slack by @ejo | Stardance
Devlogs:
im completing my mission of making a slack bot , it was a simple yet fun project to start with stardance ,it was my first time using nest , so it was a bit confusing , im pretty satisfied with how the bot is rn these are the commands:/slack-slack-help,/slack-slack-ping,/slack-slack-catfact,/slack-slack-joke,/slack-slack-dog,/slack-slack-quote,/slack-slack-roll/slack-slack-coinflip
Ships:
i made a slack bot named slack-slack, its my first completed mission it was pretty simple, the confusing part was hosting it, i used gemini’s help for that, it was pretty fun project...
|
1793008425.414231
|
1793872425.414231
|
|
43102
|
slack-bot by @markino | Stardance
|
markino
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack-bot by @markino | Stardance
|
1792536519.8971405
|
1793141319.8971405
|
|
66904
|
slack-bot by @emerald_c0d3r | Stardance
|
emerald_c0d3r
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack-bot by @emerald_c0d3r | Stardance
|
1793105374.647746
|
1793710174.647746
|
|
54128
|
slack off by @Aayand | Stardance
|
Aayand
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T15:03:42Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "simple bot with simple commands, because why not, test it in the hack club slack using /bing-bong-bot-here!", "repo": "https://github.com/victorguy123/slack-bot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0B96454ZHR"}]...
|
[{"post_id": 54982, "ts": "202 [{"post_id": 54982, "ts": "2026-08-26T12:36:51Z", "hours": 0.3086, "text": "Added 2 commands, -world and -im-a-bot-too"}]...
|
Title: slack off by @Aayand | Stardance
Devlogs:
Title: slack off by @Aayand | Stardance
Devlogs:
Added 2 commands, -world and -im-a-bot-too
Ships:
simple bot with simple commands, because why not, test it in the hack club slack using /bing-bong-bot-here!...
|
1793112639.1051095
|
1793199039.1051095
|
|
25317
|
slack detection bot by @auckshay | Stardance
|
auckshay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack detection bot by @auckshay | Stardanc Title: slack detection bot by @auckshay | Stardance...
|
1792943703.483183
|
1793807703.483183
|
|
69651
|
slack bott by @ayushgaudel | Stardance
|
ayushgaudel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bott by @ayushgaudel | Stardance
|
1792857284.8219402
|
1793462084.8219402
|
|
7105
|
slack bot? by @aintsurya | Stardance
|
aintsurya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot? by @aintsurya | Stardance
|
1792547539.6951907
|
1793152339.6951907
|
|
71579
|
slack bot. (slack-think-bot-E490-new) by @istvan | slack bot. (slack-think-bot-E490-new) by @istvan | Stardance...
|
istvan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot. (slack-think-bot-E490-new) by @i Title: slack bot. (slack-think-bot-E490-new) by @istvan | Stardance...
|
1793101631.4812849
|
1793706431.4812849
|
|
25515
|
slack bot! by @aliciacyoon | Stardance
|
aliciacyoon
|
1
|
1.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T22:27:36Z", "hours": 1.0, "multiplier": 1.19, "payout": 1, "blessing": "neutral", "text": "Calling all PotterHeads!! I made summertime, a Slack Bot that calls from different kinds of APIs, so I could learn more about API calls and understanding Slack Bots :)) Developed as part of the StarDance Hack Club challenge. Available Commands: /summertime-help Display all available commands /summertime-ping Check bot latency /summertime-joke Get a random joke /summertime-funfact Get a random fun fact /summertime-houses returns harry potter houses, their founders, and a relatedemoji /summertime-magic gets magic spells from harry potter Built With: Harry Potter API Joke API Cat Fact API Node.JS Slack Bolt", "repo": "https://github.com/acrylicpaintt/slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 15944, "ts": "202 [{"post_id": 15944, "ts": "2026-06-25T22:07:09Z", "hours": 0.3358, "text": "Call me a Harry Potter fan for my slack-bot commands!! In all honesty, this was a lot harder than I thought it would be. It wasn’t crazy difficult by any means, but I ran into a lot of issues calling API commands, accidentally using outdated JS code (anyone else fall for res.map() vs. res.map??), and trying to trace which part of my code was broken and why. A lot of times, I just needed to commit to GitHub since the Nest version ran that… but I’m able to have my bot show me Harry Potter spells and houses!!!"}, {"post_id": 15729, "ts": "2026-06-25T16:27:01Z", "hours": 0.4181, "text": "Running into issues — my Harry Potter public API request for a list of spells and their uses isn’t working properly right now. My next steps are to fix it or find out what’s wrong and then host it 24/7 on Next!"}]...
|
Title: slack bot! by @aliciacyoon | Stardance
Dev Title: slack bot! by @aliciacyoon | Stardance
Devlogs:
Running into issues — my Harry Potter public API request for a list of spells and their uses isn’t working properly right now. My next steps are to fix it or find out what’s wrong and then host it 24/7 on Next!
Call me a Harry Potter fan for my slack-bot commands!! In all honesty, this was a lot harder than I thought it would be. It wasn’t crazy difficult by any means, but I ran into a lot of issues calling API commands, accidentally using outdated JS code (anyone else fall for res.map() vs. res.map??), and trying to trace which part of my code was broken and why. A lot of times, I just needed to commit to GitHub since the Nest version ran that… but I’m able to have my bot show me Harry Potter spells and houses!!!
Ships:
Calling all PotterHeads!! I made summertime, a Slack Bot that calls from different kinds of APIs, so I could learn more about API calls and understanding Slack Bots :)) Developed as part of the StarDance Hack Club challenge. Available Commands: /summertime-help Display all available commands /summertime-ping Check bot latency /summertime-joke Get a random joke /summertime-funfact Get a random fun fact /summertime-houses returns harry potter houses, their founders, and a relatedemoji /summertime-magic gets magic spells from harry potter Built With: Harry Potter API Joke API Cat Fact API Node.JS Slack Bolt...
|
1793062453.085632
|
1793148853.085632
|
|
37486
|
slack bot! by @Dana | Stardance
|
Dana
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot! by @Dana | Stardance
|
1792741800.6208208
|
1793346600.6208208
|
|
12118
|
slack bot tutorial (yippee) by @yuippi | Stardance
|
yuippi
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T12:01:58Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a slack bot that does absolutely nothing useful. you can find the command list with /epic-help. i will go work on something more fun now.", "repo": "https://github.com/sangwooahn39/hackclub-slackbot", "demo": "https://app.slack.com/client/E09V59WQY1E/C01D7AHKMPF"}]...
|
[{"post_id": 4854, "ts": "2026 [{"post_id": 4854, "ts": "2026-06-08T11:55:51Z", "hours": 2.3981, "text": "i followed the tutorial to make the epic bot. i didn’t add anything new because i’ve never used slack in my life, and i associate it with my father’s work (traumatizing)"}]...
|
Title: slack bot tutorial (yippee) by @yuippi | St Title: slack bot tutorial (yippee) by @yuippi | Stardance
Devlogs:
i followed the tutorial to make the epic bot. i didn’t add anything new because i’ve never used slack in my life, and i associate it with my father’s work (traumatizing)
Ships:
i made a slack bot that does absolutely nothing useful. you can find the command list with /epic-help. i will go work on something more fun now....
|
1793094729.4333968
|
1793181129.4333968
|
|
54201
|
slack bot for stardance by @jash_v8 | Stardance
|
jash_v8
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot for stardance by @jash_v8 | Stard Title: slack bot for stardance by @jash_v8 | Stardance...
|
1792781332.3908286
|
1793386132.3908286
|
|
53644
|
slack bot by @vanshikagera | Stardance
|
vanshikagera
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @vanshikagera | Stardance
|
1792756157.4924433
|
1793360957.4924433
|
|
53645
|
slack bot by @vanshikagera | Stardance
|
vanshikagera
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @vanshikagera | Stardance
|
1792756159.1723328
|
1793360959.1723328
|
|
52380
|
slack bot by @vaibhav22jul09 | Stardance
|
vaibhav22jul09
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @vaibhav22jul09 | Stardance
|
1792705936.3783183
|
1793310736.3783183
|
|
68531
|
slack bot by @shiloh | Stardance
|
shiloh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @shiloh | Stardance
|
1793123358.19387
|
1793728158.19387
|
|
70035
|
slack bot by @shalabyadam012 | Stardance
|
shalabyadam012
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @shalabyadam012 | Stardance
|
1792957970.7347097
|
1793562770.7347097
|
|
42533
|
slack bot by @rayanezentar01 | Stardance
|
rayanezentar01
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @rayanezentar01 | Stardance
|
1792514853.5715904
|
1793119653.5715904
|
|
48225
|
slack bot by @onlysupreme | Stardance
|
onlysupreme
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @onlysupreme | Stardance
|
1792544060.2119155
|
1793148860.2119155
|
|
4697
|
slack bot by @mahamansaniabdoulnasser4 | Stardance
|
mahamansaniabdoulnasser4
|
0
|
0.75
|
0
|
[]
|
[{"post_id": 1649, "ts": "2026 [{"post_id": 1649, "ts": "2026-06-03T19:38:51Z", "hours": 0.7531, "text": "A marvelious bot specializing in networking, telecommunications, and automated tasks"}]...
|
Title: slack bot by @mahamansaniabdoulnasser4 | St Title: slack bot by @mahamansaniabdoulnasser4 | Stardance
Devlogs:
A marvelious bot specializing in networking, telecommunications, and automated tasks...
|
1792601328.69227
|
1793206128.69227
|
|
65171
|
slack bot by @madyan | Stardance
|
madyan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @madyan | Stardance
|
1793084029.225186
|
1793688829.225186
|
|
50084
|
slack bot by @lantern | Stardance
|
lantern
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T07:57:07Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A basic slack bot with 3 commands , i built this using the guide as this is my first time making a slack bot .Three commands are as follows /jpbot-ping – calculates and returns the bot’s response latency. /jpbot-catfact – fetches a random cat fact via the Cat Facts API using axios. /jpbot-joke – random joke via JokeAPI.", "repo": "https://github.com/jigneshphalsawal-cloud/slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BSJ1HU0TT"}]...
|
[{"post_id": 53607, "ts": "202 [{"post_id": 53607, "ts": "2026-08-24T07:41:58Z", "hours": 1.275, "text": "Added 3 commands for the slack bot!!!"}]...
|
Title: slack bot by @lantern | Stardance
Devlogs: Title: slack bot by @lantern | Stardance
Devlogs:
Added 3 commands for the slack bot!!!
Ships:
A basic slack bot with 3 commands , i built this using the guide as this is my first time making a slack bot .Three commands are as follows /jpbot-ping – calculates and returns the bot’s response latency. /jpbot-catfact – fetches a random cat fact via the Cat Facts API using axios. /jpbot-joke – random joke via JokeAPI....
|
1792958056.59357
|
1793822056.59357
|
|
46964
|
slack bot by @krupa_pramod | Stardance
|
krupa_pramod
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-13T16:08:15Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a study bot that allows you to add, view homework, remind you to do your homework, do fun facts, and a help command. This was my firstish time working with a lot of Javascript so it was kind of difficult but it turned out to kind of be like Java (I should’ve known), so that was good. The guide was also super helpful. Very fun and unique project! I enjoyed this.", "repo": "https://github.com/krupa-pramod/slack-study-bot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354?skip_today=1"}]...
|
[{"post_id": 46165, "ts": "202 [{"post_id": 46165, "ts": "2026-08-13T06:03:55Z", "hours": 0.6261, "text": "made homework list, view homewokr, and timed reminder"}, {"post_id": 46152, "ts": "2026-08-13T05:10:16Z", "hours": 0.7594, "text": "Created a fun fact api command and also the help command"}]...
|
Title: slack bot by @krupa_pramod | Stardance
Dev Title: slack bot by @krupa_pramod | Stardance
Devlogs:
Created a fun fact api command and also the help command
made homework list, view homewokr, and timed reminder
Ships:
I made a study bot that allows you to add, view homework, remind you to do your homework, do fun facts, and a help command. This was my firstish time working with a lot of Javascript so it was kind of difficult but it turned out to kind of be like Java (I should’ve known), so that was good. The guide was also super helpful. Very fun and unique project! I enjoyed this....
|
1793141258.4288158
|
1793227658.4288158
|
|
60145
|
slack bot by @gandalf | Stardance
|
gandalf
|
0
|
0.49
|
0
|
[]
|
[{"post_id": 72391, "ts": "202 [{"post_id": 72391, "ts": "2026-09-22T20:15:04Z", "hours": 0.4861, "text": "Waiting for my Nest application to be approved so I can finally host this…"}]...
|
Title: slack bot by @gandalf | Stardance
Devlogs: Title: slack bot by @gandalf | Stardance
Devlogs:
Waiting for my Nest application to be approved so I can finally host this…...
|
1793033280.4669828
|
1793638080.4669828
|
|
66238
|
slack bot by @fraunzen07 | Stardance
|
fraunzen07
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @fraunzen07 | Stardance
|
1793094906.571114
|
1793699706.571114
|
|
43544
|
slack bot by @eirode | Stardance
|
eirode
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @eirode | Stardance
|
1792551042.5754433
|
1793155842.5754433
|
|
21622
|
slack bot by @codeman | Stardance
|
codeman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @codeman | Stardance
|
1792702339.4949083
|
1793307139.4949083
|
|
62856
|
slack bot by @christine | Stardance
|
christine
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @christine | Stardance
|
1793047839.73054
|
1793652639.73054
|
|
62857
|
slack bot by @christine | Stardance
|
christine
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @christine | Stardance
|
1793047840.5895362
|
1793652640.5895362
|
|
44121
|
slack bot by @anirudhrambhatla20 | Stardance
|
anirudhrambhatla20
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @anirudhrambhatla20 | Stardanc Title: slack bot by @anirudhrambhatla20 | Stardance...
|
1792572852.617727
|
1793177652.617727
|