diff --git a/agent/input/discord/conn.go b/agent/input/discord/conn.go index ac9af037..4766d442 100644 --- a/agent/input/discord/conn.go +++ b/agent/input/discord/conn.go @@ -70,12 +70,32 @@ func (dc *discordConn) Recv(event *input.Event) error { } } +func ChunkString(s string, chunkSize int) []string { + var chunks []string + runes := []rune(s) + + if len(runes) == 0 { + return []string{s} + } + + for i := 0; i < len(runes); i += chunkSize { + nn := i + chunkSize + if nn > len(runes) { + nn = len(runes) + } + chunks = append(chunks, string(runes[i:nn])) + } + return chunks +} + func (dc *discordConn) Send(e *input.Event) error { fields := strings.Split(e.To, ":") - _, err := dc.master.session.ChannelMessageSend(fields[0], string(e.Data)) - if err != nil { - if logger.V(logger.ErrorLevel, logger.DefaultLogger) { - logger.Error("[bot][loop][send]", err) + for _, chunk := range ChunkString(string(e.Data), 2000) { + _, err := dc.master.session.ChannelMessageSend(fields[0], chunk) + if err != nil { + if logger.V(logger.ErrorLevel, logger.DefaultLogger) { + logger.Error("[bot][loop][send]", err) + } } } return nil diff --git a/registry/mdns_registry.go b/registry/mdns_registry.go index 8ecd37ec..9496fe0a 100644 --- a/registry/mdns_registry.go +++ b/registry/mdns_registry.go @@ -563,9 +563,7 @@ func (m *mdnsWatcher) Next() (*Result, error) { if len(m.wo.Service) > 0 && txt.Service != m.wo.Service { continue } - var action string - if e.TTL == 0 { action = "delete" } else { @@ -584,9 +582,18 @@ func (m *mdnsWatcher) Next() (*Result, error) { continue } + var addr string + if len(e.AddrV4) > 0 { + addr = e.AddrV4.String() + } else if len(e.AddrV6) > 0 { + addr = "[" + e.AddrV6.String() + "]" + } else { + addr = e.Addr.String() + } + service.Nodes = append(service.Nodes, &Node{ Id: strings.TrimSuffix(e.Name, suffix), - Address: fmt.Sprintf("%s:%d", e.AddrV4.String(), e.Port), + Address: fmt.Sprintf("%s:%d", addr, e.Port), Metadata: txt.Metadata, })