Closed eraether closed 7 years ago
Proposed solution:
Everyone: report [user] [reason] - an alert is sent to every moderator about misbehavior. If the user being reported is a moderator, the message is not sent to them for obvious reasons.
Moderator: ban [user] [duration] [reason] - an alert is sent to every moderator, as well as to the user being banned. The user is removed from any active games. Any commands made by a banned user are ignored. Moderators can ban other moderators. A banned moderator loses their moderation privileges. Examples of the duration format: 30m or 2d or 40h. Can't mix and match different times together (ie 2h 30 min). Instead, the previous value would be 150m. Before the ban goes through, the bot messages the moderator making the ban and asks for them to confirm the ban. Them responding confirm to the message confirms the ban, and them responding with 'cancel' cancels the ban. Moderators are messaged only after a ban is confirmed.
unban [user] [reason] - Unbans a user before their ban is up. An alert is sent to every moderator, as well as the user being unbanned.
In all three commands, the [reason] field is not optional.
In terms of the data model: A is_moderator (boolean) column is added to the user table. The only way to add new moderators is to go into the db and set a user as a moderator. Mods can't make more mods. A ban_expiration (datetime) column is added to the user table.
Watchword bot manages a private channel. When a user is modded, they are invited to the channel. When a user is demoded, they are kicked from the channel.
All reports / bans / mod actions, instead of being sent as pms to all mods are sent to the channel instead.
Perhaps the primary owner of a slack channel has access to a mod [user] command, which makes a user a moderator and sends an alert to every moderator. Not sure if it's possible to tell whether or not a user is a primary owner from the slack API though.
Closed by eric (Eric Fields)
Seems unnecessary.
Created by sdhar (サミア ダー)