Administrators coders-irc_Bot Posted October 17, 2022 Administrators Report Share Posted October 17, 2022 This is a forum request made by maria who wishes to have the latest comment checked via reddit.com. The script will then send the info to a channel with its title, short link and by whom. I thought I'd make this a snippet submission to benefit those who find it useful or usable. Usage: right-click on your channel or nick list to toggle "Reddit On" and "Reddit Off" to get started. Edit: I've updated the script to include the latest post as requested by maria previously. alias -l reddit { var %i = 1, %socks = reddit reddit2 while ($gettok(%socks,%i,32)) { var %v1 = $v1 if ($sock(%v1)) sockclose $v1 sockopen %v1 www.reddit.com 80 sockmark %v1 msg $1 inc %i } } alias -l trans { return $replace($1,<,<,>,>,",", ,$chr(160),&,&,&#39;,') } on *:sockclose:reddit*:{ if ($sock($sockname).name == reddit) { if ($hget(data2)) && ($hget(data3)) && ($hget(data4)) { $sock($sockname).mark $+($chr(2),Latest Comment:,$chr(2)) $& [ [ $remove($+($hget(data2,1).item,$chr(32),$hget(data2,1).data),r/) ] ] $sock($sockname).mark $+($chr(2),Latest Post:,$chr(2)) $& $+($hget(data3,1).item,$chr(32),$hget(data3,1).data) - $& $hget(data4,1).item by $hget(data5,1).item hfree -w data* } } else { if ($sock(reddit2)) sockclose $v1 sockopen reddit2 www.reddit.com 80 sockmark reddit2 msg $1 } } menu channel,nicklist { Reddit .ON { if (!%reddits) { set -e %reddits $$?"Which Reddit to Watch?" set -e %reddittime $$?"How often do you want the latest post checked $& and sent to the channel in seconds?" $+(.timer,#,$network) 0 %reddittime reddit # echo 2 # * Reddit Set for: $+($chr(2),%reddits) echo 2 # * Time Interval in Seconds: $+($chr(2),%reddittime) if (%true) unset $v1 } else echo 4 # * Reddit is Already Switched On! } .OFF { if (%reddits) { $+(.timer,#,$network) off echo 2 * Reddit Has Been Turned Off! unset %reddit* %true } else echo 4 # * Reddit is Already Switched Off! } } on *:sockopen:reddit*:{ if ($sockerr) { echo 4 $gettok($sock(reddit).mark,2,32) Error Connecting to $sock(reddit).addr sockclose reddit } if ($sock($sockname).name == reddit) { var %reddit = sockwrite -nt reddit %reddit GET $+(/r/,%reddits,/comments?limit=1) HTTP/1.0 %reddit Connection: close %reddit Host: $+($sock(reddit).addr,$str($crlf,2)) } else { var %reddit2 = sockwrite -nt reddit2 %reddit2 GET $+(/r/,%reddits,/new.json?sort=new) HTTP/1.0 %reddit2 Connection: close %reddit2 Host: $+($sock(reddit).addr,$str($crlf,2)) } } on *:sockread:reddit*:{ if ($sockerr) { echo 4 $gettok($sock(reddit).mark,2,32) Error Reading $sock(reddit).addr sockclose reddit } if ($sock($sockname).name == reddit) { sockread &reddit var %g = $regsubex($bvar(&reddit,1-).text,/\/r\/|&#\d+;/g,) if ($regex(%g,/<\/div><\/form><ul class="flat-list buttons">(.*)/)) { hadd -m data $+($sock(reddit).addr,/tb/,$gettok($iif($regex($regml(1),$& /\/comments\/(\S+)\//),$trans($regml(1))),1,47)) } if ($regex(%g,/class="title" rel="nofollow" >(.*)class="author/)) { hadd -m data2 $gettok($trans($regml(1)),1,60) - $& $!+($chr(3),12,$hget(data,1).item,$chr(3)) by $+($chr(3),05,$& $iif($regex($regml(1),/\/user\/(\S+)"/),$regml(1))) } } else { sockread &reddit2 var %g2 = $bvar(&reddit2,1-).text if ($regex(%g2,/"title"\: "(.*)"/)) { hadd -m data3 $gettok($trans($regml(1)),1,34) } if ($regex(%g2,/"id"\: "(.*)"/)) { hadd -m data4 $+($chr(3),12,$gettok($+(http://redd.it/,$& $trans($regml(1))),1,34),$chr(3)) sockclose $sockname } if ($regex(%g2,/"author"\: "(.*)"/)) { hadd -m data5 $+($chr(3),05,$gettok($regml(1),1,34)) } } } on me:*:join:#:{ if (%true) notice $me Reddit has been toggled off. Right-click on $& the nicklist or channel to toggle it on. | unset %true } on *:disconnect: if (%reddits) $+(.timer,#,$network) off | set -e %true 1 on me:*:part:#: if (%reddits) $+(.timer,#,$network) off | set -e %true 1 on *:kick:#:{ if ($knick == $me) && (%reddits) $+(.timer,#,$network) off set -e %true 1 } on *:quit:{ if ($nick == $me) && (%reddits) { var %c = 1 while ($comchan($me,%c)) { $+(.timer,$v1,$network) off set -e %true 1 inc %c } } } Quote Link to comment Share on other sites More sharing options...