# Moved to GitHub

I've moved this project to github in hopes of alleviating some of the headaches caused by maintaining 5+ pages for what is essentially the same project. I also hope the move will motivate others to get involved and contribute to the codebase

I may or may not update this page to reflect the current state on github but the github page will be maintained as long as the scripts remain viable.

Over the course of the next weeks I plan to release scripts that normalize Twitch's psuedo IRC interface into something far more manageable from within mIRC.

I'm breaking my twitch normalizer script down into a set of modules and releasing them so as a user can pick&choose the parts they want, and ignore those that are unneeded. All modules will require the core module and my JSON parser to be loaded to function but beyond that will be left up to what best suits your needs

# Requirements

Win XP or later: Due to a dependency within my JSON parser, you must be on Windows as it makes use of native libraries; These libraries are not accessible even under WINE.

mIRC v7.43 or later. This is because some modules make use of the added /parseline command and on parseline events.

JSON for mIRC: The core and many modules make use of Twitch's webapi to fill in gaps. I have coded all modules to make use of this parser (and an upcoming future version) so instead of including it as part of each module I ask you to load it from the source.

# Installing

To install, copy the contents of the module you wish to load
Open Notepad.exe or similar and paste the copied code into it
Save the file using the name given with module; this includes the extension(.mrc)
From within mIRC type the following: //load -rs "path\to\module.mrc"

# Modules

mTwitch.Core.mrc - v0.0.0006 - Base of all modules; required for each module to function

mTwitch.GroupChat.mrc - v0.0.0006 - Implements Twitch whispers seamlessly into mIRC

mTwitch.ISupport.mrc - v0.0.0001 - Implements the IRC standardized 005 numeric; includes hooks for modules to extend the token

mTwitch.StateToTopic.mrc - v0.0.0008 - Makes use of a stream's channel topic to display state, game, and status information

mTwitch.OAuth.mrc - v0.0.0003 - Used to create an OAUTH token for a specified account that has full account access. Though most modules will not need/use such access, if you wish for mIRC to be able to alter your stream chat's mode(slow, subsonly, r9k, etc), status, game, blocked list, and so on, such access will be required.

mTwitch.FixEvents.mrc - Fixes many inconsistencies with how twitch handles IRC events

mTwitch.UserModeState.mrc - Makes use of channel modes that effect user state to easily identify followers, subs, site mods/admins and or the streamer

mTwitch.NoRateLimit.mrc - Makes use of sockets to seamlessly work around twitch's rate limiting. This is aimed at bot creators.

mTwitch.Commands.mrc - Translates general purpose IRC commands (such as /kick, /ban, etc) into their twitch equivalent. Also applies slow mode, sub mode, r9kbeta and others as channel modes.

# GitHub - Features, Bugs, Contributions

My most up-to-date versions of each script are located on github. Feel free to open issues for bugs or feature requests there, alone with forking and submitting pull requests.

# Contact

You can contact me either as SReject on Twitch in #sreject or #mirchelp or on SwiftIRC

SReject   -  Nov 14, 2015

# Moving to github

I've moved this project to github in hopes of alleviating some of the headaches caused by maintaining 5+ pages for what is essentially the same project. I also hope the move will motivate others to get involved and contribute to the codebase

I may or may not update this page to reflect the current state on github but the github page will be maintained as long as the scripts remain viable.

SReject   -  Oct 26, 2015

Updated mTwitch.StateToTopic.mrc to v0.0.0008
Updated mTwitch.OAuth.mrc to v0.0.0003

ArkaZeen   -  Oct 26, 2015

Do proxies work with your mTwitch.OAuth.mrc? I continue to get a "/socklisten: port error (line 110, mTwitch.oauth.mrc)". My settings are
app_secret
asxu7wn245808jkjjwhe36ya5f#####
app_uri
http://localhost:80
app_clientid
1hm7vh0f6zzp3ob1v99nicwvx3#####

Thanks!

SReject  -  Oct 26, 2015

This is caused by the port being in use; you can get a list of sockets and ports used by doing /socklist in mIRC

With that said, it may not be mIRC using the port, but another program such as a web server.

I've updated the script to check if the port is in use.

SReject   -  Oct 23, 2015

Updated mTwitch.Core.mrc to v0.0.0006
Updated mTwitch.GroupChat.mrc to v0.0.0006
Updated mTwitch.StateToTopic.mrc to v0.0.0005
Depreciated mTwitch.ISupport,mrc; this will be incorporated into the core at a later date

SReject   -  Sep 01, 2015
ArkaZeen   -  Aug 30, 2015

Great work you're doing here sir,

Will mTwitch.UserModeState.mrc also allow for users to follow channels from mIRC? Thanks.

SReject  -  Aug 30, 2015

Most likely that will fall into mTwitch.Commands.mrc.

mTwitch.UserModeState.mrc uses user-effecting channel modes to distinguish users apart
+q(~): Streamer
+o(Mod)
+h(%): known sub
+v(+): follower

Wolfie713  -  Sep 19, 2015

Could you make it easy to configure the modes? For example, I'd prefer + to be for Turbo users and nothing for regular viewers (regardless of if they are following or not).

Will the UserModeState also fix the way user names appear? All names are in lowercase by default, but once the user says something, would be nice if it corrected any differences (ie, for me, it would change the display of my name from 'wolfie713' to 'Wolfie713').

SReject  -  Oct 23, 2015

As far as configurability; most likely not for the foreseeable future. Its my intention to keep these scripts as simple as possible. With configurability comes the requirement of some sort of UI, be it command line or graphical, as well as maintaining the configuration format across future versions.

As far as UserModeState fixing names, it will not. With that said, I am working to incorporate the Display_Name when available. The issue, though, is some display names contain spaces which would invalidate them when used in IRC-protocol messages.

There are ways around this such as on TEXT and on ACTION and replacing the $nick with the display_name from $msgtags but this is merely cosmetic which I don't like. The name displayed would have no state associated with it; it wouldn't be the nick in the channel nicklist, the displayed name could not be used in identifers or commands to reference the user's associated data, nor could mouse hotlinking events be used to perform actions against the user the name belongs to.

Please note that not only do I want to improve how Twitch 'feels' to the general user with these scripts, I also want to open the door for scripts wrote for non-twitch-irc to work in the twitch environment without the need for twitch-specific coding.

^WeSt   -  Aug 29, 2015

Good work, but why dont you put all-in one file? <3 :P

SReject  -  Aug 29, 2015

Because some people may not want every part of it and its easier to have users load only the parts they want than to code some sort of UI to enable/disable various aspects and have to keep track of what is and isn't enabled.