A bot for making discord server democratic.
The whole idea for democracy.bot arose on a public developer discord. We saw several servers, that are controlled by single admins enforcing their will upon the members. On the other hand, people don't want to leave because they want or need the community.
So solve this situation for us and to build something of value for communities, we started democracy.bot. The bot should allow users to vote their admins for a certain time, control their decisions and act as a real community.
- Suggesting admins to the Bot in DM before the vote starts
- Voting for admins by selecting the specific emote in the vote message
- Removing the old admin and adding the new one (or keeping the confirmed admin)
- Allow everybody to start a vote in the democracy channel for important topics
- Allow a distrust vote against the current admin
- Allow banned or kicked users to oppose the action to the democracy bot (DM) and let the community decide
To realize those features, we have to take certain assumptions.
- The bot is the only one with full permission on the server
- The admin is not able to influence the democracy channel in any way
- The admin is not able to kick or ban users directly. Only via the bot
- The admin can not be kicked or banned. Only a distrust vote is possible
- The admin is not allowed to grant permissions directly. Only via the bot
- Votes have a time of expiration. Only the given votes count
This project has a pretty complex Makefile and therefore requires make
.
Go Version: 1.8
Install all further requirements by running make deps
democracy.bot
This project is using a basic template for developing PlayNet command-line tools. Refer to this template for further information and usage docs. The Makefile is configurable to some extent by providing variables at the top. Any further changes should be thought of carefully as they might brake CI/CD compatibility.
One project might contain multiple tools whose main packages reside under cmd
. Other packages like libraries go into the pkg
directory.
Single projects can be handled by calling make toolname maketarget
like for example:
make template dev
All tools at once can be handled by calling make full maketarget
like for example:
make full build
Build output is being sent to ./build/
.
If you only package one tool this might seam slightly redundant but this is meant to provide consistence over all projects.
To simplify this, you can simply call make maketarget
when only one tool is located beneath cmd
. If there are more than one, this won't do anything (including not return 1) so be careful.
Pull Requests and Issue Reports are welcome. If you are interested in contributing, feel free to get in touch