Pandoras Talking Bot

By FordLawnmower on Jun 15, 2009

This is a pandoras bot script similar to the tcl version, with a few more selections/controls.

To turn on the bot, right click the channel window you want it to talk in, Click "Select bot for #Chan", select one of the bots from the list, click ON and click accept.

Once the script is turned on the bot is activated by calling it's NickName(Irc Name).
Saying the bots nickname will place the bots focus on you. It will always be talking to the last person who said it's name.

To make the bot stop talking, any Op or the person who said the bots name last, can just type shutup. All one word (shutup)!
Also. Anyone can type the bots name followed by shutup and it will turn off.

To deactivate the bot just right click the channel window and select Off.

You can use different bots in different channels.
I scripted this for multi-channel/multi-network use, so you have separate controls for every channel.

Added a menu selection to enter your bot from the botid
Just Right the channel, select "enter bot from botid", enter the bots name and the bots id and it will be assigned to that channel.
Added focus change from nicklist
Now You can right click on a nickname and place the bots focus on that person.
You must first activate a bot for the channel.
Added a PM function to change the focus of the bot
This will allow you to change the bots focus through PM.
The syntax is .focus #channel nickname
Error checking is as follows;* Channel and Nickname must be given in that order.

  • The channel must exist and the nickname must be on the channel.
  • A bot must already be activated for the given channel.
  • The person requesting the focus change must be an Op on the selected channel.
    Full syntax will be /msg botnickname .focus #channelname nickname
