commit 3b18c7a

delthas  ·  2022-02-11 15:20:46 +0000 UTC
parent 6f083ad
/query: support optionally sending a message
1 files changed,  +36, -27
+36, -27
 1@@ -92,8 +92,8 @@ func init() {
 2 		"QUERY": {
 3 			AllowHome: true,
 4 			MinArgs:   1,
 5-			MaxArgs:   1,
 6-			Usage:     "[nick]",
 7+			MaxArgs:   2,
 8+			Usage:     "[nick] [message]",
 9 			Desc:      "opens a buffer to a user",
10 			Handle:    commandDoQuery,
11 		},
12@@ -325,31 +325,7 @@ func commandDoMe(app *App, args []string) (err error) {
13 func commandDoMsg(app *App, args []string) (err error) {
14 	target := args[0]
15 	content := args[1]
16-	netID, _ := app.win.CurrentBuffer()
17-	s := app.sessions[netID]
18-	if s == nil {
19-		return errOffline
20-	}
21-	s.PrivMsg(target, content)
22-	if !s.HasCapability("echo-message") {
23-		buffer, line, _ := app.formatMessage(s, irc.MessageEvent{
24-			User:            s.Nick(),
25-			Target:          target,
26-			TargetIsChannel: s.IsChannel(target),
27-			Command:         "PRIVMSG",
28-			Content:         content,
29-			Time:            time.Now(),
30-		})
31-		if buffer != "" && !s.IsChannel(target) {
32-			app.monitor[netID][buffer] = struct{}{}
33-			s.MonitorAdd(buffer)
34-			s.ReadGet(buffer)
35-			app.win.AddBuffer(netID, "", buffer)
36-		}
37-
38-		app.win.AddLine(netID, buffer, ui.NotifyNone, line)
39-	}
40-	return nil
41+	return commandSendMessage(app, target, content)
42 }
43 
44 func commandDoNames(app *App, args []string) (err error) {
45@@ -457,6 +433,11 @@ func commandDoQuery(app *App, args []string) (err error) {
46 	i, _ := app.win.AddBuffer(netID, "", target)
47 	s.NewHistoryRequest(target).WithLimit(200).Before(time.Now())
48 	app.win.JumpBufferIndex(i)
49+	if len(args) > 1 {
50+		if err := commandSendMessage(app, target, args[1]); err != nil {
51+			return err
52+		}
53+	}
54 	return nil
55 }
56 
57@@ -649,6 +630,34 @@ func parseCommand(s string) (command, args string, isCommand bool) {
58 	return strings.ToUpper(s[1:i]), strings.TrimLeft(s[i:], " "), true
59 }
60 
61+func commandSendMessage(app *App, target string, content string) error {
62+	netID, _ := app.win.CurrentBuffer()
63+	s := app.sessions[netID]
64+	if s == nil {
65+		return errOffline
66+	}
67+	s.PrivMsg(target, content)
68+	if !s.HasCapability("echo-message") {
69+		buffer, line, _ := app.formatMessage(s, irc.MessageEvent{
70+			User:            s.Nick(),
71+			Target:          target,
72+			TargetIsChannel: s.IsChannel(target),
73+			Command:         "PRIVMSG",
74+			Content:         content,
75+			Time:            time.Now(),
76+		})
77+		if buffer != "" && !s.IsChannel(target) {
78+			app.monitor[netID][buffer] = struct{}{}
79+			s.MonitorAdd(buffer)
80+			s.ReadGet(buffer)
81+			app.win.AddBuffer(netID, "", buffer)
82+		}
83+
84+		app.win.AddLine(netID, buffer, ui.NotifyNone, line)
85+	}
86+	return nil
87+}
88+
89 func (app *App) handleInput(buffer, content string) error {
90 	if content == "" {
91 		return nil