Grant roles automatically or let members pick their own.
A member color comes from the highest colored role they hold. The bot places new color roles just under its own top role, so keep the bot role high in the list to make sure color roles sit above ordinary roles and actually show.
Handing out roles by hand eats all of the staff time. There are five ways here covering every case: join roles granted on their own to everyone who joins, reaction roles binding an emoji to a role on an existing message, role panels giving members buttons to pick from, color roles letting every member paint their own name, and role grant sections delegating specific roles to moderators without full Manage Roles.
The four modes are what define self-selection behavior. Toggle grants and takes with the same click, and is the most common. Add only grants and never takes, which suits roles that should not be undone. Remove only takes. And unique allows one role from the section, dropping the previous when a new one is picked, which is the right choice for language, region, or any either-or selection.
Reaction roles and role panels are both split into independent sections, each with its own message, modes, and replies. Reactions take up to 20 per message, and a panel takes up to 25 buttons. Every reaction or button grants a set of roles rather than a single one, so one button can hand out three roles at once.
Color roles work differently from the rest: you write a palette, and the bot is the one that creates a role per color, names it with your prefix, orders it, and maintains it. A member picks a color and the previous one is dropped automatically, because Discord colors a member by their highest colored role. That is also why keeping the bot role high matters, since it places color roles just under its own.