# base dcc/msg commands of FoxEye

# first section is usage
# second section is help to /msg mynick help
# third section is help to dcc chat .help

# -----------------------
# direct.c bindings:

function port
:port ["-b"|"-d"] ["+"flag] <1024-65535>
:
:Opens or closes listening port for direct connections. Usage:
 port <x>     opens port x for direct connections
 port -b <x>  opens port x for direct connections from bots only
 port -d <x>  closes port x for direct connections
    <x> may be in range 1024...65535
 Optional %_flag%_ is char for mandatory connection chain first link (see\
 technical documentation for more details about connection chain).

away
:%* [message]
:
:Sets your status on the botnet channel as "away". Your away message will\
 be displayed in the %cw%n list. You can remove your "away" status by\
 typing %c%*%n command without arguments.

boot
:%* name
:
:Kicks someone (%_name%_) from botnet (as if he/she has entered ".quit").\
 You cannot boot the bot owner/runner.

charset
:%* [charset name]
:
:Sets or displays your charset name which is used to recode all messages\
 on the dcc/telnet session. Note: it's not shared with other bots in the\
 botnet.

chcharset
:%* <lname> [charset name]
:
:Sets or displays charset name which is used to recode all messages coming\
 to or from sessions for some client or service. This setting affects only\
 local connects and are not shared with other bots in the botnet.

lang
:%* [language name]
:
:Sets or displays your language name which is used to show messages if\
 there is any translation for it. Otherwise system default will be used.

chat
:%* [channel]
:
:Changes your current botnet channel. If %_channel%_ is omitted then changes\
 to channel 0 (default). You can sit in silence while nobody knows where\
 you are. It's about as secure IRC channels. May not work outside of telnet\
 or dcc chat.

color
:%* [mode]
:
:Changes color codes of your dcc/telnet session. %_mode%_ can be one of:
   off    supress any color/bold/reverse/underline/blink codes
   mono   supress color codes
   ansi   convert any color/etc. mIRC sequences to ANSI ones
   mirc   pass all as is
 If %_mode%_ is omitted then it shows your current color mode. May not work\
 outside of telnet or dcc chat.

console
:%* [service|"*"] [flags change]
:
:Changes log mode for your dcc/telnet session. You can also change which\
 target (usually service or channel) log messages you want to see. Note that\
 target is affecting all flags, even 'm' one. If flags are prepended with\
 '+' then you have log level added and if with '-' then removed. You can\
 combine both adds and removes in one command. Valid levels are:
   m  display private msgs/ctcps/notices
   p  display public talk and ctcps for the channel/service
   n  display botnet notices
   k  display kicks/bans/topic or mode changes on the channel
   j  display joins/parts/nick changes/signoffs/etc on the channel
   b  display clients connections and shares
   s  display server messages and connect/disconnects
   w  display msgs between IRCops (wallops)
   c  display any user commands
   u  display listfile changes information
   i  display boot time messages
   o  display different state notices and warnings
   e  display correctable internal errors
   d  display debug messages that only coders would care about
 Note that %_service%_ also defines what service-specific set of commands\
 you have enabled at the time. Value of "%^*%^" leaves you without any of\
 service-specific commands but lets you get all logs on your console. May\
 not work outside of telnet or dcc chat.

cstat
:%*
:
:Shows all connections status in table form. It will display login name of\
 connected user or service, domain which is connection from, and short\
 description of current connection state for each connection.

echo
:%* ["on"|"off"]
:
:Sets whether you want your messages will be echoed back to you on botnet\
 channel. If you set it to %^on%^ then all you say will be displayed to you\
 as other people on your botnet channel will see it. If you set it to %^off%^\
 then you will not see your messages. If no parameters given then just shows\
 your current echo mode. May not work outside of telnet or dcc chat.

help
:%* [topic]
:Get help message for topic.
:Prints out help message for %_topic%_. First line is usage template. In that\
 template argument(s) in square brackets is optional, argument(s) in quotes\
 must be entered literally, string(s) in angle brackets is what values are\
 allowed for argument(s), and read description of usage in next line(s) of\
 detailed help. May not work outside of telnet or dcc chat.

me
:%* action
:
:Sends %_action%_ message to the botnet channel. It will be displayed as
 %^* %N does something.%^
 May not work outside of telnet or dcc chat.

