What are we doing?
Develop a Discord bot that listens for messages & picks important ones that are shared to a digest channel.
The digests are primarily posted into a read-only Discord channel, but could also be published to additional platforms like this forum.
This can be globally for a whole Discord server, or rather more specifically e.g. per guild in our DAO’s case. I personally would love to see one digest per guild.
Why are we doing it?
To catch-up quickly on the most important things happening in the DAO.
After being away from discord for only a week I feel very overwhelmed to catch up. I was thinking of a way to improve this, as a lot is actually happening in discord and not reflected in the forum.
While the newsletter gives us a macro level summary of what’s happening, this bot is intended to give you a micro level path to catch-up quickly.
How are we doing it?
Each message that is passing a defined threshold will be sent to the target channel. Additionally, a emoji reaction can be used as a signal to the bot, similar to how it’s used by the Starboard bot.
How do we decide which message to pick-up?
I suggest a parametrized threshold of certain indicators for now. These could be number of reactions/reactors, how many replies or length of reply chain, thread creation, starred by min X users etc.
We might look into adding NLP & smart logic like a ML classifier to identify messages to include in the future.
Why real-time and not daily/weekly
Mainly to keep complexity low for now. Also because there’s no particular reason to keep important messages unshared until the next daily/weekly digest drop.
For me, a daily/weekly cadence would make sense when posting digests to this forum or send digest emails.
What do we need to create?
Finally, this is a summary of what I think needs to be created:
configuration / slash-commands:
- set-up a new digest by selecting source channels & a target channel
- list all digests
- edit a digest
- remove a digest
service:
- setup server & start listening for events like
messageCreate
,messageReactionAdd
,messageUpdate
etc. - any message that passes a certain threshold is sent to the target channel
- handle the slash commands
Optional
NLP & ML Classifier
Beyond v1, I’d really like to look into adding the smart features I mentioned. Doing NLP on messages and classify them as important even before the reactions come in.
To accrue a dataset, I’d like to add the ability for anyone to vote “Not Important” on each message sent to the target channel, by just adding an emoji as reaction. This is the opposite action of adding a emoji reaction as discussed above.