Adjust some calls for bot accounts

This commit is contained in:
Tulir Asokan
2023-02-27 01:12:06 +02:00
parent ce4d05bb11
commit 71d1689776
3 changed files with 24 additions and 12 deletions

View File

@@ -1548,6 +1548,10 @@ func (portal *Portal) HandleMatrixReadReceipt(brUser bridge.User, eventID id.Eve
return return
} }
} }
if !sender.Session.IsUser {
// Drop read receipts from bot users (after checking for the thread auto-join stuff)
return
}
msg := portal.bridge.DB.Message.GetByMXID(portal.Key, eventID) msg := portal.bridge.DB.Message.GetByMXID(portal.Key, eventID)
if msg == nil { if msg == nil {
msg = portal.bridge.DB.Message.GetClosestBefore(portal.Key, discordThreadID, receipt.Timestamp) msg = portal.bridge.DB.Message.GetClosestBefore(portal.Key, discordThreadID, receipt.Timestamp)

View File

@@ -79,7 +79,12 @@ func (thread *Thread) Join(user *User) {
return return
} }
user.log.Debugfln("Joining thread %s@%s", thread.ID, thread.ParentID) user.log.Debugfln("Joining thread %s@%s", thread.ID, thread.ParentID)
err := user.Session.ThreadJoinWithLocation(thread.ID, discordgo.ThreadJoinLocationContextMenu) var err error
if user.Session.IsUser {
err = user.Session.ThreadJoinWithLocation(thread.ID, discordgo.ThreadJoinLocationContextMenu)
} else {
err = user.Session.ThreadJoin(thread.ID)
}
if err != nil { if err != nil {
user.log.Errorfln("Error joining thread %s@%s: %v", thread.ID, thread.ParentID, err) user.log.Errorfln("Error joining thread %s@%s: %v", thread.ID, thread.ParentID, err)
} else { } else {

25
user.go
View File

@@ -562,8 +562,6 @@ func (user *User) Connect() error {
user.Session.AddHandler(user.interactionSuccessHandler) user.Session.AddHandler(user.interactionSuccessHandler)
user.Session.Identify.Presence.Status = "online"
return user.Session.Open() return user.Session.Open()
} }
@@ -637,6 +635,9 @@ func (user *User) readyHandler(_ *discordgo.Session, r *discordgo.Ready) {
} }
func (user *User) subscribeGuilds(delay time.Duration) { func (user *User) subscribeGuilds(delay time.Duration) {
if !user.Session.IsUser {
return
}
for _, guildMeta := range user.Session.State.Guilds { for _, guildMeta := range user.Session.State.Guilds {
guild := user.bridge.GetGuildByID(guildMeta.ID, false) guild := user.bridge.GetGuildByID(guildMeta.ID, false)
if guild != nil && guild.MXID != "" { if guild != nil && guild.MXID != "" {
@@ -1172,15 +1173,17 @@ func (user *User) bridgeGuild(guildID string, everything bool) error {
} }
guild.Update() guild.Update()
user.log.Debugfln("Subscribing to guild %s after bridging", guild.ID) if user.Session.IsUser {
err = user.Session.SubscribeGuild(discordgo.GuildSubscribeData{ user.log.Debugfln("Subscribing to guild %s after bridging", guild.ID)
GuildID: guild.ID, err = user.Session.SubscribeGuild(discordgo.GuildSubscribeData{
Typing: true, GuildID: guild.ID,
Activities: true, Typing: true,
Threads: true, Activities: true,
}) Threads: true,
if err != nil { })
user.log.Warnfln("Failed to subscribe to %s: %v", guild.ID, err) if err != nil {
user.log.Warnfln("Failed to subscribe to %s: %v", guild.ID, err)
}
} }
return nil return nil