===== Syntax brainstorming ===== The goal is for forky to have shell syntax with all the features of your favorite terminal. However, the nature of IRC prevents some challenges, for example: - Not everything people say is meant for him to interpret - The are other b0ts, and forkb0t needs to not stray into thier turf - forkb0t should not use the same syntax as posix shells, because - Some of his commands are processed through bash, and we don't want to risk cross-confuzzlement - Some people (especially krushia) have brain farts and confuse terminal window with irc - All i/o has to be nicely wrapped in raw IRC strings, and all input must pass through various IRC client preprocessing - There is no way to know where strings are wrapped on everyone's screen - People will often use different text encodings - Ordered List Item **IF YOU HAVE SUGGESTIONS FOR SYNTAX, PLEASE ADD IT DOWN THERE IN THE NEEDED SECTION** ==== Currently there are three special operators ==== === >>> === "!command >>> user" produces "user: output" == Why == ">>>" is a derivative of shell file redirectors ">" and ">>". ">>>" acts as a redirector in forkb0t's code. DO NOT THINK OF IT AS A PREFIXER. When forkb0t runs a commandline, he "redirects" the output to a user in the channel. Without ">>>", he will "redirect" to whoever ran the command (there are some exceptions, such as multiline spam. === >>>> === "!command >>>> channel" pipes output to channel == Why == ">>>>" was chosen because this is a "greater form of redirection" than ">>>". When forkb0t runs a command line, he must indicate in the raw PRIVMSG IRC string as to where the output is going. Without ">>>>", he will use the channel in which the user ran the command. === forkb0t: !cowsay As you can see, essentially !dict panda !+ | krushia: panda - 1. large black-and-white Chinese mammal | "The Giant Panda (Ailuropoda melanoleuca, literally meaning 'cat-foot black-and-white') is a bear native to central-western and southwestern China." - http://en.wikipedia.org/wiki/Panda idk, kinda nasty === Name prefix disabler === Currently if you don't want the name prefixed, you can do "!forksay