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