Repository navigation
Release 0.7.9-3 · Donut: slash command groups, /ai ask (BETA), private DM buttons, server blacklist and fixes - #400
Merged
Merged
Conversation
…at say where they are from, and fixes - The version is 0.7.9-3 in package.json and package-lock.json, and `!version` shows it first as v0.7.9~3, in English, Spanish and Portuguese (0.7.9-2 is now a published version). - CHANGELOG.md has the notes of 0.7.9-3: what was under Unreleased (the slash commands that gather the prefix commands as subcommands, /ai ask, the origin line and buttons of every DM, the clearer help, the picture-first feed cards, per-server form numbers, the send permission hardening, the priority error log, self-healing tickets and the fixes). Near-duplicate lines are merged and the counts are the final ones: 67 registered commands, 64 slash commands and 3 menus. - check-releases follows the new latest version. The release workflow creates the GitHub release when the version changes, as a normal release and the latest one. Signed-off-by: Liamt8dd <juliancamilparratrujillo@gmail.com>
… a deleted role no longer breaks verification The buttons under a DM from Petto now answer the interaction itself with a private (ephemeral) message and acknowledge Discord first, so nothing is written in the chat and "didn't respond in time" cannot appear. The delete button acknowledges with deferUpdate and removes the message. The info card shows only the icon, name, ID, creation date and members of the server (or one short line for Petto itself or for a server Petto left); the reasons, the stop lines and the explanation of the buttons are gone in en, es and pt-BR. A role that a server chose and then deleted (Discord code 10011) is a setting of the server, not a bug: it is an expected error in the triage with the fix config-role-missing, and Invalid Role (50028) too. Verification makes the verified role again when Petto may, or else lets the member through as verified with a friendly note, and tells the staff once a day in the log channel. Join roles, reaction roles, role buttons, level rewards and invite rewards give the roles that exist and leave out only the dead one, and take it out of the setting only when the staff could be told. The error card of the letters check and of the web page now names the server. The verify here in Discord button has the shield of Petto instead of the letters emoji. Signed-off-by: Liamt8dd <juliancamilparratrujillo@gmail.com>
…t be reopened The thanks a person reads after reporting a DM no longer shows a report number (en, es, pt-BR). The team card has no Reopen button: a report marked handled is final, the statement that reopened it is gone, the table refuses to move it back to open, and an old button pressed twice only says it was already handled. Signed-off-by: Liamt8dd <juliancamilparratrujillo@gmail.com>
…am tools The team can blacklist servers that break the terms of service or the privacy policy: a hidden prefix-only command (add, remove, list, info) that answers nobody outside the team, a guild_blacklist table kept in memory with an optional environment list as a safety net, a notice to the owner in the language of the server, and the leaving. A blacklisted server that adds Petto again is left before any other listener runs, one notice a day and one limited note for the team; every other event, the web routes and the start-up sweep ignore it too. The team tools share one gate and are silent for everybody else. A hidden team command lists them from their own metadata. The leave command asks for a confirmation only its author can press, refuses the server where it is typed unless told otherwise, and the notice and diagnostic tools show what they did and log it. The release notes mention the change without naming the command. Signed-off-by: Liamt8dd <juliancamilparratrujillo@gmail.com>
Signed-off-by: Liamt8dd <juliancamilparratrujillo@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A patch of 0.7.9, shown as 0.7.9~3. Version 0.7.9-2 becomes 0.7.9-3; the next real release is 0.7.10. This release changes the database (new tables
dm_reportsandguild_blacklist, a trigger ondm_reports, per-server form numbers): back it up before deploying. Runnode deploy-commands.jsafter deploying.The release
package.jsonandpackage-lock.json: version0.7.9-3.CHANGELOG.md: everything under[Unreleased]moves to## [0.7.9-3] — 2026-11-02 · Donut(Added, Changed, Fixed),[Unreleased]stays empty. Environment variable names and team-only commands stay in the CHANGELOG only, as in 0.7.9-2.src/utils/releases.js,src/i18n/releases/en.js,es.js,pt-BR.js,scripts/check-releases.js: the new release in the release center (!version), in three languages (the release menu has 23 of 25 slots used: only 2 are left for 0.7.10). The release workflow creates the tagv0.7.9-3from the## [0.7.9-3]section when this is merged.Fixes made after testing the DMs in production
dm_reportsrefuses to reopen it).src/utils/deadRoles.jsapplies the roles that exist, drops a dead role from the settings only when the server's staff can be told (once a day, in its log channel), and verification re-creates a missing verified role (Manage Roles needed) or, if it cannot, counts the member as verified with a friendly message. The same split applies to join roles, reaction roles and buttons, embed buttons and responders, level rewards and invite rewards. The error card now shows the server for flows that run from a DM.New: a server blacklist for the Petto team (hidden)
!blacklist <id or name> <reason>,remove,listandinfo(alsopetto blacklist ...) for the owner andPETTO_DEVELOPER_IDSonly; it is not a command for anybody else (no reply, no "unknown command"), and is hidden from help, autocomplete, suggestions, the short aliases and the commands page. Adding a server stores it (tableguild_blacklist, cached in memory, plusPETTO_BLACKLISTED_GUILD_IDSas a safety net); if Petto is in it, the owner gets one notice with the reason, the support link and the terms and privacy pages (a DM, else the system channel), Petto leaves and the team's ops channel gets a note. If a blacklisted server adds Petto again it leaves first of all, before any listener writes anything, counts the attempt, notifies at most once per 24 h and posts one rate-limited ops line; every other event, interaction and web route of that guild is ignored, andreadyleaves blacklisted guilds one per second. The support and ops servers cannot be blacklisted.Team tools improved
New hidden
!team/!teamhelplists the team commands from their own metadata (a test asserts every team-only command appears).!leaveguildtakes an id, a unique name or--here, asks for a confirmation only its author can press (expires in 30 s), refuses the current server unless--here, never leaves the ops or support server and logs to the ops channel.!guildsendtakes an id, a unique name orhereand reports what it did./guilddebug infoadds shard, join date, premium, blacklist status, features and Petto's permissions and now accepts developers.!botstatusand!slotsare silent for everybody outside the team.To configure
PETTO_DM_REPORTS_CHANNEL_ID,PETTO_PRIORITY_ERRORS_CHANNEL_ID,PETTO_PRIORITY_PING_USER_IDS(optionalPETTO_PRIORITY_PING_ROLE_ID,PETTO_BLACKLISTED_GUILD_IDS), and check that thepe_infoandpe_deleteapplication emojis exist.Checks
npm run checkandnpm run types:checkpass (newcheck-dead-roles.js,check-guild-blacklist.js,check-dm-origin.jsand others). Not verified without real Discord or PostgreSQL: ephemeral responses in a bot DM, the look of the V2 info card, leaving a real guild, the notice to a real owner, a real re-add, and the new tables and trigger on a real database. The Spanish and Portuguese texts were not reviewed by a native speaker.