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