To create new wiki account, please join us on #znc at freenode and ask admins to create a wiki account for you. You can say thanks to spambots for this inconvenience.


From ZNC
Jump to: navigation, search

This module is used to perform one or more user-specified commands when connecting ZNC to the IRC network. It can be loaded as a user module or a network module.

  • If the module is loaded as a user module, it will perform the command(s) on all network(s) the user has.
  • If the module is loaded as a network module, it will perform the command(s) only on that specific network.



This network module takes no arguments.

Read loading modules to learn more about loading modules.


Add <command>
Adds perform command to be sent to the server on connect
Del <number>
Delete a perform command
Send the perform commands to the server now
Help <?search>
Generate this help output, optionally search for word/prase in this output.
List the perform commands
Swap <number> <number>
Swap two perform commands (to change the order in which commands are sent)


The perform list is automatically saved on changes. See ExpandString for a list of available variables (e.g. %nick%)

Identifying to services

Identifying to Undernet:

/msg *perform add PRIVMSG :LOGIN <username> <password>

Identifying to QuakeNet (alternatively, use the q module rather than perform on QuakeNet):

/msg *perform add PRIVMSG :AUTH <username> <password>

Identifying to NickServ (see /msg nickserv help identify for the syntax and try /quote nickserv help to see that the NICKSERV command works):

/msg *perform add NICKSERV identify <username> <password>

Identifying to NickServ if NICKSERV is not supported:

/msg *perform add PRIVMSG NickServ :identify username password

The difference between /nickserv and PRIVMSG (/msg) is that /nickserv is usually IRCd-side alias that checks that NickServ is a real service—to just a user who has changed their nick to "NickServ." If this is ever the case, /msg would have sent your password to the impostor. The : is important, otherwise everything after identify gets dropped.

/msg *perform add PRIVMSG &bitlbee :identify <password>

You could also replace &bitlbee with root, but that would make root send all connect/disconnect etc. messages in PM causing potentially annoying alerts in your client.

Setting modes on connect

The following modes are fairly common, but check with your IRC network to see if these modes will function as described here, or if they exist at all on that network.

Setting umode +Xx on connect (X or x enables cloaking on some IRCds):

/msg *perform add mode %nick% +Xx

Setting umode +w on connect for receiving wallops:

/msg *perform add mode %nick% +w

Setting all three modes on connect:

/msg *perform add mode %nick% +Xxw

Opering up

Logging in as IRC operator on connect:

/msg *perform add OPER USER PASSWORD


For general idea of what idlerpg is, see their homepage. This example is here, because sometimes people request a module for it.

/msg *perform add JOIN #idlerpg
/msg *perform add PRIVMSG IDLEBOT :login username password

First you tell perform to join the channel and then you login to IDLEBOT. You should be on the channel when IDLEBOT receives the command and if you didn't add the join command you will most likely receive error about not being on the channel. Do replace #idlerpg and IDLEBOT with the actual channel and nick of the bot.

Listing, removing, or re-ordering commands

Listing commands to be executed on connecting
/msg *perform list
<*perform> ------
<*perform> Id: 1
<*perform> Perform: PRIVMSG NickServ :GHOST myname mysecretpassword
<*perform> ------
<*perform> Id: 2
<*perform> Perform: mode %nick% +wix
<*perform> Expanded: mode myname +wix
<*perform> ------
<*perform> Id: 3
<*perform> Perform: PRIVMSG IdleBot :LOGIN myuser mysecretpassword
<*perform> ------
<*perform> Id: 4
<*perform> Perform: JOIN #idleRPG
<*perform> ------
Swap position of commands 3 and 4.
/msg *perform swap 3 4
<*perform> Commands Swapped.
Add a new command.
/msg *perform add NOTICE %nick% :You’ve logged on.
<*perform> Added!
Delete command in position 5.
/msg *perform del 5
<*perform> Command Erased.