Advertisement
Ford

Twitter Tweet bot/Updated

Dec 24th, 2012
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 10.66 KB | None | 0 0
  1. ;twitter TweetBot by Ford_Lawnmower irc.GeekShed.net #Script-Help
  2. menu Channel,Status {
  3.   .$iif($group(#TweetBot) == On,$style(1)) TweetBot Trigger
  4.   ..$iif($group(#TweetBot) == On,$style(2)) On: .enable #TweetBot
  5.   ..$iif($group(#TweetBot) == Off,$style(2)) Off: .disable #TweetBot
  6. }
  7. On $*:Text:/^[\.]AddAuth/Si:?: {
  8.   if (!$sslready) echo -gst Error: OpenSSL is not installed. You must install OpenSSL to use this script. $&
  9.     http://www.mirc.com/download/openssl/openssl-0.9.8r-setup.exe
  10.   elseif (!$timer($+(Tweetbot,$network,$nick))) {
  11.     .timer $+ $+(Tweetbot,$network,$nick) 1 5 noop
  12.     if (!$2) || ($strip($2) == help) AuthError .msg $nick $nick
  13.     else {
  14.       var %s $strip($2), %UserInfo $iif($gettok(%s,2,58),%s,$decode(%s,m))
  15.       twitter_get_access_token .msg $nick XxXxXxX XxXxXxX $replace(%UserInfo,$chr(58),$chr(32)) $address($nick,1)
  16.     }
  17.   }
  18. }
  19. #TweetBot on
  20. On $*:Text:/^(\+|-|!|@)Tweet.*/Si:#,?: {
  21.   var %action $regml(1)
  22.   if (%action isin +-) && ($regex($nick($chan,$nick).pnick,/(!|~|&|@)/)) {
  23.     if (%action == +) {
  24.       if ($istok(%TweetBotChanList,$+($network,$chan),32)) { .msg $chan $nick $chan is already running the TweetBot script }
  25.       else {
  26.         .enable #TweetBot
  27.         Set %TweetBotChanList $addtok(%TweetBotChanList,$+($network,$chan),32)
  28.         .msg $chan $nick has activated the TweetBot script for $chan .
  29.       }
  30.     }
  31.     else {
  32.       if (!$istok(%TweetBotChanList,$+($network,$chan),32)) { .msg $chan $nick $chan is not running the TweetBot script }
  33.       else {
  34.         Set %TweetBotChanList $remtok(%TweetBotChanList,$+($network,$chan),1,32)
  35.         .msg $chan $nick has deactivated the TweetBot script for $chan .
  36.       }
  37.     }
  38.   }
  39.   elseif (!#) || ($istok(%TweetBotChanList,$+($network,$chan),32)) {
  40.     if (!$timer($+(TweetBot,$network,$nick))) {
  41.       .timer $+ $+(TweetBot,$network,$nick) 1 6 noop
  42.       if (!$2) AuthError .notice $nick $nick
  43.       elseif ($hget(TwitterData,$address($nick,1))) tweet .notice $nick $address($nick,1) $strip($2-)
  44.       else AuthError .notice $nick $nick
  45.     }
  46.   }
  47. }
  48. #TweetBot end
  49. ;Syntax twitter_statuses_update echo -a consumer_key consumer_secret oauth_token oauth_token_secret status update here
  50. ;Note that echo -a can be changed to msg $chan or notice $nick ( must be two words )
  51. alias -l twitter_statuses_update {
  52.   var %ots $ctime, %sockname $+(twitter_statuses_update,$network,$ticks,$r(1,10000)), %once $md5(%sockname)
  53.   var %os $signature(post,http://api.twitter.com/1/statuses/update.xml,$3,$4,$5,$6,%once,%ots,$+(status=,$tuenc($7-)))
  54.   sockopen %sockname api.twitter.com 80
  55.   sockmark %sockname $1-2 /1/statuses/update.xml $space2comma($+(oauth_nonce=,$qt(%once)) $osmqt $+(oauth_timestamp=,$qt(%ots)) $+(oauth_consumer_key=,$qt($tuenc($consumer_key))) $&
  56.     $+(oauth_token=,$qt($tuenc($5))) $+(oauth_signature=,$qt($suenc(%os))) $overqt) $+(status=,$tuenc($7-))
  57. }
  58. ;Syntax twitter_get_access_token echo -a consumerkey consumersecret username password UserAddress
  59. alias -l twitter_get_access_token {
  60.   var %ots $ctime, %sockname $+(twitter_statuses_update,$network,$ticks,$r(1,10000)), %once $md5(%sockname)
  61.   var %os $signature(post,https://api.twitter.com/oauth/access_token,$3,$4,0,0,%once,%ots,$+(x_auth_mode=client_auth&x_auth_password=,$6,&x_auth_username=,$5))
  62.   sockopen -e %sockname api.twitter.com 443
  63.   sockmark %sockname $1-2 /oauth/access_token $space2comma($+(oauth_nonce=,$qt(%once)) $osmqt $+(oauth_timestamp=,$qt(%ots)) $&
  64.     $+(oauth_consumer_key=,$qt($tuenc($consumer_key))) $+(oauth_signature=,$qt($suenc(%os))) oauth_version="1.0") $&
  65.     $+(x_auth_username=,$tuenc($5),&x_auth_password=,$tuenc($6),&x_auth_mode=client_auth) $7
  66. }
  67. on *:sockopen:twitter_statuses_update*: {
  68.   if ($sockerr) echo -st Socket Error $nopath($script)
  69.   else {
  70.     tokenize 32 $sock($sockname).mark
  71.     sockwrite -n $sockname POST $3 HTTP/1.1
  72.     sockwrite -n $sockname Host: $sock($sockname).addr
  73.     sockwrite -n $sockname User-Agent: IRCTweet
  74.     sockwrite -n $sockname Authorization: $+(OAuth realm=,$qt($3),$chr(44),$4)
  75.     sockwrite -n $sockname Content-Type: application/x-www-form-urlencoded
  76.     if ($5) {
  77.       sockwrite -n $sockname Content-Length: $len($5)
  78.       sockwrite -n $sockname
  79.       sockwrite -n $sockname $5
  80.     }
  81.     sockwrite -n $sockname
  82.   }
  83. }
  84. on *:sockread:twitter_statuses_update*: {
  85.   if ($sockerr) { $gettok($sock($sockname).mark,1-2,32) Unknown Socket error $nopath($script) }
  86.   else {
  87.     sockread -f &twitter
  88.     var %twitter_statuses_updatevar $bvar(&twitter,1-).text
  89.     if (HTTP/1.1 401 isin %twitter_statuses_updatevar) {
  90.       $gettok($sock($sockname).mark,1-2,32) Password/Username Error --> %twitter_statuses_updatevar
  91.       AuthError $gettok($sock($sockname).mark,1-2,32)
  92.       sockclose $sockname | return
  93.     }
  94.     elseif (HTTP/1.1 502 isin %twitter_statuses_updatevar) || (HTTP/1.1 503 isin %twitter_statuses_updatevar) {
  95.       $gettok($sock($sockname).mark,1-2,32) Server Busy Error --> %twitter_statuses_updatevar
  96.       sockclose $sockname | return
  97.     }
  98.     elseif (HTTP/1.1 500 isin %twitter_statuses_updatevar) {
  99.       $gettok($sock($sockname).mark,1-2,32) Server Side Error --> %twitter_statuses_updatevar
  100.       sockclose $sockname | return      
  101.     }
  102.     elseif (HTTP/1.1 403 isin %twitter_statuses_updatevar) {
  103.       $gettok($sock($sockname).mark,1-2,32) Connection Actively Refused --> %twitter_statuses_updatevar
  104.       sockclose $sockname | return      
  105.     }
  106.     elseif (HTTP/1.1 400 isin %twitter_statuses_updatevar) {
  107.       $gettok($sock($sockname).mark,1-2,32) Unknown Error --> %twitter_statuses_updatevar
  108.       sockclose $sockname | return
  109.     }
  110.     elseif (HTTP/1.1 200 isin %twitter_statuses_updatevar) {
  111.       $gettok($sock($sockname).mark,1-2,32) Updating Status Please Wait.........
  112.     }
  113.     elseif (</status> isin %twitter_statuses_updatevar) {
  114.       .timer 1 3 $gettok($sock($sockname).mark,1-2,32) Your Status has been updated :)
  115.       sockclose $sockname | return
  116.     }
  117.     elseif ($regex($sockname,%twitter_statuses_updatevar,/oauth_token=(.*)&oauth_token_secret=(.*)&user_id=(.*)&screen_name=([^&]*)/)) {
  118.       tokenize 32 $sock($sockname).mark
  119.       var %item $iif($6,$6,$regml($sockname,4)), %key $r(1,10)
  120.       hadd -m TwitterData %item $regml($sockname,4) $pack(%key,$encode($regml($sockname,1),m)) $pack(%key,$encode($regml($sockname,2),m)) %key
  121.       hsave TwitterData TData.hsh
  122.       $1-2 $regml($sockname,4) was added under record %item
  123.       if ($2 !ischan) && ($window($2)) window -c $v1
  124.       sockclose $sockname | return
  125.     }
  126.   }
  127. }
  128. ;Syntax tweet echo -a address tweet
  129. alias -l tweet {
  130.   if ($hget(twitterdata,$3)) {
  131.     var %Output $1-2, %tweet $left($4-,140)
  132.     tokenize 32 $v1
  133.     twitter_statuses_update %Output XxXxXxX XxXxXxX $decode($pack($4,$2),m) $decode($pack($4,$3),m) %tweet
  134.   }
  135.   else $1-2 Tweet error. Unknown User.
  136. }
  137. ;Syntax $signature(POST/GET,URL,consumer_key,consumer_secret,oauth_token,oauth_token_secret,oauth_nonce,oauth_timestamp,PostData)
  138. alias -l signature {
  139.   tokenize 32 $1-
  140.   var %method $+($upper($1),&), %url $+($tuenc($2),&), %ck $tuenc&($+(oauth_consumer_key=,$3)), %ot $iif($5,$tuenc&($+(oauth_token=,$5)))
  141.   var %once $tuenc&($+(oauth_nonce=,$7)), %ots $tuenc&($+(oauth_timestamp=,$8)), %post $iif($9-,$tuenc($+(&,$9-)))
  142.   return $hmac-sha1($+($4,&,$iif($6,$6)),$+(%method,%url,%ck,%once,$tuenc&($osm),%ots,%ot,$tuenc($over),%post),$+($ticks,$r(1,1000)))
  143. }
  144. alias -l AuthError {
  145.   $1-2 You must supply your twitter information to me in private. Syntax: .AddAuth username:password
  146.   $1-2 You may also use the more secure method if you are using mIRC by typing in the following in MY Query window.
  147.   $1-2 //say .AddAuth $!encode(username:password,m)
  148.   if ($window($3)) window -c $v1
  149. }
  150. alias -l osm return oauth_signature_method=HMAC-SHA1
  151. alias -l osmqt return oauth_signature_method="HMAC-SHA1"
  152. alias -l over return oauth_version=1.0
  153. alias -l overqt return oauth_version="1.0"
  154. alias -l tuenc return $regsubex($replace($1-,+,$chr(32)),/([^a-z0-9\._-])/ig,% $+ $base($asc(\t),10,16,2))
  155. alias -l tuenc& return $tuenc($+($1,&))
  156. alias -l suenc return $regsubex($1-,/([^a-z0-9\._-])/ig,% $+ $base($asc(\t),10,16,2))
  157. alias -l space2comma return $replace($1-,$chr(32),$chr(44))
  158. alias -l consumer_key return $decode($pack(3,gF7{f[MrbFoLRik@WhkLZV2wP3F>),m)
  159. alias -l pack {
  160.   var %up $1
  161.   return $regsubex($2-,/(.)/g,$chr($xor(%up,$asc(\t))))
  162. }
  163. ;Syntax hmac-sha1 key message or $hmac-sha1(key,message,filename)
  164. alias -l hmac-sha1 {
  165.   if (!$file($mircdirhmacsha1/signature.exe)) {
  166.     echo -gst *Error* Missing signature application! Attempting to download....
  167.     GetsignatureApp
  168.   }
  169.   else {
  170.     var %file $qt($+($mircdirhmacsha1/,$3))
  171.     .remove %file
  172.     run -np $mircdirhmacsha1/signature.exe $1-
  173.     var %count 1
  174.     :check
  175.     if ($file(%file).size != 28 && %count < 150000) {
  176.       inc %count
  177.       goto check
  178.     }
  179.     else {
  180.       var %return $read(%file)
  181.       .remove %file
  182.       $iif($isid,return,echo -a) %return
  183.     }
  184.   }
  185. }
  186. On *:start: {
  187.   if (!$isfile($qt($mircdirhmacsha1/signature.exe))) GetsignatureApp
  188.   if (!$sslready) echo -gst Error: OpenSSL is not installed. You must install OpenSSL to use TweetBot. $&
  189.     http://www.mirc.com/download/openssl/openssl-0.9.8r-setup.exe
  190.   hmake TwitterData 5
  191.   if ($exists(TData.hsh)) hload TwitterData TData.hsh
  192. }
  193. On *:unload: {
  194.   if ($hget(TwitterData)) hfree $v1
  195.   if ($exists(TData.hsh)) .remove TData.hsh
  196.   if ($exists($mircdirhmacsha1\signature.exe)) .remove $mircdirhmacsha1\signature.exe
  197.   if ($isdir($mircdirhmacsha1)) .rmdir $mircdirhmacsha1
  198. }
  199. alias -l GetsignatureApp GetApp fordlawnmower.googlecode.com /files/signature $nospace($mircdirhmacsha1\) signature.exe
  200. alias -l GetApp {
  201.   echo -gat Downloading App. Please wait........
  202.   var %dir $nospace($3)
  203.   if ($isfile($qt($+(%dir,$4)))) { .remove $qt($+(%dir,$4)) }
  204.   var %sockname $+(Get.App,$ticks,$r(1,$ticks))
  205.   if (!$isdir($qt(%dir))) { mkdir $qt(%dir) }
  206.   sockopen %sockname $1 80
  207.   sockmark %sockname $1-
  208. }
  209. On *:sockopen:Get.App*:{
  210.   sockwrite -nt $sockname GET $gettok($sock($sockname).mark,2,32) HTTP/1.0
  211.   sockwrite -n $sockname Host: $+($gettok($sock($sockname).mark,1,32),$str($crlf,2))
  212. }
  213. On *:sockread:Get.App*:{
  214.   if (!$gettok($sock($sockname).mark,5,32)) {
  215.     var %GetApp | sockread %GetApp
  216.     if (!%GetApp) { sockmark $sockname $sock($sockname).mark 1 }
  217.   }
  218.   else {
  219.     sockread &GetApp
  220.     bwrite $qt($+($nospace($gettok($sock($sockname).mark,3,32)),$gettok($sock($sockname).mark,4,32))) -1 -1 &GetApp
  221.   }
  222. }
  223. On *:sockclose:Get.App*: {
  224.   if (!$sockerr) {
  225.     .timer 1 10 echo -gat Download Complete!
  226.   }
  227. }
  228. alias -l nospace {
  229.   if ($chr(7) isin $1-) return $replace($1-,$chr(7),$chr(32))
  230.   else return $replace($1-,$chr(32),$chr(7))
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement