Microsoft-community / nanami

A modular Discord bot for the Microsoft community
1 stars 2 forks source link

Ability to warn people #9

Open Jasius opened 4 years ago

Jasius commented 4 years ago

Command: !warn

Use:

!warn {@User#1234} {reason} !warn {userId} {reason}

Expectation:

  1. Upon use of the command user gets warned in the channel where command was used and direct message with the reason of the warn gets dispatched to the user.
  2. Command initiation message gets deleted.
  3. Bot logs that the user was warned and maintains the record of it.

Templates/Bot response:

Message which gets shown in the channel after user gets warned

{Username}({UserID}) got warned, reason: {reason}.

Message which gets sent to the user upon getting warned:

You were warned on {serverName}, reason: {reason}.

Message which gets thrown as a direct message to the moderator if reason isn't included:

⚠ Reason must be included for warning command to work.

TODO:

torchgm commented 4 years ago

I feel there's some room for improvement in the messages provided by the bot. Firstly, providing information across multiple lines improves the readability of the message and makes sure its clearly understood.

Secondly, using distinct emotes in the messages helps users both quickly identify the action taking place without having to read the whole context as well as providing non-verbal indication as to what the bot is trying to convey, which may help those where English is not their primary language to better-grasp the meaning of the message. Note that the emoji below are merely representative of an already-existing icon set that stays professional and in-keeping with the theme of the bot and the server it operates in. Other than that, the examples below are a sample of what I propose be used.

Message sent in the channel upon a user being warned

⚠ {userMention} has been warned for: {reason}

User mentions both provide the ability to search by and retrieve the user's ID, plus they're generally neater than printing the full username, discrim and ID of the user. Furthermore, it makes sure they receive a notification of their warning in the event they have DMs disabled in the server.

Message sent via DMs to the warned user

⚠ You have received a warning in the Microsoft Community for: {reason} ℹ Please review the rules here: https://go.msft.chat/rules/

Providing a link to the rules in the event a user is warned would hopefully cut down on comments such as "wtf why was i warned" and "where are the rules" which would in turn lead to less drama and fewer rule 12 violations.

Message sent in the channel upon a warning being removed from a user

♻ Infraction {warnId} has been removed from {userMention}

Not much to say here, just nice to provide immediate feedback on the action carried out without having to check the logs.

Message sent in the channel upon a user being muted

🔇 {userMention} has been muted for: {reason} 🕓 {muteTime}

Providing the time would be optional depending on whether or not it's temporary. Furthermore this may be able to be displayed in place of or in addition the normal warning message when the user is automatically muted, to make it clear to other users that they can no longer respond.

Message sent via DMs to the muted user

🔇 You have been muted in the Microsoft Community for: {reason} 🕓 {muteTime} ℹ Please review the rules here: https://go.msft.chat/rules/

Again, providing a link to the rules as well as the mute duration should help cut down on unnecessary comments and modmail threads asking why they were muted, and how long for. To complement this, it may be worthwhile specifying "Indefinite" as a mute duration instead of simply not displaying it whn a mute has no set duration, to make it clear to the user that their mute will not automatically expire.

Message sent in the channel when a user is unmuted manually

ℹ {userMention} has been unmuted

As before, just providing immediate feedback to confirm the user has indeed been unmuted successfully

Message sent via DMs to the user of the command when they fail to provide the correct command

❌ Please provide a user and reason when using this command: !warn <user> <reason>

Providing the command syntax should help remind anyone who has forgotten how to use the command to avoid them having to look it up as well as make it clear as to what the reason should be. Also, expanding it to cover both a user and reason means the same error message can be used for other syntactical mistakes (such as providing an invalid user or just using !warn on its own) This message is unlikely to be seen often but it would be worthwhile having the syntax there just in case (it might be helpful for new trial moderators).

An example of how the warnings appear in Discord: image

Jasius commented 4 years ago

Firstly, providing information across multiple lines improves the readability of the message and makes sure its clearly understood.

I disagree with this completely as messages are short and concise, however I do like the idea of including the rules link.

Secondly, using distinct emotes in the messages

Emojis add a nice flavor certainly.

User mentions both provide the ability to search by and retrieve the user's ID That is true but on mobile it's super finnicky to copy user who left the server, I suppose we can try with just mention.

CC: @Erisa

torchgm commented 4 years ago

I disagree with this completely as messages are short and concise, however I do like the idea of including the rules link.

I see where you're coming from however on mobile I find longer single-line messages end up wrapping around and becoming less legible, a bit like this: image Probably just personal preference but I find keeping the different properties of the message separate tidier is all.

That is true but on mobile it's super finnicky to copy user who left the server, I suppose we can try with just mention.

I also thought about this when considering mobile but I don't really find myself trying to copy my ID from a bot's feedback message because if I can see one of those action has most likely already been taken (such as the user being muted) and if I really need to the mention displays their current username/nickname already and typing "@[username]" is usually pretty fast. However this is only based on my personal methods so if it's something that would intefere with your workflow then I don't see it being a huge deal to sneak the ID in there too.

Jasius commented 4 years ago

however on mobile I find longer single-line messages end up wrapping around and becoming less legible, a bit like this:

My examples are short and concise which means that as long as user name isn't super long message doesn't get wrapped on any modern smartphone with default scaling options, not to mention that if it is an actual concern then your examples are an actual offenders, especially on devices with scaling set to high which pretty much litter half the screen.

Here are some screenshots to debunk your statement image Original example, default scaling image Original example(with ID) maximum discord scaling

displays their current username/nickname already and typing "@[username]" is usually pretty fast.

I explicitly mentioned this in the case where user has left the server, if user isn't in the server you cannot see suggestions for @Username

I understand that you want to contribute somehow but malpractice is simply unacceptable in any kind of collaborative environment which is why I think it would be better if you'd stay off this project.