1
0
Fork 0
forked from External/ergo
This commit is contained in:
Shivaram Lingamneni 2019-02-17 14:29:04 -05:00
parent 3d89c70c49
commit a5b9634783
4 changed files with 40 additions and 20 deletions

View file

@ -408,18 +408,18 @@ func authExternalHandler(server *Server, client *Client, mechanism string, value
// AWAY [<message>]
func awayHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
var isAway bool
var text string
var awayMessage string
if len(msg.Params) > 0 {
isAway = true
text = msg.Params[0]
awayMessage = msg.Params[0]
awayLen := server.Limits().AwayLen
if len(text) > awayLen {
text = text[:awayLen]
if len(awayMessage) > awayLen {
awayMessage = awayMessage[:awayLen]
}
}
client.SetMode(modes.Away, isAway)
client.awayMessage = text
client.SetAwayMessage(awayMessage)
var op modes.ModeOp
if isAway {
@ -439,7 +439,7 @@ func awayHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Resp
// dispatch away-notify
for friend := range client.Friends(caps.AwayNotify) {
if isAway {
friend.SendFromClient("", client, nil, "AWAY", client.awayMessage)
friend.SendFromClient("", client, nil, "AWAY", awayMessage)
} else {
friend.SendFromClient("", client, nil, "AWAY")
}
@ -1777,6 +1777,7 @@ func monitorClearHandler(server *Server, client *Client, msg ircmsg.IrcMessage,
// MONITOR L
func monitorListHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
nick := client.Nick()
monitorList := server.monitorManager.List(client)
var nickList []string
@ -1790,10 +1791,10 @@ func monitorListHandler(server *Server, client *Client, msg ircmsg.IrcMessage, r
}
for _, line := range utils.ArgsToStrings(maxLastArgLength, nickList, ",") {
rb.Add(nil, server.name, RPL_MONLIST, client.Nick(), line)
rb.Add(nil, server.name, RPL_MONLIST, nick, line)
}
rb.Add(nil, server.name, RPL_ENDOFMONLIST, "End of MONITOR list")
rb.Add(nil, server.name, RPL_ENDOFMONLIST, nick, "End of MONITOR list")
return false
}
@ -2089,6 +2090,7 @@ func privmsgHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *R
// split privmsg
splitMsg := utils.MakeSplitMessage(message, !client.capabilities.Has(caps.MaxLine))
cnick := client.Nick()
for i, targetString := range targets {
// max of four targets per privmsg
if i > maxTargets-1 {
@ -2106,7 +2108,7 @@ func privmsgHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *R
if err == nil {
channel := server.channels.Get(target)
if channel == nil {
rb.Add(nil, server.name, ERR_NOSUCHCHANNEL, client.nick, targetString, client.t("No such channel"))
rb.Add(nil, server.name, ERR_NOSUCHCHANNEL, cnick, targetString, client.t("No such channel"))
continue
}
if !channel.CanSpeak(client) {
@ -2124,7 +2126,7 @@ func privmsgHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *R
user := server.clients.Get(target)
if err != nil || user == nil {
if len(target) > 0 {
client.Send(nil, server.name, ERR_NOSUCHNICK, client.nick, target, "No such nick")
client.Send(nil, server.name, ERR_NOSUCHNICK, cnick, target, "No such nick")
}
continue
}
@ -2144,7 +2146,7 @@ func privmsgHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *R
}
if user.HasMode(modes.Away) {
//TODO(dan): possibly implement cooldown of away notifications to users
rb.Add(nil, server.name, RPL_AWAY, user.nick, user.awayMessage)
rb.Add(nil, server.name, RPL_AWAY, cnick, user.Nick(), user.AwayMessage())
}
user.history.Add(history.Item{
@ -2343,6 +2345,7 @@ func tagmsgHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Re
targets := strings.Split(msg.Params[0], ",")
cnick := client.Nick()
for i, targetString := range targets {
// max of four targets per privmsg
if i > maxTargets-1 {
@ -2360,7 +2363,7 @@ func tagmsgHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Re
if err == nil {
channel := server.channels.Get(target)
if channel == nil {
rb.Add(nil, server.name, ERR_NOSUCHCHANNEL, client.nick, targetString, client.t("No such channel"))
rb.Add(nil, server.name, ERR_NOSUCHCHANNEL, cnick, targetString, client.t("No such channel"))
continue
}
if !channel.CanSpeak(client) {
@ -2375,7 +2378,7 @@ func tagmsgHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Re
user := server.clients.Get(target)
if err != nil || user == nil {
if len(target) > 0 {
client.Send(nil, server.name, ERR_NOSUCHNICK, client.nick, target, client.t("No such nick"))
client.Send(nil, server.name, ERR_NOSUCHNICK, cnick, target, client.t("No such nick"))
}
continue
}
@ -2391,7 +2394,7 @@ func tagmsgHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Re
}
if user.HasMode(modes.Away) {
//TODO(dan): possibly implement cooldown of away notifications to users
rb.Add(nil, server.name, RPL_AWAY, user.nick, user.awayMessage)
rb.Add(nil, server.name, RPL_AWAY, cnick, user.Nick(), user.AwayMessage())
}
}
}