Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

/rules command with *most* rules as subcommands #448

Open
3 of 9 tasks
JustWaveThings opened this issue Oct 2, 2023 · 10 comments
Open
3 of 9 tasks

/rules command with *most* rules as subcommands #448

JustWaveThings opened this issue Oct 2, 2023 · 10 comments
Labels
Status: Needs Review This issue/PR needs an initial or additional review

Comments

@JustWaveThings
Copy link
Contributor

JustWaveThings commented Oct 2, 2023

Complete the following REQUIRED checkboxes:

  • I have thoroughly read and understand The Odin Project Contributing Guide

  • The title of this issue follows the command name: brief description of request format, e.g. /help: add optional @user parameter

The following checkbox is OPTIONAL:

  • I would like to be assigned this issue to work on it
  • Or if someone else wants to run with it, collab on it, that's cool too.

1. Description of the Feature Request:

New bot command:

/rules with subcommand /user and then subcommands for each of the rule sections. This would be done for rules we commonly discuss in public channels and everyone would be able to see who initiated the bot. Bannable or otherwise serious rule-breaking should be excluded from this slash command, as that's not handled in public.

Story:

  • User breaks a rule regarding asking for help for a non-top project.
  • Mod uses /rules command and enters the user name and then the rule they broke in the bot sub-menu, with an optional sub-input to paste the rule-breaking post link into the bot as well.
  • odin bot posts in the same channel @'ing the user with a link to the specific rule broken and to seek help elsewhere, and if they have any questions, to message @Modmail, as well as a message further public engagement on the topic could lead to losing server access. (wording could use work)

EXTRA:

  • I don't know how easy this would be, but it would be great if we could then automagically grab the user ID and use it to post the information in the appropriate moderation tool(s) (being purposefully vague since this is a public repo)

2. Acceptance Criteria:

A list of checkbox items that explain the requirements needed to be met to resolve this request, e.g.:

  • Command requires user mention
  • Create /rules bot command
  • Create a list of subcommand names that would correlate to the current rules
  • Polls the rules to update the subcommand body in whatever manner is most appropriate to ensure when the rules change, the bot command is posting the correct rule verbiage
  • Create a blurb to attach to each sub-command that directs the user to the desired behavior / gives additional information based on the rule broken
  • EXTRA, forwards the rule-breaking post URL, and the user ID, for moderation documentation creation

3. Additional Information:

https://discord.com/channels/505093832157691914/991035592332673125/1158391257131929760 Yes, it was a dream.

@JustWaveThings JustWaveThings added the Status: Needs Review This issue/PR needs an initial or additional review label Oct 2, 2023
@JustWaveThings JustWaveThings changed the title Rules slash command with most rules as subcommands /rules command with *most* rules as subcommands Oct 2, 2023
@MaoShizhong
Copy link
Contributor

I like this a lot.

What I'm wondering is how we'd be able to keep these subcommands in sync with any changes made to the rules, should that ever happen.

We have /updatefaq which pulls from the top-meta repo to update the OdinBot embeds, but the rules embeds are made by Dyno. I'm under the impression that edits to existing rules would only edit its embeds' contents as opposed to deleting and reposting new messages with new embeds?

If it is the former, then getting message IDs shouldn't be a huge issue but I'm just wondering about the implementation when it comes to, say, adding new rules or if for whatever reason, the rules order changes or in some other way each rules' message IDs change. Did you already have ideas for how this could be handled?

Same for the actual bot message that would be posted. Is your intention just to have the bot message include a link to the specified rule message in the rules channel? Or to actually include the contents of rule embed? I'm not 100% sure how that might work if the latter, since the rules embeds contents are handled by Dyno.

Wondering what your thoughts are on implementation @JustWaveThings as well as @TheOdinProject/odin-bot

@JustWaveThings
Copy link
Contributor Author

I haven't looked too deeply into the implementation details now that there is movement to have one source of truth for the rules and be able to build the Discord rules/ TOP app from that source, I'm happy to wait for that to be complete so I can see how they implement the /updaterules command.

However that command is structured, I feel like (HOPE?!?!) it would be most of the way there to be able to populate the bot commands. There might be unique challenges because I don't know if I'd want every rule as a subcommand. That might be a bit overwhelming/overkill.

Ideally, I'd get a separate command working to populate the commands from the same source of truth as the /updaterules command. From there, I think I'd need/want input on how best to get the command/code into the staff workflow. Not sure if just asking staff to run two commands when the rules update, or if the command could be triggered by the /updaterules command.

@Asartea
Copy link
Contributor

Asartea commented Mar 13, 2024

My two cents:

Same for the actual bot message that would be posted. Is your intention just to have the bot message include a link to the specified rule message in the rules channel? Or to actually include the contents of rule embed? I'm not 100% sure how that might work if the latter, since the rules embeds contents are handled by Dyno.

I think the second option is better, both from a coding POV (not having to deal with Message ID's etc), as well as from a user POV: If I'm getting tagged about a broken rule I'd much prefer getting the actual text of the rule, rather than having to click a link to see the rule.

However that command is structured, I feel like (HOPE?!?!) it would be most of the way there to be able to populate the bot commands. There might be unique challenges because I don't know if I'd want every rule as a subcommand. That might be a bit overwhelming/overkill

My immediate thought would be to define which rules you want, and then when run parse out the text from that command.

@JustWaveThings
Copy link
Contributor Author

JustWaveThings commented Mar 13, 2024

I'm not sure if we want to spam the whole text in the public channel. I don't think it's a heavy lift to click the link that takes one directly to the rule in # rules, which is an improvement now where we link the user to the whole channel for any rule break. Also by linking them to the specific rule, they might be more likely to read the other rules, where they probably would not if just the broken rule text was presented to them. My initial thoughts anyway. I want to avoid being spammy with rule embeds. People can get fatigued seeing them a lot and can come across as impersonal/hostile if overused.

@MaoShizhong
Copy link
Contributor

@JustWaveThings Ah, I hadn't caught up with the rules discussion. That sounds like a good move, e.g. if it's something like what we have with /updatefaq but /updaterules.

Then yeah, it'd probably be easier to think about implementation once the rules thing has been agreed on and even better so once actually implemented.

And yeah, I'm not really liking the image of having the bot post the actual rule embed but just a link. Because right now, to link a direct rule you'd have to manually go to the rules channel, find the message then copy its link. Would be nice to just zip through a menu/type out without leaving the channel.

@JustWaveThings
Copy link
Contributor Author

Exactly my thoughts. Decrease staff effort, increase learner knowledge of rules in real-time in public, and promote more eyeballs on the rules that the team has put many many hours of thought and care into crafting.

@Asartea
Copy link
Contributor

Asartea commented Mar 13, 2024

Ah, wait: I was thinking of the text/link as something that would only be shown to the user (which now that I say it: that's impossible, I think). Yeah, you're totally right. A link is better

@MaoShizhong
Copy link
Contributor

MaoShizhong commented Mar 13, 2024

Ah, wait: I was thinking of the text/link as something that would only be shown to the user (which now that I say it: that's impossible, I think). Yeah, you're totally right. A link is better

Yeah. Understandably, ephemeral responses can only be set for the person who executed the slash command i.e. the mod. So not really the most useful XD

@JustWaveThings
Copy link
Contributor Author

I mean we could make it create a private thread with the full text of the message in it and tag the user, but I think doing the link real-time in public will be the best bang for the buck.

@MaoShizhong
Copy link
Contributor

The link sounds both simpler but also more beneficial for anyone lurking so they can see it too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Needs Review This issue/PR needs an initial or additional review
Projects
None yet
Development

No branches or pull requests

3 participants