Simplify code
This commit is contained in:
@@ -27,7 +27,7 @@ type Bot struct {
|
|||||||
roomsmu *sync.Mutex
|
roomsmu *sync.Mutex
|
||||||
log *logger.Logger
|
log *logger.Logger
|
||||||
lp *linkpearl.Linkpearl
|
lp *linkpearl.Linkpearl
|
||||||
handledEvents sync.Map
|
handledJoinEvents sync.Map
|
||||||
}
|
}
|
||||||
|
|
||||||
// New creates a new matrix bot
|
// New creates a new matrix bot
|
||||||
|
|||||||
20
bot/sync.go
20
bot/sync.go
@@ -29,27 +29,13 @@ func (b *Bot) initSync() {
|
|||||||
|
|
||||||
func (b *Bot) onMembership(evt *event.Event) {
|
func (b *Bot) onMembership(evt *event.Event) {
|
||||||
hub := sentry.CurrentHub().Clone()
|
hub := sentry.CurrentHub().Clone()
|
||||||
hub.ConfigureScope(func(scope *sentry.Scope) {
|
|
||||||
scope.SetUser(sentry.User{ID: evt.Sender.String()})
|
|
||||||
scope.SetContext("event", map[string]string{
|
|
||||||
"id": evt.ID.String(),
|
|
||||||
"room": evt.RoomID.String(),
|
|
||||||
"sender": evt.Sender.String(),
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
if evt.Sender == b.lp.GetClient().UserID {
|
if evt.Content.AsMember().Membership == event.MembershipJoin && evt.Sender == b.lp.GetClient().UserID {
|
||||||
// Handle membership events related to our own (bot) user first
|
|
||||||
|
|
||||||
switch evt.Content.AsMember().Membership {
|
|
||||||
case event.MembershipJoin:
|
|
||||||
b.onBotJoin(evt, hub)
|
b.onBotJoin(evt, hub)
|
||||||
}
|
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle membership events related to other users
|
// Potentially handle other membership events in the future
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bot) onMessage(evt *event.Event) {
|
func (b *Bot) onMessage(evt *event.Event) {
|
||||||
@@ -106,7 +92,7 @@ func (b *Bot) onEncryptedMessage(evt *event.Event) {
|
|||||||
func (b *Bot) onBotJoin(evt *event.Event, hub *sentry.Hub) {
|
func (b *Bot) onBotJoin(evt *event.Event, hub *sentry.Hub) {
|
||||||
// Workaround for membership=join events which are delivered to us twice,
|
// Workaround for membership=join events which are delivered to us twice,
|
||||||
// as described in this bug report: https://github.com/matrix-org/synapse/issues/9768
|
// as described in this bug report: https://github.com/matrix-org/synapse/issues/9768
|
||||||
_, exists := b.handledEvents.LoadOrStore(evt.ID, true)
|
_, exists := b.handledJoinEvents.LoadOrStore(evt.ID, true)
|
||||||
if exists {
|
if exists {
|
||||||
b.log.Info("Suppressing already handled event %s", evt.ID)
|
b.log.Info("Suppressing already handled event %s", evt.ID)
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user