@@ -219,16 +219,21 @@
219 219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nick := e.Source.Name
220 220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if acct, ok := e.Tags.Get("account"); ok && acct != "" {
221 221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nick = acct
222 222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
223 223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- b.dispatch(Message{
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ msg := Message{
225 225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
At: e.Timestamp,
226 226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Channel: channel,
227 227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Nick: nick,
228 228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Text: e.Last(),
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- })
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ // Read meta-type from IRCv3 client tags if present.
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if metaType, ok := e.Tags.Get("+scuttlebot/meta-type"); ok && metaType != "" {
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ msg.Meta = &Meta{Type: metaType}
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ b.dispatch(msg)
230 235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
})
231 236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
232 237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b.client = c
233 238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
234 239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
errCh := make(chan error, 1)
@@ -338,19 +343,27 @@
338 343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
339 344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
340 345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
// SendWithMeta sends a message to channel with optional structured metadata.
341 346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
// IRC receives only the plain text; SSE subscribers receive the full message
342 347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
// including meta for rich rendering in the web UI.
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ //
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ // When meta is present, key fields are attached as IRCv3 client-only tags
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ // (+scuttlebot/meta-type) so any IRCv3 client can read them.
343 351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
func (b *Bot) SendWithMeta(ctx context.Context, channel, text, senderNick string, meta *Meta) error {
344 352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if b.client == nil {
345 353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return fmt.Errorf("bridge: not connected")
346 354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
347 355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ircText := text
348 356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if senderNick != "" {
349 357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ircText = "[" + senderNick + "] " + text
350 358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- b.client.Cmd.Message(channel, ircText)
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ // Attach meta-type as a client-only tag if metadata is present.
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if meta != nil && meta.Type != "" {
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ b.client.Cmd.SendRawf("@+scuttlebot/meta-type=%s PRIVMSG %s :%s", meta.Type, channel, ircText)
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ b.client.Cmd.Message(channel, ircText)
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
352 365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
353 366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if senderNick != "" {
354 367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b.TouchUser(channel, senderNick)
355 368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
356 369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
357 370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!