package Ġcom . kt mi . t mi . events Ċ Ċ import Ġcom . kt mi . t mi . commands .* Ċ import Ġcom . kt mi . t mi . dsl . builder . Tw itch Scope Ċ import Ġcom . kt mi . t mi . messages . Text Message Ċ import Ġcom . kt mi . t mi . messages . Tw itch Message Ċ import Ġcom . kt mi . t mi . messages . is Mod Ċ Ċ /** Ċ Ġ* ĠContext Ġof Ġreceived Ġmessage Ġthat Ġexposes Ġhelper Ġfunctions Ġfor Ġchannel Ġit 's Ġreceived Ġfrom Ċ Ġ*/ Ċ open Ġclass ĠChannel Context < T : ĠTw itch Message >( ĊĠĠĠ Ġval Ġmessage : ĠT , ĊĠĠĠ Ġval Ġchannel : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġval Ġtext Ġget () Ġ= Ġmessage . raw Message . text Ġ?: Ġ"" ĊĊĠĠĠ Ġ/** ĠSends Ġmessage Ġto Ġchannel Ġin Ġthis Ġcontext Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . sendMessage ( text : ĠString ) Ġ= ĠsendMessage ( channel , Ġtext ) ĊĊĠĠĠ Ġ/** ĠSends Ġmessage Ġto Ġchannel Ġin Ġthis Ġcontext Ġand Ġcolor Ġyour Ġtext Ġbased Ġon Ġyour Ġchat Ġname Ġcolor . Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . action ( text : ĠString ) Ġ= Ġaction ( channel , Ġtext ) ĊĊĠĠĠ Ġ/** ĠSends Ġa Ġwh isper Ġmessage Ġto Ġuser Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . wh isper ( username : ĠString , Ġmessage : ĠString ) Ġ= Ġwh isper ( channel , Ġusername , Ġmessage ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġallow Ġyou Ġto Ġper manently Ġban Ġa Ġuser Ġfrom Ġchat Ġroom Ġin Ġthis Ġcontext Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . ban ( user : ĠString ) Ġ= Ġban ( channel , Ġuser ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġcommand Ġwill Ġallow Ġyou Ġto Ġlift Ġa Ġpermanent Ġban Ġon Ġa Ġuser Ġfrom Ġchat Ġroom Ġin Ġcurrent Ġcontext . ĊĠĠĠĠ Ġ* ĠYou Ġcan Ġalso Ġuse Ġthis Ġcommand Ġto Ġend Ġa Ġban Ġearly ; Ġthis Ġalso Ġapplies Ġto Ġtimeouts ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . un ban ( user : ĠString ) Ġ= Ġun ban ( channel , Ġuser ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġallows Ġyou Ġto Ġtemporarily Ġban Ġuser Ġin Ġcurrent Ġcontext Ġfrom Ġthe Ġchat Ġroom Ġfor Ġ 1 0 Ġminutes Ġby Ġdefault */ ĊĠĠĠ Ġfun ĠTw itch Scope . timeout ( user : ĠString , Ġseconds : ĠInt Ġ= Ġ 6 0 0 ) Ġ= Ġtimeout ( channel , Ġuser , Ġseconds ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġallows Ġyou Ġto Ġset Ġa Ġlimit Ġon Ġhow Ġoften Ġusers Ġin Ġthe Ġchat Ġroom Ġin Ġcurrent Ġcontext Ġare Ġallowed Ġto Ġsend Ġmessages Ġ( rate Ġlimiting ) */ ĊĠĠĠ Ġfun ĠTw itch Scope . slow Mode ( seconds : ĠInt ) Ġ= Ġslow Mode ( channel , Ġseconds ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġallows Ġyou Ġto Ġdisable Ġslow Ġmode Ġin Ġthe Ġchat Ġroom Ġin Ġcurrent Ġcontext Ġif Ġyou Ġhad Ġpreviously Ġset Ġit . Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . disable Slow Mode () Ġ= Ġdisable Slow Mode ( channel ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġcommand Ġallows Ġyou Ġor Ġyour Ġmods Ġto Ġrestrict Ġchat Ġto Ġall Ġor Ġsome Ġof Ġyour Ġfollow ers , ĊĠĠĠĠ Ġ* Ġbased Ġon Ġhow Ġlong Ġthey âĢĻ ve Ġfollowed ĠâĢĶ Ġfrom Ġ 0 Ġminutes Ġ( all Ġfollow ers ) Ġto Ġ 3 Ġmonths . ĊĠĠĠĠ Ġ* Ġ@ param Ġduration ĠSpecifies Ġhow Ġlong Ġshould Ġthe Ġuser Ġfollow Ġgiven Ġchannel Ġin Ġorder Ġto Ġchat . ĊĠĠĠĠ Ġ* ĠFor Ġexample Ġ*" 3 0 m "* Ġfor Ġ 3 0 Ġminutes Ġor Ġ*" 2 d "* Ġfor Ġtwo Ġdays . ĠFor Ġmore Ġinformation , ĊĠĠĠĠ Ġ* Ġrefer Ġto Ġ[ documentation ]( https :// help . twitch . tv / s / article / chat - commands ? language = en _ US # All Mods ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . follow Only ( duration : ĠString ) Ġ= Ġfollow Only ( channel , Ġduration ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġallows Ġyou Ġto Ġdisable Ġfollow ers Ġonly Ġmode Ġif Ġyou Ġhad Ġpreviously Ġset Ġit . Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . disable Follow Only () Ġ= Ġdisable Follow Only ( channel ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġcommand Ġallows Ġyou Ġto Ġset Ġyour Ġroom Ġso Ġonly Ġusers Ġsubscribed Ġto Ġyou Ġcan Ġtalk Ġin Ġthe Ġchat Ġroom . ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġdon 't Ġhave Ġthe Ġsubscription Ġfeature Ġit Ġwill Ġonly Ġallow Ġthe ĠBroad caster Ġand Ġthe Ġchannel Ġmod erators ĊĠĠĠĠ Ġ* Ġto Ġtalk Ġin Ġthe Ġchat Ġroom . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . sub Only () Ġ= Ġsub Only ( channel ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġallows Ġyou Ġto Ġdisable Ġsubscribers Ġonly Ġchat Ġroom Ġif Ġyou Ġpreviously Ġenabled Ġit .*/ ĊĠĠĠ Ġfun ĠTw itch Scope . disable Sub Only () Ġ= Ġdisable Sub Only ( channel ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġallow Ġthe ĠBroad caster Ġand Ġchat Ġmod erators Ġto Ġcompletely Ġw ipe Ġthe Ġprevious Ġchat Ġhistory .*/ ĊĠĠĠ Ġfun ĠTw itch Scope . clear Chat () Ġ= Ġclear Chat ( channel ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġcommand Ġdis allows Ġusers Ġfrom Ġposting Ġnon - unique Ġmessages Ġto Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĠIt Ġwill Ġcheck Ġfor Ġa Ġminimum Ġof Ġ 9 Ġcharacters Ġthat Ġare Ġnot Ġsymbol Ġunicode Ġcharacters Ġand Ġthen Ġpur ges ĊĠĠĠĠ Ġ* Ġand Ġrepet itive Ġchat Ġlines Ġbeyond Ġthat . ĠR 9 K Ġis Ġa Ġunique Ġway Ġof Ġmod er ating Ġessentially Ġallowing Ġyou Ġto Ġstop ĊĠĠĠĠ Ġ* Ġgeneric Ġcopy - past ed Ġmessages Ġintended Ġas Ġspam Ġamong Ġover Ġgenerally Ġannoying Ġcontent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . r 9 KB eta () Ġ= Ġr 9 KB eta ( channel ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġdisable ĠR 9 K Ġmode Ġif Ġit Ġwas Ġpreviously Ġenabled Ġon Ġthe Ġchannel .*/ ĊĠĠĠ Ġfun ĠTw itch Scope . disable R 9 KB eta () Ġ= Ġdisable R 9 KB eta ( channel ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġallows Ġyou Ġto Ġset Ġyour Ġroom Ġso Ġonly Ġmessages Ġthat Ġare Ġ 1 0 0 % Ġem otes Ġare Ġallowed .*/ ĊĠĠĠ Ġfun ĠTw itch Scope . em ote Only () Ġ= Ġem ote Only ( channel ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġallows Ġyou Ġto Ġdisable Ġem ote Ġonly Ġmode Ġif Ġyou Ġpreviously Ġenabled Ġit .*/ ĊĠĠĠ Ġfun ĠTw itch Scope . disable Em ote Only () Ġ= Ġdisable Em ote Only ( channel ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAllows Ġyou Ġto Ġchange Ġthe Ġcolor Ġof Ġyour Ġusername . ĠNormal Ġusers Ġcan Ġchoose Ġbetween ĠBlue , ĠCor al , ĠD od ger Blue , ĊĠĠĠĠ Ġ* ĠSpring Green , ĠY ellow Green , ĠGreen , ĠO range Red , ĠRed , ĠGold en Rod , ĠHot P ink , ĠC ade t Blue , ĠSe a Green , ĠCho colate , ĊĠĠĠĠ Ġ* ĠBlue V io let , Ġand ĠFire brick . ĠTw itch ĠTur bo Ġusers Ġcan Ġuse Ġany ĠHex Ġvalue Ġ( i . e : Ġ# 0 0 0 0 0 0 ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . setColor ( color : ĠString ) Ġ= Ġset Color ( channel , Ġcolor ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġallow Ġyou Ġto Ġpromote Ġa Ġuser Ġto Ġa Ġchannel Ġmod erator */ ĊĠĠĠ Ġfun ĠTw itch Scope . mod ( user : ĠString ) Ġ= Ġmod ( channel , Ġuser ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġallow Ġyou Ġto Ġdem ote Ġan Ġexisting Ġmod erator Ġback Ġto Ġviewer Ġstatus Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . un mod ( user : ĠString ) Ġ= Ġun mod ( channel , Ġuser ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġgrant ĠV IP Ġstatus Ġto Ġa Ġuser . Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . vip ( user : ĠString ) Ġ= Ġv ip ( channel , Ġuser ) ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġre voke ĠV IP Ġstatus Ġfrom Ġa Ġuser Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . un vip ( user : ĠString ) Ġ= Ġun vip ( channel , Ġuser ) Ċ } Ċ Ċ /** Ċ Ġ* ĠContext Ġof Ġreceived Ġmessage Ġthat Ġexposes Ġhelper Ġfunctions Ġfor Ġchannel Ġand Ġuser Ġit 's Ġreceived Ġfrom Ċ Ġ*/ Ċ open Ġclass ĠUser Context < T : ĠTw itch Message >( ĊĠĠĠ Ġmessage : ĠT , ĊĠĠĠ Ġval Ġusername : ĠString ?, ĊĠĠĠ Ġchannel : ĠString Ċ ) Ġ: ĠChannel Context < T >( message , Ġchannel ) Ġ{ ĊĊĠĠĠ Ġ/** ĠSends Ġa Ġwh isper Ġmessage Ġto Ġuser Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . wh isper ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( username Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwh isper ( username , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġallow Ġyou Ġto Ġper manently Ġban Ġa Ġuser Ġfrom Ġchat Ġroom Ġin Ġthis Ġcontext Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . ban () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( username Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġban ( channel , Ġusername ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġcommand Ġwill Ġallow Ġyou Ġto Ġlift Ġa Ġpermanent Ġban Ġon Ġa Ġuser Ġfrom Ġchat Ġroom Ġin Ġcurrent Ġcontext . ĊĠĠĠĠ Ġ* ĠYou Ġcan Ġalso Ġuse Ġthis Ġcommand Ġto Ġend Ġa Ġban Ġearly ; Ġthis Ġalso Ġapplies Ġto Ġtimeouts ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . un ban () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( username Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun ban ( username ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġallows Ġyou Ġto Ġtemporarily Ġban Ġuser Ġin Ġcurrent Ġcontext Ġfrom Ġthe Ġchat Ġroom Ġfor Ġ 1 0 Ġminutes Ġby Ġdefault */ ĊĠĠĠ Ġfun ĠTw itch Scope . timeout ( seconds : ĠInt Ġ= Ġ 6 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( username Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimeout ( username , Ġseconds ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġallow Ġyou Ġto Ġpromote Ġa Ġuser Ġto Ġa Ġchannel Ġmod erator */ ĊĠĠĠ Ġfun ĠTw itch Scope . mod () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( username Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmod ( username ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġallow Ġyou Ġto Ġdem ote Ġan Ġexisting Ġmod erator Ġback Ġto Ġviewer Ġstatus Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . un mod () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( username Ġ!= Ġnull ) Ġun mod ( username ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġgrant ĠV IP Ġstatus Ġto Ġa Ġuser . Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . vip () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( username Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv ip ( username ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠThis Ġcommand Ġwill Ġre voke ĠV IP Ġstatus Ġfrom Ġa Ġuser Ġ*/ ĊĠĠĠ Ġfun ĠTw itch Scope . un vip () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( username Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun vip ( username ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ val ĠUser Context < Text Message >. is Subscriber Ġget () Ġ= Ġmessage . badges ?. containsKey (" subscriber ") Ġ== Ġtrue Ċ val ĠUser Context < Text Message >. displayName Ġget () Ġ= Ġmessage . displayName Ċ val ĠUser Context < Text Message >. is Mod Ġget () Ġ= Ġmessage . is Mod