commit 89dc108

delthas  ·  2024-10-05 15:39:59 +0000 UTC
parent 64a7907
Default message prefixes to the server prefix

Fixes: https://todo.sr.ht/~delthas/senpai/172
2 files changed,  +12, -42
+12, -41
  1@@ -129,7 +129,8 @@ type Session struct {
  2 	availableCaps map[string]string
  3 	enabledCaps   map[string]struct{}
  4 
  5-	serverName string
  6+	serverName    string
  7+	defaultPrefix *Prefix
  8 	// ISUPPORT features
  9 	casemap       func(string) string
 10 	chanmodes     [4]string
 11@@ -671,6 +672,15 @@ func (s *Session) Kick(nick, channel, comment string) {
 12 }
 13 
 14 func (s *Session) HandleMessage(msg Message) (Event, error) {
 15+	if msg.Prefix == nil {
 16+		if s.defaultPrefix != nil {
 17+			msg.Prefix = s.defaultPrefix
 18+		} else {
 19+			msg.Prefix = &Prefix{
 20+				Name: "*",
 21+			}
 22+		}
 23+	}
 24 	if s.registered {
 25 		return s.handleRegistered(msg)
 26 	} else {
 27@@ -772,6 +782,7 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
 28 			Message:  fmt.Sprintf("Registration failed: %s", strings.Join(msg.Params[1:], " ")),
 29 		}, nil
 30 	case rplWelcome:
 31+		s.defaultPrefix = msg.Prefix
 32 		if err := msg.ParseParams(&s.nick); err != nil {
 33 			return nil, err
 34 		}
 35@@ -885,10 +896,6 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
 36 			}
 37 		}
 38 	case "JOIN":
 39-		if msg.Prefix == nil {
 40-			return nil, errMissingPrefix
 41-		}
 42-
 43 		var channel string
 44 		if err := msg.ParseParams(&channel); err != nil {
 45 			return nil, err
 46@@ -928,10 +935,6 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
 47 			}, nil
 48 		}
 49 	case "PART":
 50-		if msg.Prefix == nil {
 51-			return nil, errMissingPrefix
 52-		}
 53-
 54 		var channel string
 55 		if err := msg.ParseParams(&channel); err != nil {
 56 			return nil, err
 57@@ -1010,10 +1013,6 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
 58 			}
 59 		}
 60 	case "QUIT":
 61-		if msg.Prefix == nil {
 62-			return nil, errMissingPrefix
 63-		}
 64-
 65 		if playback {
 66 			return UserQuitEvent{
 67 				User: msg.Prefix.Name,
 68@@ -1171,10 +1170,6 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
 69 			s.channels[channelCf] = c
 70 		}
 71 	case "TOPIC":
 72-		if msg.Prefix == nil {
 73-			return nil, errMissingPrefix
 74-		}
 75-
 76 		var channel, topic string
 77 		if err := msg.ParseParams(&channel, &topic); err != nil {
 78 			return nil, err
 79@@ -1258,10 +1253,6 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
 80 			}, nil
 81 		}
 82 	case "INVITE":
 83-		if msg.Prefix == nil {
 84-			return nil, errMissingPrefix
 85-		}
 86-
 87 		var nick, channel string
 88 		if err := msg.ParseParams(&nick, &channel); err != nil {
 89 			return nil, err
 90@@ -1284,20 +1275,12 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
 91 			Channel: channel,
 92 		}, nil
 93 	case "AWAY":
 94-		if msg.Prefix == nil {
 95-			return nil, errMissingPrefix
 96-		}
 97-
 98 		nickCf := s.Casemap(msg.Prefix.Name)
 99 
100 		if u, ok := s.users[nickCf]; ok {
101 			u.Away = len(msg.Params) == 1
102 		}
103 	case "PRIVMSG", "NOTICE":
104-		if msg.Prefix == nil {
105-			return nil, errMissingPrefix
106-		}
107-
108 		var target string
109 		if err := msg.ParseParams(&target); err != nil {
110 			return nil, err
111@@ -1317,10 +1300,6 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
112 			return nil, nil
113 		}
114 
115-		if msg.Prefix == nil {
116-			return nil, errMissingPrefix
117-		}
118-
119 		var target string
120 		if err := msg.ParseParams(&target); err != nil {
121 			return nil, err
122@@ -1390,10 +1369,6 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
123 			}
124 		}
125 	case "NICK":
126-		if msg.Prefix == nil {
127-			return nil, errMissingPrefix
128-		}
129-
130 		var nick string
131 		if err := msg.ParseParams(&nick); err != nil {
132 			return nil, err
133@@ -1995,10 +1970,6 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
134 }
135 
136 func (s *Session) newMessageEvent(msg Message) (ev MessageEvent, err error) {
137-	if msg.Prefix == nil {
138-		return ev, errMissingPrefix
139-	}
140-
141 	var target, content string
142 	if err := msg.ParseParams(&target, &content); err != nil {
143 		return ev, err
+0, -1
1@@ -166,7 +166,6 @@ func formatTags(tags map[string]string) string {
2 var (
3 	errEmptyMessage      = errors.New("empty message")
4 	errIncompleteMessage = errors.New("message is incomplete")
5-	errMissingPrefix     = errors.New("missing message prefix")
6 )
7 
8 type Prefix struct {