Skip to content

Instantly share code, notes, and snippets.

@DanielOaks
Last active August 18, 2020 13:05
Show Gist options
  • Select an option

  • Save DanielOaks/a64a1b0e01609e6e0f86a6cf92973caa to your computer and use it in GitHub Desktop.

Select an option

Save DanielOaks/a64a1b0e01609e6e0f86a6cf92973caa to your computer and use it in GitHub Desktop.

Revisions

  1. DanielOaks revised this gist Jul 18, 2017. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions statusmsg.md
    Original file line number Diff line number Diff line change
    @@ -19,6 +19,8 @@ When sending messages out, clients should only send PRIVMSG or NOTICE messages w

    When receiving messages, clients should assume that the server can send it any supported channel priv prefixes in a statusmsg target. This is because the `STATUSMSG` token may be missing or outdated, and simply because it's the most resilient behaviour. For example, if the server supports these ISUPPORT tokens: `"STATUSMSG=+@ PREFIX=(ohv)@%+"`, then your client should not break if it receives a target of `%#ircv3`. Similarly, if no `STATUSMSG` token was sent in the above example, clients should accept targets of `+#ircv3`, `%#ircv3` and `@#ircv3`.

    Clients should also keep in mind the `CHANTYPES` ISUPPORT token. Take the characters from the `PREFIX` token, subtract all the characters in `CHANTYPES`, and then accept you can receive statusmsg targets with all of those characters. This is because certain networks like ircnet support both voice with the `+` character, and channels that start with `+`, meaning you can't just assume that a target starting with a character from `PREFIX` is a statusmsg.


    ### Multiple Prefixes

  2. DanielOaks revised this gist Jul 18, 2017. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions statusmsg.md
    Original file line number Diff line number Diff line change
    @@ -1,21 +1,21 @@
    # Parsing And Sending STATUSMSG Messages

    `STATUSMG` is a type of IRC private message / notice where the target of the private message is the members of a channel with at least a certain level of channel responsibility.
    `STATUSMSG` is a type of IRC private message / notice where the target of the private message is the members of a channel with at least a certain level of channel responsibility.

    In other words, instead of the target of the message just being `#ircv3`, it may be `@#ircv3` and only be send to the ops of the channel, rather than all members of the channel.


    ## The STATUSMSG ISUPPORT Token

    The `STATUSMSG` `RPL_ISUPPORT` token is used to note that the server supports sending private messages and notices with these special 'statusmsg targets' (the channel name prefixed by a given privilidge level character such as `+`, `%`, `@` or similar).
    The `STATUSMSG` `RPL_ISUPPORT` token is used to note that the server supports sending private messages and notices with these special 'statusmsg targets' (the channel name prefixed by a given privilege level character such as `+`, `%`, `@` or similar).

    Specifically, this token notes which privilidge level characters the server supports from clients that send these messages. For instance, here's an example token:
    Specifically, this token notes which privilege level characters the server supports from clients that send these messages. For instance, here's an example token:

    STATUSMSG=+@

    The above means that the server supports channel targets prefixed by `+` or `@`. That is, clients can send a message to either `+#ircv3` or `@#ircv3` and it will be delivered to the right users (only those who have voice and above, and only those who have ops and above, respectively).

    When sending messages out, clients should only send PRIVMSG or NOTICE messages with a statusmsg target if the privilidge prefix on the message matches the above. That is, if the server supports these ISUPPORT tokens: `"STATUSMSG=+@ PREFIX=(ohv)@%+"`, then they can send messages to `+#ircv3` and `@#ircv3`, but messages sent to `%#ircv3` will most likely fail.
    When sending messages out, clients should only send PRIVMSG or NOTICE messages with a statusmsg target if the privilege prefix on the message matches the above. That is, if the server supports these ISUPPORT tokens: `"STATUSMSG=+@ PREFIX=(ohv)@%+"`, then they can send messages to `+#ircv3` and `@#ircv3`, but messages sent to `%#ircv3` will most likely fail.

    When receiving messages, clients should assume that the server can send it any supported channel priv prefixes in a statusmsg target. This is because the `STATUSMSG` token may be missing or outdated, and simply because it's the most resilient behaviour. For example, if the server supports these ISUPPORT tokens: `"STATUSMSG=+@ PREFIX=(ohv)@%+"`, then your client should not break if it receives a target of `%#ircv3`. Similarly, if no `STATUSMSG` token was sent in the above example, clients should accept targets of `+#ircv3`, `%#ircv3` and `@#ircv3`.

  3. DanielOaks revised this gist Jul 18, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion statusmsg.md
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,7 @@ The above means that the server supports channel targets prefixed by `+` or `@`.

    When sending messages out, clients should only send PRIVMSG or NOTICE messages with a statusmsg target if the privilidge prefix on the message matches the above. That is, if the server supports these ISUPPORT tokens: `"STATUSMSG=+@ PREFIX=(ohv)@%+"`, then they can send messages to `+#ircv3` and `@#ircv3`, but messages sent to `%#ircv3` will most likely fail.

    When receiving messages, clients should assume that the server can send it any supported channel priv prefixes in a statusmsg target. This is because the `STATUSMSG` token may be missing or outdated. For example, if the server supports these ISUPPORT tokens: `"STATUSMSG=+@ PREFIX=(ohv)@%+"`, then your client should not break if it receives a target of `%#ircv3`. Similarly, if no `STATUSMSG` token was sent in the above example, clients should accept targets of `+#ircv3`, `%#ircv3` and `@#ircv3`.
    When receiving messages, clients should assume that the server can send it any supported channel priv prefixes in a statusmsg target. This is because the `STATUSMSG` token may be missing or outdated, and simply because it's the most resilient behaviour. For example, if the server supports these ISUPPORT tokens: `"STATUSMSG=+@ PREFIX=(ohv)@%+"`, then your client should not break if it receives a target of `%#ircv3`. Similarly, if no `STATUSMSG` token was sent in the above example, clients should accept targets of `+#ircv3`, `%#ircv3` and `@#ircv3`.


    ### Multiple Prefixes
  4. DanielOaks created this gist Jul 18, 2017.
    25 changes: 25 additions & 0 deletions statusmsg.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    # Parsing And Sending STATUSMSG Messages

    `STATUSMG` is a type of IRC private message / notice where the target of the private message is the members of a channel with at least a certain level of channel responsibility.

    In other words, instead of the target of the message just being `#ircv3`, it may be `@#ircv3` and only be send to the ops of the channel, rather than all members of the channel.


    ## The STATUSMSG ISUPPORT Token

    The `STATUSMSG` `RPL_ISUPPORT` token is used to note that the server supports sending private messages and notices with these special 'statusmsg targets' (the channel name prefixed by a given privilidge level character such as `+`, `%`, `@` or similar).

    Specifically, this token notes which privilidge level characters the server supports from clients that send these messages. For instance, here's an example token:

    STATUSMSG=+@

    The above means that the server supports channel targets prefixed by `+` or `@`. That is, clients can send a message to either `+#ircv3` or `@#ircv3` and it will be delivered to the right users (only those who have voice and above, and only those who have ops and above, respectively).

    When sending messages out, clients should only send PRIVMSG or NOTICE messages with a statusmsg target if the privilidge prefix on the message matches the above. That is, if the server supports these ISUPPORT tokens: `"STATUSMSG=+@ PREFIX=(ohv)@%+"`, then they can send messages to `+#ircv3` and `@#ircv3`, but messages sent to `%#ircv3` will most likely fail.

    When receiving messages, clients should assume that the server can send it any supported channel priv prefixes in a statusmsg target. This is because the `STATUSMSG` token may be missing or outdated. For example, if the server supports these ISUPPORT tokens: `"STATUSMSG=+@ PREFIX=(ohv)@%+"`, then your client should not break if it receives a target of `%#ircv3`. Similarly, if no `STATUSMSG` token was sent in the above example, clients should accept targets of `+#ircv3`, `%#ircv3` and `@#ircv3`.


    ### Multiple Prefixes

    Statusmsg targets can contain multiple prefixes, such as `+@#ircv3` or similar. Servers that support STATUSMSG should parse this, and clients that implement STATUSMSG should parse this as well.