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

Add way to fetch & export message chains from Discord channels #619

Open
4 tasks
thereisnodeveloper opened this issue Oct 11, 2024 · 1 comment
Open
4 tasks
Labels
Status: Needs Review This issue/PR needs an initial or additional review

Comments

@thereisnodeveloper
Copy link

Checks

  • 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

Do you want to be assigned to this issue?

  • I would like to be assigned this issue to work on it

Description of the Feature Request

Export a message chain (thread of replies) from a specific channel in the TOP Discord. This feature would confer benefits that thread-like formats (forums, reddit) have. Examples of benefits below:

  1. Enhancing Discord search:

    1. (as-is): user needs to search for a particular message, then click around to navigate across its replies. Manual and inconvenient
      1. Each message shows up separately in Discord search results, clogging up the results.
      2. There's no way to search within a message chain
  2. Creating or referencing GitHub Issues: -

    1. Often, Discord discussions are referenced in the creation of Issues on Github.
    2. Linking 1 message for reference- difficult to capture the entirety of discussions held on discord. Linking multiple messages - manual, time consuming
  3. Creating a FAQ / knowledge base

    1. Grouping messages into chains means that it's easy to identify what a Question is by looking at which message started the chain, and the answers + following discussions.
    2. This then allows grouping of each chains by same/similar questions, which leads to identifying most frequently asked questions, and compare answers to the same question.
  4. Support retro-active creation of threads

    1. Could be done perhaps by supporting a separate /thread command (Admin Only?)
    2. Users often don't realize a message chain is thread-worthy until it's too late. Then if they want to create a thread, they have to manually create a thread and link/paste messages
  5. Decision Logging: Threads could be pulled to log decision-making conversations about the curriculum, Discord server, etc. for future review.

  6. Moderation and Record-Keeping: mods/admins can easily pull message chains from problematic conversations or reports, making it easier to document/make decisions on issues.

Example trigger command:

/message-chain [link to 1st message], [number of messages] (default: last 20 messages, max )

A more expensive but convenient form would be to let users use ANY of the messages in a chain, and the bot can traverse both backwards and forwards to find the beginning and end of the message chain

Acceptance Criteria

Tasks

Preview Give feedback

Additional information

No response

@thereisnodeveloper thereisnodeveloper added the Status: Needs Review This issue/PR needs an initial or additional review label Oct 11, 2024
@MaoShizhong
Copy link
Contributor

MaoShizhong commented Nov 3, 2024

Thanks for the suggestion. I love the idea but have some big considerations that make me sceptical of a practical implementation of this:

  • How will the feature decide what messages are part of a chain? Not everyone writes a single message that replies to the previous message in the would-be chain. Replies may also be "non-linear". What happens when the conversation goes like this?
    A: foobar bar
     /(A: foobarbar)
    B: Foo bar!
    B: Lol foo bar baz foo
    B: Foo
     /(B: Lol foo bar baz foo)
    A: Foo!
     /(B: Foo)
    A: Also foo!
    C: Foo...?
    B: @C Foo...
    B: @A Bar!
    B: Foo.
    
    Such a feature would only work if we can reliably determine what belongs and doesn't belong in a chain, as well as the order in which they are presented. If messages are omitted, context is lost and the chain isn't so beneficial. If wrong messages are included, context gets thrown around and the chain is also not so beneficial.
  • What determines when a chain ends? When we manually search things and read message history, we know from context when a conversation starts. How do we implement this in code, since it's the bot that will have to decide (e.g. we ask for max 20 messages but the conversation was really only 5 messages long - how do we avoid polluting the response with 15 unrelated messages which may or may not look like they belong to the 5 "real" messages?)?
  • If conversations do move to threads, how will a bot link non-thread messages to thread messages? While this technically is more implementable of a thought, the above 2 points really make this hard to justify.
  • How will the bot display the chain of messages? I can see it providing an embed with arrow reactions you can use to "change page", but given the above points, sceptical that's going to be net beneficial over just searching things up and reading through things yourself. And given the character limit along with how people do often write longer messages, it's not practical to display everything in a single output without uploading a text document or similar, and that's a hell of a lot more complexity/bandwidth for questionable benefit IMO.

Would like to hear from @TheOdinProject/odin-bot in case there are things I haven't considered.

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

2 participants