diff --git a/irc/modes.go b/irc/modes.go index 3756052e..2b0faf1c 100644 --- a/irc/modes.go +++ b/irc/modes.go @@ -327,11 +327,7 @@ func (client *Client) applyUserModeChanges(force bool, changes ModeChanges) Mode // MODE [ [...]] func umodeHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool { nickname, err := CasefoldName(msg.Params[0]) - target := server.clients.Get(nickname) - targetNick := target.getNick() - hasPrivs := client == target || msg.Command == "SAMODE" - if err != nil || target == nil { if len(msg.Params[0]) > 0 { client.Send(nil, server.name, ERR_NOSUCHNICK, client.nick, msg.Params[0], "No such nick") @@ -339,6 +335,9 @@ func umodeHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool { return false } + targetNick := target.getNick() + hasPrivs := client == target || msg.Command == "SAMODE" + if !hasPrivs { if len(msg.Params) > 1 { client.Send(nil, server.name, ERR_USERSDONTMATCH, client.nick, "Can't change modes for other users")