motd
:%*
:
:Shows motd (message of the day) file contents. Usually it's shown when you\
 first joined the botnet.

simul
:%* <lname> text
:
:Simulates input of someone else on dcc/telnet session. It seems as if\
 someone will type that text itself. Note: you must remember about\
 nethicette when you use this command!

who
:%* [botnick|service]
:
:Shows who connected to bot or service. This command shows the table of all\
 opened ports for incoming connections and all clients and services directly\
 connected to %_service%_. If name is omitted then shows that info for node\
 you are on now. Owner can customise output format for this command.

w
:%* [channel]
:
:Prints out list of people on your botnet channel or other %_channel%_ if it\
 was specified. This command shows a login name (preceded with "*" for\
 owner, "+" for anyone with master permissions, "@" for any operator or\
 "%%" for anyone with half-op status), from here he/she connected (bot name\
 or "-" for local connections), date or time of connection, idle time, and\
 some info if available. Owner can customise output format for this command.

quit
:%* [message]
:
:Ends your current telnet/dcc session. If message is specified then it will\
 be printed out for other party members as reason.

connect
:%* <network|public@network|nodename> [args]
:
:Starts connection attempt to network, community on connected network or some\
 other node in the network by given name. Optional %_args%_ are network\
 specific. The name must be already defined in Listfile to get this command to\
 work since there is no way to know which protocol we have to use to connect.

disconnect
:%* <network|public@network|nodename> [reason]
:
:Disconnects you from network, community or other node with given name if you\
 are connected to it. Optional string may be given as reason of disconnect.

# -----------------------
# init.c bindings:

binds
:%* ["-l"|name|"-a" [name]]
:
:Shows binding status. Modifiers:
   -l         show list of all tables and number of bindings in each
   -a [name]  show list of all bindings in table %_name%_ (or in all tables)
   name       show list of internal bindings in table %_name%_

module
:%* ["-c"|"-d"] modulename [args] | "-l"
:
:Controls of module state (the same as %cfunction module%n):
 %*     loads an unloaded module by it's name with optional arguments
 %* -c  checks if module is already loaded
 %* -d  unloads a loaded module
 %* -l  shows space separated list of loaded modules
 See also %yhelp %*%n %_modulename%_.

status
:%* ["-a"|modulename]
:
:Shows condensed information about core and/or modules.

fset
:%* [formatname [value]]
:
:Shows or sets format by given name. If format name is omitted then shows\
 list of all known names.
 See also %yhelp %*%n %_formatname%_.

rehash
:%*
:
:Flushes all unsaved listfile changes, logs, connections, etc. to disk then\
 reloads config file and tries to run every command found in it.

restart
:%*
:
:Flushes unsaved listfile changes to disk then restarts the core and all\
 modules.

die
:%* [reason]
:
:Terminates the core and all modules.

set
:%* [variablename [value]]
:
:Shows or sets value for variable. If variable name is omitted then shows\
 list of all known variables.
 See also %yhelp %*%n %_variablename%_.

# -----------------------
# module.c bindings:

function module
:module modulename [args]
:
:Loads an installed unloaded module by it's name with optional arguments.\
 If module does not accept arguments then argumens will be ignored.\
 Currently available modules are:
   autolog      - automatic saving of private and public conversations.
   irc          - common support of client connection to IRC network.
   irc-channel  - basic client support for channels of IRC network.
   irc-ctcp     - support for basic CTCP DCC commands.
   ircd         - basic IRC server (RFC2810...RFC2813).
   ircd-capab   - CAPAB server protocol command
   ircd-rusnet  - RusNet ircd IRC server extensions
   logs         - customisable saving and rotating of log files.
   lua          - support for scripts in Lua language.
   modes        - implementation of commands +ban, -ban, and few more.
   ssl          - support for encrypted (SSL/TLS) connections.
   syslog       - logging messages using syslog.
   tcl          - support for scripts in Tcl language.
   ziplink      - support for compressed (Zlib) connections.
 See also %yhelp module%n.

# -----------------------
# list.c bindings:

