Is MODE still shown to IRC clients?

Hi, dual-pronged question. I’m working on modifying Eggdrop to work better with Twitch. According to the docs

:jtv MODE #<channel> +o <user>

is the prototype used to detect mode changes.

Question 1: Is this a notification-only message, or should IRC clients be able to send those MODE changes themselves, ie if the bot wants to grant (or take) moderator status to a user?

Question 2: Giving moderator status to a user via the web interface does not generate a MODE message from the server for me. I have all the CAP features enabled, so I would expect to be able to see it:

[@] :tmi.twitch.tv CAP * ACK :twitch.tv/commands twitch.tv/membership twitch.tv/tags

Can anyone confirm they are able to still see MODE changes via the IRC interface, and if they are able to send (not just read) those messages? If so… any thoughts on why I can’t? Thank you.

Notification/read only

to mod someone it is

PRIVMSG #channel : .mod username

Generally these messages are batched up so they don’t occur instantly.
Secondly, they don’t work at all in channels with 1k+ people present (even with the cap on) and is generally considered unreliable.

The correct method is to test for the presence of the moderator badge in tags -> bages

Worth nothing that whilst TMI (Twitch messaging interface) looks like IRC, it isn’t it just implements parts of IRC and uses the IRC messaging format. So don’t expect it to behave like IRC.

Thanks for the clarification- the MODE messages never appear though, even over the span of an hour. Can you confirm you still actually get these?

Is there a way to suggest document improvements to staff here, to clariy the read-only nature of MODE?

Most of the channels I work in have 1k+ chatters so all the “normal” IRC MODE stuff just doesn’t work, you should be reading TAGs instead

The documentation no where says you can send MODE messages.

The main Dev Documentation do not cover the available chat commands, that is covered in the general help guide (for everyone not jsut devs) here

https://help.twitch.tv/s/article/chat-commands?language=en_US

These commands can be sent a /command or .command to avoid IRC library conflicts that interrupt / and sends as a command instead of a PRIVMSG

I appreciate the feedback regarding parsing tag messages, I’m already doing that, and thank you for the reference to sending commands via PRIVMSG. What I’m interested in here though is also parsing based on mode messages when they appear. Again from the docs,

If there are more than 1000 chatters in a room, NAMES return only the list of operator privileges currently in the room. The code stops sending JOIN/PART updates when the room size exceeds 1k. After that, it only sends “MODE changes” (any of the +o and -o commands above).

And regardless of channel size, it seems that MODE messages should be generated, but I still can’t see them even in a 3-user channel. I’m still trying to validate why they are not appearing, if anyone has any theories or can confirm they also do not see MODE messages. It would be much appreciated.

@xangold I’ve seen your name in some of these posts, my two cents for improving documentation would be to clarify that clients can’t send MODE messages on Twitch, as this is a deviation from IRC RFC and IRC devs might expect that functionality without something saying it is read-only. If there is a better way to submit such requests for consideration/improvement? Just trying to give back where I can, thanks!

Documentation fixes can be suggested on the uservoice, not by pinging staff

https://twitch.uservoice.com/forums/310213-developers?category_id=358000

(which is also linked at the bottom of the documentation pages)

Twitch doesn’t (fully) implement the RFC, TMI is a custom chat implementation that is available via an IRC port (and over websockets) that looks like IRC but it isn’t.

The general consensus is that they stop working in 1k+, and are generally not reliable, as tags/badges should be used instead. If you are not getting them, sounds like that sub system has dropped offline again (it’s no reliable, as again, tags/badges are the correct method to check for op status or other roles). I don’t bother even parsing for them (modes), as Tags/Badges are the correct way to check for moderator status (or other roles) in a channel

Twitch Chat provides an IRC compatible interface, but it is not designed to be compliant with the IRC RFC as it is it’s own system, just with support for IRC clients. As such you shouldn’t make assumptions beyond anything which is not mentioned specifically in the documentation.

Before this thread ages out (and back to the original subject line), can anyone confirm with first-hand knowledge that the MODE command is still supposed to (or not supposed) be shown to clients? I am unable to view a MODE command being generated when mod’ing someone, which seems to run counter to the documentation as an expected functionality.

TL;DR - Maybe… but people have known MODE is unreliable for years. Use TAGS.


First-hand knowledge would come from Twitch staff via documentation which includes this in the Intro:

While our IRC server generally follows RFC1459, there are several cases where it behaves slightly differently than other IRC servers; as described below, there are many Twitch-specific IRC capabilities. The differences are necessary to accommodate:

  • The massive scale at which our chat servers operate, and
  • Complex Twitch-specific features that we provide (to viewers, broadcasters, and developers).

We already know that the MODE/JOIN/PART/NAMES work in a non-standard fashion for a fact. They are all “batched” and run at intervals, and the MODE/JOIN/PART stop functioning after 1000 users.

It does state:

The code stops sending JOIN/PART updates when the room size exceeds 1k. After that, it only sends “MODE changes” (any of the +o and -o commands above).

Which I think you can take as, “it probably should continue to function” - but as others have said, there have been implementations that render the need for MODE moot. Anyone that maintains a bot knows that MODE is very unreliable.

Using the IRCv3 tags has been considered the efficient way of handling moderator status checks.

EDIT: googled for eggdrop IRCv3 support and found: https://gist.github.com/grawity/4455067/eb63e5e1764df2a4d9979fbdb52554e698da3ce1

Where g_cap.tcl references “Experimental IRCv3 capability support”

1 Like

To close this topic out, after engaging with the staff, they now plan to officially remove this functionality

From my conversation with them: “Thanks for pointing this out. NAMES and MODE have not functioned properly for some time and will not be supported. As such, we have removed this from the documentation and the functionally will soon be removed from the IRC interface.”

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.