Series of replies should automatically turn into threads

Opmerkingen

1 opmerking

  • Pete

    I like it!
    A ‘Thread-mod’ role and role-exclusive emoji :gold_thread: paired with a ‘/weave time:stamp’ or ‘/weave [chain-number]’  command to threadify groups of historic messages bearing :gold_thread: reacts would be a great way to implement this, potentially without server-side code change.
    Premise:
    With the role and react as a base, a ‘/weave’ bot or command to condense tagged comments into threads would be simple(ish) to implement:
    Assuming all discord needs to do is add the role and react: A  bot could iterate on and enhance the way the condensing is mediated:

    Thread mediation/voting:

    When checking for reply chains that can be condensed into threads:
    1. We add a new emoji :gold_thread: and a new role ‘thread-mod’.
    2. We Keep a running count of reply chains within a set number of lines and minutes.
    These are [possible-chains] with [possible-comments].
    3. When a [possible-chain] surpasses the set timespan/linecount it is a [rejected-chain]: 
    We forget about it. 
    4. When a [possible-chain] surpasses a set reply threshold within the set timespan and linecount: 
    We react to its [possible-comments] with :gold_thread: The [possible-chain] is now a [candidate-chain] with [candidate-comments].

    5. We assign a rolling sequential number from :one: to :ten: to the new [candidate-chain] as an identifier. 
    This number is now the chain's [chain-number], and the [candidate-chain] is now a [known-chain] with [known-comments].

    6. If there are already 10 [known-chains]: 
    We unassign and unreact this [chain-number] from the oldest [known-chain], so only one chain, the most recent, has that [chain-number].

    7. The :needle: emoji is our [thread-react] used to give final approval to make a thread. 

    8. When the last [known-comment] in a [known-chain] or any later chain gets a :[thread-react]: from a thread-mod, the user who posted it, or a pre-set number of other users:

    The [known-chain] (or other) gains [thread-consensus] and becomes an [approved-thread], and we skip straight to sending '/weave'.

    9. The :gold_thread: and :round_pushpin: emojis are [chain-reacts].

    10. When a [known-chain] gets its first [chain-react] from a mod or user: 
    We react to all [known-comments] in that [known-chain] with its :[chain-number]. The [known-chain] is now an [open-chain] with [open-comments]: 
    11. If :round_pushpin: is not present:
    We also react with :round_pushpin: so users don't have to hunt for it.
    12. If an [open-comment] has a [chain-react] from a thread-mod, the user who posted it, or a pre-set number of other users:
    The [open-comment] gains [comment-consensus]  in that [chain-react]. 
    13. With :gold_thread: [comment-consensus] an [open-comment] becomes an [approved-comment], subject to moving to a thread.

    14. With :round_pushpin: [comment-consensus] an [open-comment] becomes a [held-comment] and will be copied to the thread but not deleted.

    15 The :thread: and :[chain-number]: emojis are [add-reacts].

    16. If a non-chain comment gets both [add-reacts] from a thread-mod, the owning user, or a pre-set number of other users:
     The comment gains [add-consensus], and becomes an [open-comment], gaining :gold_thread: and :round_pushpin: reacts from the bot to aid in it's possible [comment-consensus] 

    17. When all [open-comments] in an [open-chain] have gained [comment-consensus] and resolved to [approved-comments] and/or [held-comments], The [open-chain] gains  [chain-consensus] and become an [approved-chain]

    We react to the last tagged comment in the [approved-chain] with :needle: 

    18.When the last comment in an [approved-chain] (or other chain) gains [thread-consensus] from :needle: the [approved-chain] becomes an [approved-thread].
    We send /weave [chain-number].
     

    Thread creation by bot/thread-mod via '/weave':

    When /weave is sent:

    A. We default to the most recent chain, but accept as arguments:
    Timestamp for a :gold_thread: tagged comment, timestamps for first and last (space separated) gold_thread:tagged comments for inclusion of a range of comments,  timestamps (comma separated) to include a sequence of :gold_thread: tagged comments, 
    [chain-number] as a number for a [known-chain], first and last [chain-numbers] (space separated) for a range of [known-chains], or a sequence of comma separated [chain-numbers] for a sequence of [known-chains].
    B. We generate an anthology of truncated [comment quotes in the opening thread comment. We might need to send this comment for the short-form previews to generate.
    C. We copy the generated previews into a subsequent thread-comment or comments, further collapsing below-preview-length run-on comments by single authors, visually condensing large comments by attaching the rest of rich comments behind ‘show more’ bridges or cramming non-markdown text Into bot annotations, which are padded with less whitespace..
    D. With the anthology fully inflated in the second(+) thread-comment(s), we replace the contents of the initial thread-comment with ‘woven by mod | users | consensus, summary follows’
    E. We check if any of the tagged main channel comments belong to a user with a ‘no-thread-collapse’ role, classifying any of these as [held-comments]
    F. We delete the [approved-comments] from the [approved-thread] in main channel and clear reacts from the remaining [held-comments].
    ~fin~

    Retroactive threadification complete!
    Discord gods, please hear us out :)

    0

U moet u aanmelden om een opmerking te plaatsen.