dcom (discord community bot) is a (python3.6+) bot for communities to trigger upvotes from specified discord channels/servers.
I have built a couple of discord bots for community curations in the past. 1, 2
A couple of days ago, one of the communities I have been involved with asked a similar bot for their upcoming discord server. Since I am doing -almost- the same thing third time, this time I have decided to make it a generic bot package. It's usable for every kind of community for curation with community curation accounts.
It has a handful validators in place before upvoting and this will be increase in time.
Installation
$ pip install dcom
Configuration
You should create a configuration file stored at ~/.dcom_env
.
Example variables:
BOT_ACCOUNT=<bot_username>
BOT_POSTING_KEY=<bot_posting_key>
STEEM_NODES=https://api.steemit.com
DISCORD_BOT_TOKEN=<discord_bot_token>
CHANNEL_WHITELIST=<channel_id_1>,<channel_id_2>
LATE_CURATION_WINDOW=561600
EARLY_CURATION_WINDOW=800
CURATOR_GROUPS=curators,admins
Key | Value |
---|---|
BOT_ACCOUNT | The account used for the curation |
BOT_POSTING_KEY | Private posting key of the curation account |
STEEM_NODES | A list of STEEM nodes (comma separated) |
DISCORD_BOT_TOKEN | <Token of the discord bot> |
CHANNEL_WHITELIST | Curation channel id list (comma separated) |
LATE_CURATION_WINDOW | Maximum age for a post (in seconds) |
EARLY_CURATION_WINDOW | Minimum age for a post (in seconds) |
CURATOR_GROUPS | Discord roles authorized to use the bot (comma separated) |
Running
$ dcom
Roadmap
discord.py
uses asyncio, while I use lightsteem to broadcast transactions. lightsteem or other steem libraries blocks the asyncio loop. It's not making a huge difference on a small scale like this, but it would be good to have an async solution here.Adding more generic commands. These commands should be kind of commands that every community can benefit. Expanding more commands also needs some refactoring on the code to make the commands modular.
Integration with blacklist APIs
Implementation of an internal blacklist system.