Skip to content

Commands and Permissions

Everything runs under /discordlogger, with the aliases /dlogger and /dlog.

Every subcommand has its own permission node, so you can hand out one without handing out the rest — a moderator who should be able to check whether logging is healthy does not also need to be able to rebuild your config.

All of them default to op.

Command What it does Permission
/discordlogger reload Reload config.yml and lang.yml discordlogger.reload
/discordlogger webhook <url> Set the webhook without editing YAML discordlogger.webhook
/discordlogger regen confirm Rebuild config.yml from this build’s default discordlogger.regen
/discordlogger status Queue depth, webhook health, build channel discordlogger.status
/discordlogger test [event] Send a real message through an event’s own webhook discordlogger.test
/discordlogger doctor Check the config for contradictions discordlogger.doctor
/discordlogger lookup … What exploded near a place discordlogger.lookup

lookup is the one to think about

/discordlogger lookup [x y z] [r:50] [t:7d] [type:tnt] searches explosions.csv and answers “was anything blown up here”. It is the only command that reports on players: each result lists who was nearby and how far away they were, resolved from the stored UUIDs into current names.

That makes it a griefing tool and a whereabouts record at the same time. Anyone holding discordlogger.lookup can ask where players were at a given time, near a given place, for as long as expiry_time keeps the rows.

Granting it is the decision. It defaults to op, so on a normal server nobody has it unless you have already trusted them with everything else. If you run with a permissions plugin and hand out nodes individually, this is one to think about rather than bundle.

To switch the record off entirely, set log.server.explosion.history.enabled to false — no file is written and there is nothing to look up. The configuration reference covers expiry_time and the rest.

The root command is deliberately open

/discordlogger itself needs no permission. It used to require discordlogger.reload, which locked anyone holding only discordlogger.regen out of the command entirely — including the subcommand they were allowed to run.

Instead, the help listing and tab-completion filter themselves by what you hold. A player with none of the permissions sees nothing, can complete nothing, and can run nothing. The command existing is not a disclosure; its contents are, and those are gated individually.

One permission that is not a command

filters.exempt_permission names a node whose holders are never logged — useful for staff whose own movements should stay out of the channel.

It ships empty, which means the feature is off and no node exists. You pick the name yourself:

filters:
  exempt_permission: "discordlogger.exempt"

Anything will do, as long as it is the node you actually grant. See the configuration reference for the rest of the filters.