Subscribe to bridged guilds on connect
This commit is contained in:
2
go.mod
2
go.mod
@@ -34,4 +34,4 @@ require (
|
||||
maunium.net/go/mauflag v1.0.0 // indirect
|
||||
)
|
||||
|
||||
replace github.com/bwmarrin/discordgo => github.com/beeper/discordgo v0.0.0-20230129125832-37978ff8e399
|
||||
replace github.com/bwmarrin/discordgo => github.com/beeper/discordgo v0.0.0-20230204115541-789543fc10ab
|
||||
|
||||
4
go.sum
4
go.sum
@@ -1,6 +1,6 @@
|
||||
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
|
||||
github.com/beeper/discordgo v0.0.0-20230129125832-37978ff8e399 h1:3GZhhiyeXo/r40NmaQddBpCfosSSIrSrqZBLXJWrtYc=
|
||||
github.com/beeper/discordgo v0.0.0-20230129125832-37978ff8e399/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
|
||||
github.com/beeper/discordgo v0.0.0-20230204115541-789543fc10ab h1:TYb2GpqpkbhzaWLXh3YER0C/nzGThxgCRRuJbeFM0L0=
|
||||
github.com/beeper/discordgo v0.0.0-20230204115541-789543fc10ab/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
|
||||
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
|
||||
28
user.go
28
user.go
@@ -521,6 +521,7 @@ func (user *User) Connect() error {
|
||||
user.Session = session
|
||||
|
||||
user.Session.AddHandler(user.readyHandler)
|
||||
user.Session.AddHandler(user.resumeHandler)
|
||||
user.Session.AddHandler(user.connectedHandler)
|
||||
user.Session.AddHandler(user.disconnectedHandler)
|
||||
user.Session.AddHandler(user.invalidAuthHandler)
|
||||
@@ -613,9 +614,36 @@ func (user *User) readyHandler(_ *discordgo.Session, r *discordgo.Ready) {
|
||||
user.Update()
|
||||
}
|
||||
|
||||
go user.subscribeGuilds(2 * time.Second)
|
||||
|
||||
user.BridgeState.Send(status.BridgeState{StateEvent: status.StateConnected})
|
||||
}
|
||||
|
||||
func (user *User) subscribeGuilds(delay time.Duration) {
|
||||
for _, guildMeta := range user.Session.State.Guilds {
|
||||
guild := user.bridge.GetGuildByID(guildMeta.ID, false)
|
||||
if guild != nil && guild.MXID != "" {
|
||||
user.log.Debugfln("Subscribing to guild %s", guild.ID)
|
||||
dat := discordgo.GuildSubscribeData{
|
||||
GuildID: guild.ID,
|
||||
Typing: true,
|
||||
Activities: true,
|
||||
Threads: true,
|
||||
}
|
||||
err := user.Session.SubscribeGuild(dat)
|
||||
if err != nil {
|
||||
user.log.Warnfln("Failed to subscribe to %s: %v", guild.ID, err)
|
||||
}
|
||||
time.Sleep(delay)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (user *User) resumeHandler(_ *discordgo.Session, r *discordgo.Resumed) {
|
||||
user.log.Debugln("Discord connection resumed")
|
||||
user.subscribeGuilds(0 * time.Second)
|
||||
}
|
||||
|
||||
func (user *User) addPrivateChannelToSpace(portal *Portal) bool {
|
||||
if portal.MXID == "" {
|
||||
return false
|
||||
|
||||
Reference in New Issue
Block a user