chattr
:%* name [flags] [service]
:
:Lets you view and change flags for client record. Usage:
 %* name            only shows current flags
 %* name +x         adds flag with symbolic name x to client record
 %* name -x         removes flag with symbolic name x from client record
 %* name +x %_#ch%_     adds flag with symbolic name x to service %_#ch%_ for client
 %* name +x|-y %_#ch%_  adds flag x to client record and removes flag y from service\
		%_#ch%_ for client
 Only owner may change permissions for owners and masters. Flags can be\
 set for direct service and global, and also for some service in one command.\
 When used in first case, flags that are marked as %^(G)%^ are global ones\
 and others are direct service ones.
 
 Full list of supported flags:
   a  has service access
   k  access to service or mode changes denied %^(G)%^
   v  can ask to give speak permissions (voice flag) %^(G)%^
   h  is service halfop (i.e. has restricted privileges)
   o  is service operator (i.e. privileged)
   m  is service master (i.e. has extended privileges) %^(G)%^
   n  is service owner (i.e. has full control) %^(G)%^
   *  enforce any of above on network/service
   d  must be de-opped
   q  denied to speak %^(G)%^
   f  is friendly, i.e. don't be kicked out in some situations
   s  permitted to say anything on network/service
   e  welcomed to come (invited) %^(G)%^
   i  trusted without authentication %^(G)%^
   I  user's messages are ignored %^(G)%^
   u  private record (i.e. not shared with sharebots)
 For network or service records most of flags apply the same things for me\
 on service (flags a,s,u) or automate them for anyone but some flags have\
 different meaning:
   h  cycle channel to get privileges
   m  protect operators and friendly ones
   *  enforce bans on channel / autoconnect to network
   q  do revenge
   i  non-dynamic modes (for example bans will stay on channel forever)
   n,e,I  (not used)
 Also there are 8 custom flags (A...H) for use in your scripts.

+host
:%* name hostmask
:
:Adds a %_hostmask%_ to client record %_name%_. Hostmask helps bot to identify\
 a client. If %_name%_ contains no '%^.%^' characters then %_hostmask%_ will\
 be normalized (lowercased).

-host
:%* name hostmask
:
:Removes a hostmask from client record %_name%_.

+name
:%* [-<network type>] name [hostmask [flags]]
:
:Creates a new client record for given %_name%_. If %_hostmask%_ different\
 from "%^-%^" is given then adds that hostmask to listfile (converted to\
 lower case if %_name%_ contains no '%^.%^' characters) The new record\
 will have given %_flags%_ or no flags otherwise. You may also add special\
 records (for network, bot, local service, etc.) with this command too, in\
 that case you have to add %_network type%_ before %_name%_ with minus sign.\
 For flags description see %yhelp chattr%n.

-name
:%* name
:
:Removes the client record from listfile.

passwd
:%* password
:
:Changes your password in the listfile.

chpass
:%* name [password]
:
:Changes password for client %_name%_. If you leave off the new password then\
 password will be erased. Client does need the password for some commands.

lname
:%* newname
:
:Changes your login name with new one.

chln
:%* name newname
:
:Changes login name of user %_name%_ with %_newname%_.

reload
:%*
:
:Reloads listfile, discarding any changes made since the last save.

save
:%*
:
:Forcibly saves listfile to disk. This is useful if you think the program may\
 be about to crash or something else is wrong.

chelp
:%* command
:
:Shows description for some configuration file' %_command%_.

function set
:set varname <value>
:
:Changes current (default) value for variable %_varname%_ to some\
 %_value%_. Acceptable value is dependent on variable and if %_value%_\
 contains spaces then it should be quoted with double quotation marks\
 (i.e. <">). To include double quotation mark in the %_value%_ it should\
 be doubled (for example: %Gset somevar "The ""best"" value"%n).

function script
:script <script path>
:
:Loads some script file into appropriate %rinterpreter%n and runs it.\
 Which interpreter module will be called is checked by script path mask\
 (see %yhelp module %rinterpreter%n for details). Modules may do search\
 in predefined places in case the script file wasn't found in the given\
 directory. Since the script file may be reloaded on rehash it should\
 allow duplicate loading.

function flood-type
:flood-type name <number>":"<seconds>
:
:Changes value for checking flood utility for some flood type %_name%_\
 so checking will be done if that events type for one client should not\
 exceed %_number%_ events in some time interval given in %_seconds%_.\
 Note that due to integer nature of counters either %_number%_ should be\
 dividable by %_seconds%_ or %_seconds%_ should be dividable by %_number%_.
