Delivers quick info about a subject using either @wiki TOPIC or !wiki TOPIC (@commands are public to the channel and !commands are noticed to the user)
Works with !w and !wikipedia
This script will automatically notify you of script updates when you start mIRC
Copy entire code and paste into remote section of a new script (Hit alt+r, File New)
Sample output: @wiki mIRC
mIRC is an Internet Relay Chat (IRC) client for Windows, created in 1995 and developed by Khaled Mardam-Bey. Although it is a fully functional chat utility, its... https://en.wikipedia.org/wiki/MIRC
Posted May 07, 2016
I can be contacted via a comment below
I can be found at irc.rizon.net:6667 name nick1
--Let me know when its broken//what you want changed.
--Feedback greatly appreciated
--If you don't like it lick it.
;Wikipedia Script (Snippet Search) v1.0
;Made by nick1
;View online and report bugs at http://hawkee.com/snippet/17017/
;Last edit May 7, 2016
;2DO -- You tell me!
alias -l wikiVersion { return v1.0 }
on $*:text:/^[!@]w(iki|ikipedia)(\s|$)/Si:*: {
;$iif($istok(%youtubefetch,$chan,44),halt,noop)
;$iif($istok(%nolinks,$nick,44),halt,noop)
if ($($+(%,botflood.,$nick),2)) {
if ($($+(%,botflood.,$nick),2) >= 50) {
ignore -u60 $address($nick,2)
msg $chan $+($nick,$chr(44)) You have been put on ignore for 60secs for abusing the bot.
halt
}
elseif ($($+(%,botflood.,$nick),2) >= 40) {
msg $chan $+($nick,$chr(44)) Please do not flood the bot.
inc -z $+(%,botflood.,$nick) 20
halt
}
else {
inc -z $+(%,botflood.,$nick) 10
}
}
else { inc -z $+(%,botflood.,$nick) 10 }
var %ticks $ticks
set $+(%,wiki.,%ticks,.topic) $replace($strip($2-),$chr(32),_)
if ($chan) { set $+(%,wiki.,%ticks,.msgtype) $iif($left($strip($1),1) == @,msg $chan,notice $nick) }
else { set $+(%,wiki.,%ticks,.msgtype) msg $nick }
if ($($+(%,wiki.,%ticks,.topic),2) != $null) {
sockopen -e $+(wiki.,%ticks) en.wikipedia.org 443
}
else {
$($+(%,wiki.,%ticks,.msgtype),2) Please specify a topic to search wikipedia for.
.timerWikiVarDelete 1 1 unset $+(%,wiki.,%ticks,.*)
}
}
on *:input:*:{
if (($left($strip($1),1) == @) || ($left($strip($1),1) == !)) {
if (($remove($1,$left($strip($1),1)) == wiki) || ($remove($1,$left($strip($1),1)) == wikipedia)) {
if ($2) {
var %ticks $ticks
set $+(%,wiki.,%ticks,.topic) $replace($strip($2-),$chr(32),_)
set $+(%,wiki.,%ticks,.msgtype) $iif($chan,$iif($left($1,1) == @,msg $active,echo -a),msg $active)
if ($($+(%,wiki.,%ticks,.topic),2) != $null) {
sockopen -e $+(wiki.,%ticks) en.wikipedia.org 443
}
}
elseif ($2 == $null) {
echo -a 4Incorrect Syntax - Use10 $1 <search text>
}
}
}
}
alias wiki {
var %ticks $ticks
set $+(%,wiki.,%ticks,.topic) $replace($strip($1-),$chr(32),_)
set $+(%,wiki.,%ticks,.msgtype) echo -a
if ($($+(%,wiki.,%ticks,.topic),2) != $null) {
sockopen -e $+(wiki.,%ticks) en.wikipedia.org 443
}
else {
$($+(%,wiki.,%ticks,.msgtype),2) Please specify a topic to search wikipedia for.
.timerWikiVarDelete 1 1 unset $+(%,wiki.,%ticks,.*)
}
}
on *:sockopen:wiki*: {
;$iif(!$window(@Wiki- $+ $network),window -evn @Wiki- $+ $network,noop)
var %ticks $remove($sockname,wiki.)
var %x sockwrite -nt $sockname
%x GET $+(/w/api.php?format=xml&action=query&generator=search&gsrnamespace=0&gsrsearch=,$($+(%,wiki.,%ticks,.topic),2),&gsrlimit=1&prop=extracts&exintro&explaintext&exsentences=2&exlimit=max) HTTP/1.1
%x Host: en.wikipedia.org
%x $crlf
}
alias nohtml { return $regsubex($$1-,/^[^<]*>|<[^>]*>|<[^>]*$/g,) }
on *:SOCKREAD:wiki*: {
if ($sockerr) { echo -a SOCKET ERROR: $sockerr | halt }
else {
var %ticks $remove($sockname,wiki.)
sockread &t
bwrite temp $+ %ticks -1 -1 &t
bread temp $+ %ticks 0 $file(temp $+ %ticks).size &binvar2
var %pos1 $bfind(&binvar2,1,<extract xml:space="preserve">)
var %pos2 $bfind(&binvar2,%pos1,</extract>)
if (%pos1 != 0) && (%pos2 != 0) {
var %out $bvar(&binvar2,$+($calc(%pos1 +30),-,$calc(%pos2 - 1))).text
var %out $replace(%out,",$chr(34))
if ($numtok(%out,32) < 30) {
var %out $gettok(%out,1-,32)
}
else {
var %out $gettok(%out,1-27,32) $+ ...
}
var %pos1 $bfind(&binvar2,1,title=")
var %pos2 $bfind(&binvar2,%pos1," index)
var %link $bvar(&binvar2,$+(%pos1,-,%pos2)).text
var %link $replace($noqt($remove(%link,title=)),$chr(32),_)
var %link https://en.wikipedia.org/wiki/ $+ %link
$($+(%,wiki.,%ticks,.msgtype),2) $+(10,%out,12,$chr(32) $+ %link)
wikicleanup %ticks
.timerUnsetWiki 1 1 unset $+(%,wiki.,%ticks,*)
}
elseif (*<?xml version="1.0"?><api batchcomplete=""><limits extracts="20" /></api>* iswm $bvar(&binvar2,1-).text) {
;echo @Wiki- $+ $network 4NO FOUND
$($+(%,wiki.,%ticks,.msgtype),2) 10No results found. View search page:12 https://en.wikipedia.org/wiki/Special:Search?search= $+ $($+(%,wiki.,%ticks,.topic),2)
wikicleanup %ticks
.timerUnsetWiki 1 1 unset $+(%,wiki.,%ticks,*)
halt
}
}
}
alias wikicleanup {
;echo @Wiki- $+ $network Cleaning up
.remove temp $+ $1
bunset &t
bunset &binvar2
sockclose wiki. $+ $1
}
on *:start: .timerWUpdate 1 60 WUpdate
alias WUpdate {
;echo -atc info 12[04Wiki Script12] Checking for updates...
sockopen wUpdate hawkee.com 80
}
on *:sockopen:wupdate: {
sockwrite -nt $sockname GET /snippet/17017/ HTTP/1.1
sockwrite -nt $sockname Host: hawkee.com
sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:WUpdate: {
if ($sockerr) { echo -a SOCKET ERROR: $sockerr $sockname $asctime | halt }
sockread %sockreader
if (*<title>* iswm %sockreader) {
tokenize 32 %sockreader
if ($WikiVersion != $5) {
echo -atc info 12[04Wiki Script12] Current: $WikiVersion Latest: $5 Status: Please update at http://hawkee.com/snippet/17017/
}
unset %sockreader
sockclose $sockname
}
}
@illhawkthat I LOVE IT! Thank you so much. You're the best! It's certainly a brilliant script. I just wish it had the same option that the YouTube script has, which is choosing rooms where the script would not run on. And entering certain nicknames who cannot use the script. But I love the script, and appreciate your effort... Forgive me for being greedy :P
Glad you got it working for mods and subscribers (http://hawkee.com/snippet/8577/#c130081) for blacklist words, you can do something like.
alias badwords { return hitler,shit,fuck,bad words,example }
and insert before line 32
if ($gettok($badwords,$($+(%,wiki.,%ticks,.topic),2),44) != $null) { $($+(%,wiki.,%ticks,.msgtype),2) Sorry that's a bad word.
wikicleanup %ticks
.timerUnsetWiki 1 1 unset $+(%,wiki.,%ticks,*)
halt
}
Hi @illhawkthat , can you please do a !google script? Thanks :) and this script is good.
@Clark2016 try http://hawkee.com/snippet/7465/ or http://hawkee.com/snippet/14/ I think people have made a bunch of google scripts on this website before. Best of luck!
Hi @Rebel9 thanks for the comment - can you provide some more information on what context this script has that would allow it to be compromised? Thanks!