;Pandora's talking Bot Script by Ford_Lawnmower -- #Script-Help
On *:Text:*:#: {
  if ($hget(Pandora,$+($network,$chan))) {
    var %text $regsubex($strip($1-),/(^[!\d]*\d$)/i,$null)
    if ($me isin %text) { hadd Pandora $+($network,$chan) $puttok($hget(Pandora,$+($network,$chan)),$wildsite,6,32) }
    if (shutup isin %text) && ($nick isop $chan || $gettok($hget(Pandora,$+($network,$chan)),6,32) == $wildsite) {
      .msg $chan I will not be silenced forever :P
      hadd Pandora $+($network,$chan) $puttok($hget(Pandora,$+($network,$chan)),0,6,32)
    if ($gettok($hget(Pandora,$+($network,$chan)),6,32) == $wildsite) {
      var %sockname $+(pandora,$nick,$ticks,$r(1,1000))
      sockopen %sockname $gettok($hget(Pandora,$+($network,$chan)),1,32) 80
      sockmark %sockname $+($chan,,04<,07,$nick,04>) $fixurl($wildsite) $fixurl($replace(%text,$me,$gettok($hget(Pandora,$+($network,$chan)),5,32))) $hget(Pandora,$+($network,$chan))
On *:Action:$(* $+ $me $+ *):#: {
  if ($nick !isreg $chan) {
    var %sockname $+(pandora,$nick,$ticks,$r(1,1000))
    sockopen %sockname $gettok($hget(Pandora,$+($network,$chan)),1,32) 80
    sockmark %sockname $+($chan,,04<,07,$nick,04>) $fixurl($wildsite) $fixurl($replace($strip($1-),$me,$gettok($hget(Pandora,$+($network,$chan)),5,32))) $hget(Pandora,$+($network,$chan))
On *:Sockopen:Pandora*: {
  if (!$sockerr) {
    tokenize 32 $sock($sockname).mark
    var %post $+(&custid=,$2,&input=,$3)
    .sockwrite -n $sockname POST $5 HTTP/1.1
    .sockwrite -n $sockname User-Agent: Opera 9.6
    .sockwrite -n $sockname Host: $4
    .sockwrite -n $sockname Content-Type: application/x-www-form-urlencoded
    .sockwrite -n $sockname Content-Length: $calc($len(%post) + 1)
    .sockwrite -n $sockname $crlf %post
On *:Sockread:Pandora*: {
  if ($sockerr) { echo -at >sockerror Pandora< }
  else {
    sockread -f &pandora | var %pandora $bvar(&pandora,1-).text
    if ($between(%pandora,$gettok($sock($sockname).mark,6,32),$gettok($sock($sockname).mark,7,32),1)) {
      var %ifmatch $regsubex($replace($replace($ifmatch,&quot;,",&lt;,<,&gt;,>),<em>,$chr(2),</em>,$chr(2),robot,woman),/(<[^<]*>)/g,$null)
      if (%ifmatch != I will pass it along to my botmaster. && Your IP address !isin %ifmatch) {
        .timer $+ $+(PD,$network,$gettok($sock($sockname).mark,1,32)) 1 4 .msg $replace($gettok($sock($sockname).mark,1,32),,$chr(32)) $httpstrip($remove(%ifmatch,www dot pandorabots dot com pandora talk botid,$&
          I will pass it along to my botmaster.,demo vhost pandorabots dot com pandora talk botid))
        sockclose $sockname
On *:Sockwrite:Pandora*: {
  if ($sockerr) {
    echo -at Pandoras Site is Currently overloaded - $sockerr
On *:Start: {
  hmake Pandora
  if ($exists(Pandora.hsh)) { hload Pandora Pandora.hsh }
On *:Exit: {
  if ($hget(Pandora)) { 
    hsave Pandora Pandora.hsh
    hfree Pandora 
menu nicklist {
  $iif(!$hget(Pandora,$+($network,$chan)),$style(2)) Pandora
  .Set the focus of $gettok($hget(Pandora,$+($network,$chan)),5,32) on $$1: {
    if (!$address($$1,2)) { who $$1 }
    hadd Pandora $+($network,$chan) $puttok($hget(Pandora,$+($network,$chan)),$address($$1,2),6,32)
    echo -a Focus switched to $$1
;Testing focus on join
on *:join:#: {
  if ($hget(Pandora,$+($network,$chan)) && $nick != $me) {
    hadd Pandora $+($network,$chan) $puttok($hget(Pandora,$+($network,$chan)),$address($nick,2),6,32)
menu channel {
  $iif($hget(Pandora,$+($network,$chan)),$style(1)) Pandora
  .$iif($hget(Pandora,$+($network,$chan)),$style(1)) Select Bot for $chan:DialogOpen $+(botselect,$network,$chan) botselect
  .$iif(!$hget(Pandora,$+($network,$chan)),$style(2)) Bot Off for $chan:hdel Pandora $+($network,$chan) | echo -at Pandora is deactivated for $chan
  .Use bot from botid: { 
    var %botname $$?"Enter Your Bots Name"
    if (%botname) { var %botid $$?"Enter Your Bots ID" }
    if (%botname) && (%botid) {
      hadd -m Pandora $+($network,$chan) $+(/pandora/talk-xml?botid=,%botid) <that> </that> $replace(%botname,$chr(32),_) 0
      echo -a The Bot %botname %botid has been started on $chan
dialog -l BotSelect {
  title "Pandoras Bot Selection"
  size -1 -1 96 108
  option dbu
  text "Network:", 1, 7 8 25 8, right
  text "Channel:", 2, 7 18 25 8, right
  text "", 3, 35 8 57 8
  text "", 4, 35 18 57 8
  combo 5, 8 30 82 50, sort size vsbar
  radio "On", 6, 24 81 18 10, left
  radio "Off", 7, 48 81 18 10
  button "Close", 8, 61 92 29 12, cancel
  button "Accept", 9, 8 92 29 12
On *:dialog:BotSelect*:Sclick:9: {
  if ($did($dname,6).state) {
    hadd -m Pandora $+($did($dname,3).text,$did($dname,4).text) $botinfo($did($dname,5).seltext)
    echo -at $did($dname,5).seltext has been activated for $did($dname,4).text
    if ($dialog($dname)) { dialog -x $dname }
  else { echo -at Bot is turned off for $+($did($dname,4).text,!) If you want to activate pandora, click On. }
On *:dialog:BotSelect*:init:*: {
  did -a $dname 3 $network
  did -a $dname 4 $active
  didtok $dname 5 14 LilithObaid(Portuguese)Sara(Spainish)Mathilde(French)Dr DuckHector van DaemonGabi(German-Adault)Eliza(German)Grandma ElaineIncognita
  didtok $dname 5 14 Smoshinator(Rude)Spambot(Rude)AFRObot(Rude)DawnstarWraithRoninChabba(German)LaurieGodAliceFake KirkZoeFake SpockMike
  did -c $dname $iif($hget(Pandora,$+($network,$active)),6,7) 
  did -fc $dname 5 $iif($gettok($hget(Pandora,$+($network,$active)),7,32),$didwm($dname,5,$replace($gettok($hget(Pandora,$+($network,$active)),7,32),_,$chr(32))),2) 
On *:Text:.focus *:?: {
  if ($2 !ischan) || ($3 !ison $2) { .msg $nick Proper syntax is .focus #channel nickname. The channel must exist & the nickname must be on the channel! | return }
  if (!$hget(Pandora,$+($network,$2))) { .msg $nick No bot is turned on for that channel! Please add a bot before changing focus! | return }
  if ($nick !isop $2) { .msg $nick You must be an operator on $2 to change the focus of the bot! | return }
  if ($3 == $me) { .msg $nick You cannot place the focus on me!! I am the bot silly :P | return }
  focus $network $2-
  .msg $nick Focus for $network channel $2 has been changed to $3 at the address $address($3,2)
alias focus {
  if ($hget(Pandora,$+($1,$2))) {
    hadd Pandora $+($1,$2) $puttok($hget(Pandora,$+($1,$2)),$address($3,2),6,32)
alias -l DialogOpen { dialog $iif($dialog($1),-v,-m) $1- }
alias -l fixurl return $regsubex($1-,/([^a-z0-9])/ig,% $+ $base($asc(\t),10,16,2))
alias -l httpstrip {
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove($replace($remove(%x,&nbsp;),&lt;,<,&gt;,>),<br>)
  return %x
;alias by Gummo
alias -l between { 
  noop $regex($1,/\Q $+ $2 $+ \E(.*?)\Q $+ $3 $+ \E/gi)
  return $regml($4) 
alias -l botinfo {
  if ($1- == Alice) { var %return /pandora/talk-xml?botid=b69b8d517e345aba <that> </that> Alice 0 }
  elseif ($1- == God) { var %return /pandora/talk-xml?botid=b21f0d757e36f385 <that> </that> God 0 }
  elseif ($1- == Laurie) { var %return /pandora/talk-xml?botid=b800da72be34d5d9 <that> </that> Laurie 0 }
  elseif ($1- == Chabba(German)) { var %return /pandora/talk-xml?botid=9e129a956e3548fd <that> </that> Chabba 0 }
  elseif ($1- == Ronin) { var %return /pandora/talk-xml?botid=d3012a1f2e377a96 <that> </that> Ronin 0 }
  elseif ($1- == Wraith) { var %return /pandora/talk-xml?botid=e2ee8c6c9e377a87 <that> </that> Wraith 0 }
  elseif ($1- == Dawnstar) { var %return /pandora/talk-xml?botid=c1776ae8ce354d1f <that> </that> Dawnstar 0 }
  elseif ($1- == AFRObot(Rude)) { var %return /pandora/talk-xml?botid=9d3dc63c7e34956d <that> </that> AFRObot 0 }
  elseif ($1- == Spambot(Rude)) { var %return /pandora/talk-xml?botid=d3b8db41ee36d42d <that> </that> Spambot 0 }
  elseif ($1- == Smoshinator(Rude)) { var %return /pandora/talk-xml?botid=b4db4c279e3420eb <that> </that> Smoshinator 0 }
  elseif ($1- == Incognita) { var %return /pandora/talk-xml?botid=f7634aec7e3652ed <that> </that> Incognita 0 }
  elseif ($1- == Grandma Elaine) { var %return /pandora/talk-xml?botid=8f02c14a0e34bbe4 <that> </that> Grandma_Elaine 0 }
  elseif ($1- == Eliza(German)) { var %return /pandora/talk-xml?botid=e4fc10b06e3632ef <that> </that> Eliza 0 }
  elseif ($1- == Gabi(German-Adault)) { var %return /pandora/talk-xml?botid=bd81f97c0e354f35 <that> </that> Gabi 0 }
  elseif ($1- == Hector van Daemon) { var %return /pandora/talk-xml?botid=be43a1422e36ad7b <that> </that> Hector_van_Daemon 0 }
  elseif ($1- == Dr Duck) { var %return /pandora/talk-xml?botid=f3b9b50cbe344c44 <that> </that> Dr_Duck 0 }
  elseif ($1- == Mathilde(French)) { var %return /pandora/talk-xml?botid=eff729829e36e89c <that> </that> Mathilde 0 }
  elseif ($1- == Sara(Spainish)) { var %return /pandora/talk-xml?botid=e71c0d43fe35093a <that> </that> Sara 0 }
  elseif ($1- == Obaid(Portuguese)) { var %return /pandora/talk-xml?botid=a29a250aee36f3b3 <that> </that> Obaid 0 }
  elseif ($1- == Lilith) { var %return /pandora/talk-xml?botid=b9b96b247e34f4f2 <that> </that> Lilith 0 }
  elseif ($1- == Fake Kirk) { var %return /pandora/talk-xml?botid=fef38cb4de345ab1 <that> </that> Fake_Kirk 0 }
  elseif ($1- == Zoe) { var %return /pandora/talk-xml?botid=83e198ed1e345ab2 <that> </that> Zoe 0 }
  elseif ($1- == Fake Spock) { var %return /pandora/talk-xml?botid=f261d8418e345aa1 <that> </that> Fake_Spock 0 }
  elseif ($1- == Mike) { var %return /pandora/talk-xml?botid=ad1eeebfae345abc <that> </that> Mike 0 }
  return %return $replace($1-,$chr(32),_)


Sign in to comment.
cptpan   -  Sep 07, 2017

Can you please make this work?

blackvenomm666  -  Sep 08, 2017

unless you find someone else that knows what they are doing unfortunately this will prolly not be fixed fordlawnmower seems to have been mia from here since 2015

cptpan  -  Sep 12, 2017

Yeah it's f ucked FLM was the best coder there is and ever was

blackvenomm666  -  Sep 13, 2017

i wouldn't say the best but yes he's a great coder. so was napa182, jethro, lots of others i use to hang out in chats with all gone now. i learned a lot from all of them

blackvenomm666  -  Sep 13, 2017

unfortunately socket scripts are not my thing

Sign in to comment

cptpan   -  Jun 12, 2015

Is there a working version of this around somewhere?

ovelayer  -  Jun 14, 2015

try this one out it works

cptpan  -  Jun 15, 2015

Yeah thanks man. I found that one and started using it.

It lacks some of the things that this bot used to have (the other one just answers EVERYTHING instead of $nick questions).

Posted there and awaiting response from creator.

Sign in to comment

devcline   -  Apr 27, 2015

Hello folks!!
I was wondering, why its better to get a requests from the web? instead a use local xml aka aiml files from the client mirc? how to do this? if someone had a experience , please share thanx!

Aeloi   -  Mar 13, 2015

Can't get this bot to work :(

Menteroth  -  Mar 19, 2015

Think it doesn't work because they changed the site. Stopped working some time ago.

devcline  -  Apr 27, 2015

i managed to get it work, but i my way. And i make it multilanguage. i can share.

prozact  -  May 06, 2015

So how did you managed to make the script work ? ty

Sign in to comment

barnabewild   -  Jul 12, 2014

Hello, I like very much your script.
as novice as it can be, I tried playing with it and i encountered a little phrase structure (because the bot speaking french)
therefore i read all the comments and can't find the answer for what i seek.
how can I change the place of the nick from the beginning of the sentence, to the end of it?
instead of :
barnabewild blah blah blah.
it is :
blah blah blah barnabewild.
thank you for your time!

Menteroth   -  Apr 08, 2014

Does this script still work?
Can't seem to get it to respond anymore. I tried with Alice, Dr. Duck and God. Just random choices.
It worked fine when I got it in October. I also tried to update the script if there were any changes, but didn't work.

cptpan  -  Apr 26, 2014

Yea mine is fukd too. WTF

cptpan  -  Sep 25, 2014

Works again :D

Sign in to comment

tiefuts   -  Feb 11, 2014

"[9:28am] ««Ë®®öR»» Unknown command: NOOP" I don't quite know what that means but it does it at least four times after i type any word to it?

FordLawnmower  -  Feb 11, 2014

@tiefuts This means your mIRC version is very old.
The noop command was added in mIRC 6.17 . The mIRC you are using is at least 10 years old.
I would suggest upgrading to at least 6.35 . You can find old versions of mIRC here :
To upgrade you just need to replace the mIRC.exe
If you need help upgrading, contact me on irc. #Script-Help

Sign in to comment

Norluck   -  Dec 29, 2013

Alright, finally got it working... But now the bot doesn't connect. It just says "Alice (or whatever) is active on [channelname]" and if i try messaging them nothing happens.

PackardBell   -  Oct 24, 2013

@FordLawnmower : do you think this will work with this one: ?

cptpan  -  Oct 24, 2013

I'd also like to see some more response scripts incorporated as the bot gets boring very quickly.

Sign in to comment

Menteroth   -  Oct 11, 2013

what do I need to change/add to make the bot responses all in lowercase?

Norluck   -  Jun 18, 2013

I'm new to mIRC, so I'm not entirely sure what to do with this script. If I paste it into scripts, right click on chat and press "Select bot for ___" it gives "L Unknown command". What am I supposed to be doing with this script?

EDIT: Now it says "PANDORA Unkown command"

Yawhatnever  -  Jun 18, 2013

Scripts usually go in the remote section of the script editor (like this script). It sounds like you may have pasted it into the alias tab instead.

Norluck  -  Jun 19, 2013

Now it says it's been activated on a channel, but nothing happens when I say it's name.

Sign in to comment

PackardBell   -  Jun 09, 2013

Hey. The bot works. But some of the "people" aren't there anymore.
Can someone update the script? [ remove the old ones and add the new ones ]

inb4 = awesome script! @FordLawnmower

PackardBell  -  Jun 12, 2013

ps: how to set a bot on load? [how to make it automaticly load for eg. Alice on start?]

PackardBell  -  Jun 22, 2013

@FordLawnmower can u check on the names+links please? :)

FordLawnmower  -  Jun 22, 2013

If you want me to make some changes here @PackardBell , Take some time and go through the bots and leave a thorough post so I know which bots work and which bots don't work. You may also include any new bots you may find and I can add them as well.

Sign in to comment

ovelayer   -  Apr 13, 2013

looks like the site and bots are working again =)

ovelayer   -  Feb 16, 2013

love this script but it seems with newest mirc update it stopped working..any chance the script can be updated?

FordLawnmower  -  Feb 16, 2013

@ovelayer I don't think this has anything to do with mIRC. The site is having some problems and the community server is shut down.

Edit: I updated the code with two working bots. Zoe & Fake Kirk are both working because they are not on the free servers.
If anyone finds other working bots. Post the links here and I'll add them.

Updated: Added Alice, Fake Spock and Mike to the working bots list.

ovelayer  -  Feb 16, 2013

awsome fast response thank you!! ill update the script with your new one!

Sign in to comment

OldAccount   -  Sep 08, 2012

Is there any way to put in a sort of teach mode I!train on) where the bot logs in with your credentials on PandoraBots and navigates to the bots page and then goes onto the train page. After that you could pm your bot it would respond and you could tell it yes or no... after (!train off) it saves the AIML file as Training.
That may seem just as a dream but i was asking if that is possible and if you could make it if it was.

Stewie1k94   -  Sep 03, 2012

Choose a bot from the list in the dialog, and click OK'. Also you would need to put it on, and it would need to be on another client, not your own!

g0ku   -  Sep 03, 2012

lol how do i add the bot to the channel script is there but no bot!

FordLawnmower   -  Aug 18, 2012

Your welcome :)

mruno   -  Aug 18, 2012

awesome. thx

FordLawnmower   -  Aug 18, 2012

I see the problem @mruno . This subdomain has it's own api so the botid does not exist in the standard api.
This edit will add the bot to the list:
Your edit was correct , you just needed to add the bots name to the botselect dialog.
I addition to adding the bots info to the botinfo alias, I just changed line 114 from:

didtok $dname 5 14 Smoshinator(Rude)Spambot(Rude)AFRObot(Rude)DawnstarWraithRoninChabba(German)LaurieGodAlice


didtok $dname 5 14 Smoshinator(Rude)Spambot(Rude)AFRObot(Rude)DawnstarWraithRoninChabba(German)LaurieGodAliceFake Kirk
mruno   -  Aug 18, 2012

thanks for the reply, but i get "failed to find bot" from the server.
I added "if (failed to find bot isin %pandora) echo -sate Unable to find Pandora bot with that ID." to the on sockread event.

FordLawnmower   -  Aug 16, 2012

@mruno You can just use the menu option to Use bot from ID.
First right click the channel you want to add your bot to and select "Use bot from ID"
Next enter your Pandora's bot Name. This will be the name your bot is known as on the Pandora's site.
Finally add your bots Pandora's botid which can usually be found in your browsers address bar when you are on the your bots Pandoras page. It will be the alpha-numeric string after -- botid=

mruno   -  Aug 14, 2012

how can I add this bot to the script?

i added the following to botinfo:
elseif ($1- == Kirk) { var %return /pandora/talk?botid=fef38cb4de345ab1 Kirk 0 }
but it does not output anything

chachin   -  Jul 30, 2012

any updates for 2012.. i wanna know if anything cool is going to happend for pandorabot 2012 :D

skyy_net   -  May 26, 2012

hey fordlawnmower is there a way to make it so that every channel the bot goes to the script is already on.instead of me turning it on :)

m40295   -  May 20, 2012

is there a way i can remove the color code?

McBeast   -  May 20, 2012

Would it be possible to make it so that the bot will call the person its talking to by its IRC name instead of the ? I find it annoying that it says stuff like "See you later, (blank space if it doesn't know the name)."
seeing as I can't make my bot remember people from time to time, I don't know what else to do than to make it call the person by it's IRC name.

1=1--   -  Mar 23, 2012

Incredible... Works perfectly. I like having the ability to add bots by id. I haven't been a member for long enough to 'like' yet, but I'll remember to come back :) Thanks again.

EDIT: I guess I can like it, so I did. Thanks.

turbuiance   -  Mar 22, 2012

thanks manic.. I understand all of that.. Appreciate you trying to help tho.. My main issue is "I have tried with no success .. How would i make it so i don't have to turn the bot on? So it would be turned on in any room.. Im using one of my pandorabots and added it to the list that you made.. I would basically just want the script to be auto on in every room I join and have my pandorabot be the one selected.. If thats possible.. or even a On/off trigger someone could use in the channel incase im not infront of the computer to turn on myself... Thanks! " Like a !boton or !botoff command for it.. I have fiddled with the one in the above comments but that doesnt seem to work..

ManicWaldo   -  Mar 17, 2012

The bot is designed to respond to anyone that uses it nick one time. After that .. the bot will "focus" on just that individual and respond to anything that person says. The nick only needs to be used once. Then by saying .. shutup .. the bot stops responding to anyone until someone once again uses the bot's nick.

The bot is configured to work with only one bot at a time. So if you have it set to your personal bot .. then you can train it like normal and it will give the responses you have made for it. I've done a fair bit of work on my bot .. making it appear as human as possible. But there are still times when it will pop up something in reference to it being a bot.

Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.