Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Add `dkit overwrites` to resolve permission overwrites

Open
#4 5 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@arin30 is already working on this.

Since Oct 21, 2026.

Assessment

This issue has not been assessed yet.

Description

enhancement good first issue new command

This is the question that actually confuses people: the role says yes, the channel overwrite says no, and the member still cannot type. Discord resolves this with a documented algorithm that dkit could just run.

What to build

src/dkit/commands/overwrites.py that applies the documented order:

  1. Start from @everyone role permissions.
  2. If ADMINISTRATOR is set, everything is allowed — stop.
  3. Apply the @everyone channel overwrite: clear deny, then set allow.
  4. Union the member's role overwrites' deny, then their allow, and apply.
  5. Apply the member-specific overwrite: deny, then allow.

Suggested interface:

dkit overwrites --base 274878286912 \
  --everyone-deny SEND_MESSAGES \
  --role-allow SEND_MESSAGES \
  --member-deny ADD_REACTIONS

Output the effective permission set, and show each step so the user can see where a permission was lost.

Notes

The algorithm is in developers/topics/permissions.mdx ("Permission Overwrites") — follow it exactly rather than reasoning from first principles, and keep the step-by-step logic in a pure function so it is easy to test. FlagSet.value_of() parses each name list.

Please read CONTRIBUTING.md first.

Done when the worked example from the official docs is a test, each step is individually tested, and the ADMINISTRATOR short-circuit is covered.

Dominant language
Python
Stars
1
Forks
7
Avg merge
5h 37m
Merged PRs (30d)
31

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Bytewave1/dkit

All issues in Bytewave1/dkit

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.