implement draft/multiline

This commit is contained in:
Shivaram Lingamneni 2019-12-23 15:26:37 -05:00
parent ec8b25e236
commit 358c4b7d81
14 changed files with 531 additions and 192 deletions

View file

@ -16,6 +16,7 @@ type Command struct {
oper bool
usablePreReg bool
leaveClientIdle bool // if true, leaves the client active time alone
allowedInBatch bool // allowed in client-to-server batches
minParams int
capabs []string
}
@ -44,6 +45,11 @@ func (cmd *Command) Run(server *Server, client *Client, session *Session, msg ir
rb.Add(nil, server.name, ERR_NEEDMOREPARAMS, client.Nick(), msg.Command, rb.target.t("Not enough parameters"))
return false
}
if session.batch.label != "" && !cmd.allowedInBatch {
rb.Add(nil, server.name, "FAIL", "BATCH", "MULTILINE_INVALID", client.t("Command not allowed during a multiline batch"))
session.batch = MultilineBatch{}
return false
}
return cmd.handler(server, client, msg, rb)
}()
@ -92,6 +98,11 @@ func init() {
handler: awayHandler,
minParams: 0,
},
"BATCH": {
handler: batchHandler,
minParams: 1,
allowedInBatch: true,
},
"BRB": {
handler: brbHandler,
minParams: 0,
@ -193,8 +204,9 @@ func init() {
minParams: 1,
},
"NOTICE": {
handler: messageHandler,
minParams: 2,
handler: messageHandler,
minParams: 2,
allowedInBatch: true,
},
"NPC": {
handler: npcHandler,
@ -230,8 +242,9 @@ func init() {
leaveClientIdle: true,
},
"PRIVMSG": {
handler: messageHandler,
minParams: 2,
handler: messageHandler,
minParams: 2,
allowedInBatch: true,
},
"RENAME": {
handler: renameHandler,