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 {