====== IRC Bot ====== ===== Install ===== The IRC bot is included with Synchronet BBS, at ''exec/ircbot.js''. Additional IRC bot modules are available in ''exec/ircbots/''. ===== Configure ===== The IRC bot configuration file is [[:config:ircbot.ini:]]. [server_ServerName] addresses=add.ress.one, add.ress.two nick=BotNickname services_password=? channels=#channelone, #channeltwo port=6667 //Notes:// - If you are running the Synchronet ircd, you can connect the bot to localhost, 127.0.0.1, or the specific interface that the ircd binds to as configured in [[:config:services.ini:]] - You may place more than one server section in [[:config:ircbot.ini:]], however connecting to multiple servers with one bot currently does not work. Instead, you would need to run multiple instances of ircbot.js. **Modules** There are a number of modules available for the IRC bot, but they are not all enabled (or listed) in ''ctrl/ircbot.ini'' by default. [module_ModuleName] channels=#channelone ,!#channeltwo dir=/sbbs/exec/ircbots/mybot/ lib=mylib.js global=true Looking at the ''exec/ircbots'' directory, you may see more modules that are installed but bot configured. As of the time of this writing, the following are available: ;[module_Trivia] ;dir=/sbbs/exec/ircbots/trivia/ [module_Admin] global=true dir=/sbbs/exec/ircbots/admin/ [module_Antispam] global=true channels = #channelname dir=/sbbs/exec/ircbots/antispam/ [module_Decider] global=true dir=/sbbs/exec/ircbots/decider/ [module_Dice] global=true dir=/sbbs/exec/ircbots/dice/ [module_Dis] dir=/sbbs/exec/ircbots/dis/ ;[module_Google] ;global=true ;dir=/sbbs/exec/ircbots/google/ [module_Ham] dir=/sbbs/exec/ircbots/ham/ [module_Humanity] dir=/sbbs/exec/ircbots/humanity/ [module_Info] global=true dir=/sbbs/exec/ircbots/info/ lib=http.js [module_Poker] dir=/sbbs/exec/ircbots/poker/ lib=cardlib.js [module_Presence] dir=/sbbs/exec/ircbots/presence/ [module_Weather] global=true dir=/sbbs/exec/ircbots/weather/ lib=http.js [module_WhereIs] global=true dir=/sbbs/exec/ircbots/whereis/ lib=http.js [module_RPG] channels = #channelname dir=/sbbs/exec/ircbots/rpgbot/ //Notes// - Google seems to have some missing file dependencies and doesn't execute so I have it commented out. - No trivia directory although it is listed in the ini file. - Add a module to a channel by adding the line channels = #channelname to the block. - Otherwise, by adding the modules to the ini and restarting the bot you may make these available in your ircd. **Running the IRC Bot** The IRC bot can be executed via [[:util:jsexec]], ''jsexec ircbot.js'', and an alternate configuration file may be specified like so: ''jsexec ircbot.js -f /some/other/ircbot.ini''. You can also run the IRC bot via your services thread by adding an entry to [[:config:services.ini:]]: [IRCBot] Port=6668 Options=STATIC|LOOP Command=ircbot.js Note that the //Port// value must be supplied, but is irrelevant; the bot does not listen for connections. Just pick an unused port. You can add '' -f /some/other/ircbot.ini'' to the //Command// line to specify an alternate configuration file. ===== Use ===== - See the help menu by sending **/msg help**. - Some commands are restricted and will not show up in the help menu (or be usable), until you have identified yourself to the bot. To identify, use **/msg identify **. (Your IRC nickname must be the same as your username on the BBS for this to work.) Without **IDENT** the help looks like; Usage: HELP | HELP [main] help,?,ident,quote [admin] whois,eval,lastspoke [antispam] [decider] should [dice] roll,dice [dis] quote,dis [ham] specs,z,geo,vhf,hf,country,callsign,contests,bands [humanity] humanity,submit,humanity!,pick,humanity?,score [info] def,syn,info,wtf [poker] deal,go,fold,check,bet,call,raise,status,list,show,hole,invite,balance [presence] nodelist [weather] weather,forecast [whereis] whereis [rpg] create,classes,races,zones,login,logout,help editor commands: set, link, unlink, move, mobs, items, exits, title, desc, goto, look battle commands: flee, kill item commands: drop, get, put, unlock, lock, open, close, remove, wear, equip, wield rpg commands: score, status, move, equipment, inventory, look for detailed command info, type 'rpg help ' for help creating a characer, type 'rpg help create' for help with the editor, type 'rpg help editor' With **IDENT** it looks like; Usage: HELP | HELP [main] reload,load,join,part,die,restart,help,?,ident,addquote,quote,greet,save,prefix,nick,module,modules,abort,ignore [admin] whois,addmask,delmask,adduser,change,resetpass,pass,seval,eval,groups,subs,subgroups,read,finger,udpfinger,exec,say,lastspoke,force,debug,objkeys,tail,pipe [antispam] [decider] should [dice] roll,dice [dis] quote,dis [ham] specs,z,geo,vhf,hf,country,callsign,contests,bands [humanity] humanity,submit,humanity!,pick,humanity?,score [info] def,syn,info,wtf [poker] deal,go,fold,check,bet,call,raise,status,list,show,hole,invite,balance,buyin [presence] nodelist [weather] weather,forecast [whereis] whereis [rpg] create,classes,races,zones,login,edit,logout,save,help,restore editor commands: set, link, unlink, move, mobs, items, exits, title, desc, goto, look battle commands: flee, kill item commands: drop, get, put, unlock, lock, open, close, remove, wear, equip, wield rpg commands: score, status, move, equipment, inventory, look for detailed command info, type 'rpg help ' for help creating a characer, type 'rpg help create' for help with the editor, type 'rpg help editor' The main module functions are contained in the ''/exec/load/ircbot_commands.js'' file. All other modules are free standing and have separate files in their respective directories under ''/exec/ircbots/''. The help associated with the various modules/commands is not complete. if you choose to add/update look for the lines; Bot_Commands["RELOAD"].usage = get_cmd_prefix() + "RELOAD"; Bot_Commands["RELOAD"].help = "Reloads the internal bot command and function structure. No arguments."; This is an example from the command RELOAD. The usage line dictates the syntax required to execute the command. The help line contains a text description of the command's function. **Module Main** * reload - Reloads the internal bot command and function structure. No arguments. (see note below) * load - ??? Unconfirmed ??? I suspect this loads messages from a BBS message area but am unable to get this working. * join - Instructs the specified bot to JOIN a new channel. [Note: may also be specified in the [[:config:ircbot.ini:]] file as well] * part - Instructs the specified bot to dePART from a channel. * die - Causes bot to die (shut down). You don't want that, do you? * restart - Forces bot to restart, only works with bots running as a service. If using JSExec the bot will DIE but not restart. * help - Displays helpful information about bot commands. * ? - This is the same as help above [Note: This is a command alias, created via //Bot_Commands["?"] = Bot_Commands["HELP"];// * ident - Identifies a user by alias and password. Use via private message only. [Note: create an alias for IDENT too.] * addquote - Adds a quote from your nick to the database. Use QUOTE to see. [Note: quotes held in [[:config:ircbot.ini:]] file appended to bottom.] * quote - QUOTE returns quote assoicated with your nick, or search for a string to quote. * greet - Sets or clears the greeting I will display when you enter the room. * save - ??? Unconfirmed ??? Save some data locally? * prefix - Changes the bot command prefix. Default is BOT. Only needed in channels, not in private msgs. * nick - Change the bots nickname. * module - Toggle the status of modules in channels. * modules - Same as modules above. * abort - Instruct the bot to ABORT server output. * ignore - Tell the bot to IGNORE the specified nickname. Note: The RELOAD command throws an error in it's default config. This should result in reloading [[:config:ircbot.ini:]] as well as all the modules, but fails with the following error; TypeError: redeclaration of const MODULE_NAME file: /sbbs/exec/ircbots/presence/presence.js line: 27 You may comment out this section in the ''/exec/load/ircbot_commands.js'' file to avoid, but then you don't RELOAD modules, just the bot. Bot_Commands["RELOAD"].command = function (target,onick,ouh,srv,lvl,cmd) { srv.o(target,"Reloading the bot configuration...","NOTICE"); load("load/ircbot_commands.js"); load("load/ircbot_functions.js"); for(var m in Modules) { /* Don't reload libraries?? for(var l in Modules[m].load) { if(Modules[m].load[l]) load(Modules[m],Modules[m].load[l]); } */ } srv.o(target,"Reloaded.","NOTICE"); return; } I'll start creating separate pages for the other modules as I work though them. ===== See Also ===== * [[:module:|module index]] {{tag>irc chat}}