Classify recursive channel messages as public

This commit is contained in:
Brandon McGinty (chatgpt)
2026-08-10 00:00:40 -04:00
committed by Brandon McGinty
parent d7dcaa8b21
commit 874cbb7818
2 changed files with 37 additions and 8 deletions
+23 -8
View File
@@ -230,14 +230,7 @@ func (b *Barnard) Log(s string) {
}
func (b *Barnard) OnTextMessage(e *gumble.TextMessageEvent) {
var public = false
for _, c := range e.Channels {
if c.Name == b.Client.Self.Channel.Name {
public = true
break
}
}
if public {
if b.isPublicTextMessage(e) {
sender := "Server"
if e.Sender != nil {
sender = e.Sender.Name
@@ -256,6 +249,28 @@ func (b *Barnard) OnTextMessage(e *gumble.TextMessageEvent) {
}
}
// isPublicTextMessage reports whether a message targets the current channel,
// either directly or through a recursive channel-tree recipient.
func (b *Barnard) isPublicTextMessage(e *gumble.TextMessageEvent) bool {
if e == nil || b.Client == nil || b.Client.Self == nil || b.Client.Self.Channel == nil {
return false
}
current := b.Client.Self.Channel
for _, channel := range e.Channels {
if sameChannel(channel, current) {
return true
}
}
for _, root := range e.Trees {
for channel := current; channel != nil; channel = channel.Parent {
if sameChannel(channel, root) {
return true
}
}
}
return false
}
func (b *Barnard) OnUserChange(e *gumble.UserChangeEvent) {
notification, hasNotification := b.userChangeNotification(e)
if e.User != nil {