Skip to content

Commit e9484d4

Browse files
authored
RM-247: Fix worker context (#126)
Handle worker context
1 parent 3effdaf commit e9484d4

10 files changed

Lines changed: 89 additions & 124 deletions

File tree

bot/button/handlers/admindebug/server/blacklistreason.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,14 @@ func (h *AdminDebugServerBlacklistReasonHandler) Execute(ctx *context.ButtonCont
4343
return
4444
}
4545

46+
worker, err := utils.WorkerForGuild(ctx, ctx.Worker(), guildId)
47+
if err != nil {
48+
ctx.HandleError(err)
49+
return
50+
}
51+
4652
// Get guild to fetch owner ID
47-
guild, err := ctx.Worker().GetGuild(guildId)
53+
guild, err := worker.GetGuild(guildId)
4854
if err != nil {
4955
ctx.HandleError(err)
5056
return

bot/button/handlers/admindebug/server/entitlements.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,14 @@ func (h *AdminDebugServerEntitlementsHandler) Execute(ctx *context.ButtonContext
4242
return
4343
}
4444

45+
worker, err := utils.WorkerForGuild(ctx, ctx.Worker(), guildId)
46+
if err != nil {
47+
ctx.HandleError(err)
48+
return
49+
}
50+
4551
// Get guild to fetch owner ID
46-
guild, err := ctx.Worker().GetGuild(guildId)
52+
guild, err := worker.GetGuild(guildId)
4753
if err != nil {
4854
ctx.HandleError(err)
4955
return

bot/button/handlers/admindebug/server/modals/permissions.go

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -82,38 +82,13 @@ func (h *AdminDebugServerPermissionsModalSubmitHandler) Execute(ctx *context.Mod
8282

8383
selectedValues := selectData.Values
8484

85-
// Get guild and settings
86-
botId, isWhitelabel, err := dbclient.Client.WhitelabelGuilds.GetBotByGuild(ctx, guildId)
85+
worker, err := utils.WorkerForGuild(ctx, ctx.Worker(), guildId)
8786
if err != nil {
8887
ctx.HandleError(err)
8988
return
9089
}
9190

92-
var worker *w.Context
93-
if isWhitelabel {
94-
bot, err := dbclient.Client.Whitelabel.GetByBotId(ctx, botId)
95-
if err != nil {
96-
ctx.HandleError(err)
97-
return
98-
}
99-
100-
if bot.BotId == 0 {
101-
ctx.HandleError(errors.New("bot not found"))
102-
return
103-
}
104-
105-
worker = &w.Context{
106-
Token: bot.Token,
107-
BotId: bot.BotId,
108-
IsWhitelabel: true,
109-
ShardId: 0,
110-
Cache: ctx.Worker().Cache,
111-
RateLimiter: nil,
112-
}
113-
} else {
114-
worker = ctx.Worker()
115-
}
116-
91+
// Get guild and settings
11792
settings, err := dbclient.Client.Settings.Get(ctx, guildId)
11893
if err != nil {
11994
ctx.HandleError(err)
@@ -126,7 +101,7 @@ func (h *AdminDebugServerPermissionsModalSubmitHandler) Execute(ctx *context.Mod
126101
return
127102
}
128103

129-
botMember, err := worker.GetGuildMember(guildId, ctx.Worker().BotId)
104+
botMember, err := worker.GetGuildMember(guildId, worker.BotId)
130105
if err != nil {
131106
ctx.HandleError(err)
132107
return

bot/button/handlers/admindebug/server/modals/ticketpermissions.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/TicketsBot-cloud/database"
1212
"github.com/TicketsBot-cloud/gdl/objects/interaction"
1313
"github.com/TicketsBot-cloud/gdl/objects/interaction/component"
14+
w "github.com/TicketsBot-cloud/worker"
1415
"github.com/TicketsBot-cloud/worker/bot/button/registry"
1516
"github.com/TicketsBot-cloud/worker/bot/button/registry/matcher"
1617
"github.com/TicketsBot-cloud/worker/bot/command"
@@ -94,8 +95,14 @@ func (h *AdminDebugServerTicketPermissionsModalSubmitHandler) Execute(ctx *conte
9495
return
9596
}
9697

98+
worker, err := utils.WorkerForGuild(ctx, ctx.Worker(), guildId)
99+
if err != nil {
100+
ctx.HandleError(err)
101+
return
102+
}
103+
97104
// Get guild info
98-
guild, err := ctx.Worker().GetGuild(guildId)
105+
guild, err := worker.GetGuild(guildId)
99106
if err != nil {
100107
ctx.HandleError(err)
101108
return
@@ -150,10 +157,10 @@ func (h *AdminDebugServerTicketPermissionsModalSubmitHandler) Execute(ctx *conte
150157
}
151158

152159
if isUser {
153-
result := checkUserTicketPermissions(ctx, guildId, guild.OwnerId, entityId, adminUsers, supportUsers, panels)
160+
result := checkUserTicketPermissions(ctx, worker, guildId, guild.OwnerId, entityId, adminUsers, supportUsers, panels)
154161
results = append(results, result)
155162
} else {
156-
result := checkRoleTicketPermissions(ctx, guildId, entityId, adminRoles, supportRoles, panels)
163+
result := checkRoleTicketPermissions(ctx, worker, guildId, entityId, adminRoles, supportRoles, panels)
157164
results = append(results, result)
158165
}
159166
}
@@ -173,7 +180,7 @@ func (h *AdminDebugServerTicketPermissionsModalSubmitHandler) Execute(ctx *conte
173180
}))
174181
}
175182

176-
func checkUserTicketPermissions(ctx *context.ModalContext, guildId, ownerId, userId uint64, adminUsers, supportUsers []uint64, panels []database.Panel) string {
183+
func checkUserTicketPermissions(ctx *context.ModalContext, worker *w.Context, guildId, ownerId, userId uint64, adminUsers, supportUsers []uint64, panels []database.Panel) string {
177184
var lines []string
178185

179186
// Ticket Permission Level
@@ -190,10 +197,10 @@ func checkUserTicketPermissions(ctx *context.ModalContext, guildId, ownerId, use
190197
lines = append(lines, ticketPermLevel)
191198

192199
// Check member roles for role-based permissions
193-
member, err := ctx.Worker().GetGuildMember(guildId, userId)
200+
member, err := worker.GetGuildMember(guildId, userId)
194201
if err == nil {
195202
// Get all guild roles for name lookups
196-
guildRoles, err := ctx.Worker().GetGuildRoles(guildId)
203+
guildRoles, err := worker.GetGuildRoles(guildId)
197204
roleMap := make(map[uint64]string)
198205
if err == nil {
199206
for _, role := range guildRoles {
@@ -300,11 +307,11 @@ func checkUserTicketPermissions(ctx *context.ModalContext, guildId, ownerId, use
300307
return fmt.Sprintf("**User:** <@%d>\n%s", userId, strings.Join(lines, "\n"))
301308
}
302309

303-
func checkRoleTicketPermissions(ctx *context.ModalContext, guildId, roleId uint64, adminRoles, supportRoles []uint64, panels []database.Panel) string {
310+
func checkRoleTicketPermissions(ctx *context.ModalContext, worker *w.Context, guildId, roleId uint64, adminRoles, supportRoles []uint64, panels []database.Panel) string {
304311
var lines []string
305312

306313
// Get role name
307-
guildRoles, err := ctx.Worker().GetGuildRoles(guildId)
314+
guildRoles, err := worker.GetGuildRoles(guildId)
308315
roleName := "Unknown Role"
309316
if err == nil {
310317
for _, role := range guildRoles {

bot/button/handlers/admindebug/server/modals/usertickets.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/TicketsBot-cloud/database"
1212
"github.com/TicketsBot-cloud/gdl/objects/interaction"
1313
"github.com/TicketsBot-cloud/gdl/objects/interaction/component"
14+
w "github.com/TicketsBot-cloud/worker"
1415
"github.com/TicketsBot-cloud/worker/bot/button/registry"
1516
"github.com/TicketsBot-cloud/worker/bot/button/registry/matcher"
1617
"github.com/TicketsBot-cloud/worker/bot/command"
@@ -93,6 +94,12 @@ func (h *AdminDebugServerUserTicketsModalSubmitHandler) Execute(ctx *context.Mod
9394
return
9495
}
9596

97+
worker, err := utils.WorkerForGuild(ctx, ctx.Worker(), guildId)
98+
if err != nil {
99+
ctx.HandleError(err)
100+
return
101+
}
102+
96103
// Get all open tickets for the guild
97104
allOpenTickets, err := dbclient.Client.Tickets.GetGuildOpenTickets(ctx, guildId)
98105
if err != nil {
@@ -104,7 +111,7 @@ func (h *AdminDebugServerUserTicketsModalSubmitHandler) Execute(ctx *context.Mod
104111
var results []string
105112

106113
for _, userId := range userIds {
107-
result := checkUserTickets(ctx, guildId, userId, allOpenTickets)
114+
result := checkUserTickets(ctx, worker, guildId, userId, allOpenTickets)
108115
results = append(results, result)
109116
}
110117

@@ -123,7 +130,7 @@ func (h *AdminDebugServerUserTicketsModalSubmitHandler) Execute(ctx *context.Mod
123130
}))
124131
}
125132

126-
func checkUserTickets(ctx *context.ModalContext, guildId, userId uint64, allOpenTickets []database.Ticket) string {
133+
func checkUserTickets(ctx *context.ModalContext, worker *w.Context, guildId, userId uint64, allOpenTickets []database.Ticket) string {
127134
var lines []string
128135

129136
// Get open ticket count
@@ -162,7 +169,7 @@ func checkUserTickets(ctx *context.ModalContext, guildId, userId uint64, allOpen
162169
channelMention := fmt.Sprintf("`%d`", *ticket.ChannelId)
163170

164171
if ticket.ChannelId != nil {
165-
_, err := ctx.Worker().GetChannel(*ticket.ChannelId)
172+
_, err := worker.GetChannel(*ticket.ChannelId)
166173
if err == nil {
167174
channelExists = true
168175
}

bot/button/handlers/admindebug/server/monitoredbots.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,16 @@ func (h *AdminDebugServerMonitoredBotsHandler) Execute(ctx *context.ButtonContex
4141
return
4242
}
4343

44+
worker, err := utils.WorkerForGuild(ctx, ctx.Worker(), guildId)
45+
if err != nil {
46+
ctx.HandleError(err)
47+
return
48+
}
49+
4450
var monitoredBotsPresent []string
4551

4652
for _, botId := range config.Conf.Bot.MonitoredBots {
47-
_, err = ctx.Worker().GetGuildMember(guildId, botId)
53+
_, err = worker.GetGuildMember(guildId, botId)
4854
if err == nil {
4955
botUser, err := ctx.Worker().GetUser(botId)
5056
if err == nil {

bot/button/handlers/admindebug/server/recache.go

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11
package server
22

33
import (
4-
"errors"
54
"fmt"
65
"strconv"
76
"strings"
87
"time"
98

109
permcache "github.com/TicketsBot-cloud/common/permission"
1110
"github.com/TicketsBot-cloud/gdl/objects/interaction/component"
12-
w "github.com/TicketsBot-cloud/worker"
1311
"github.com/TicketsBot-cloud/worker/bot/button/registry"
1412
"github.com/TicketsBot-cloud/worker/bot/button/registry/matcher"
1513
"github.com/TicketsBot-cloud/worker/bot/command"
1614
"github.com/TicketsBot-cloud/worker/bot/command/context"
1715
"github.com/TicketsBot-cloud/worker/bot/customisation"
18-
"github.com/TicketsBot-cloud/worker/bot/dbclient"
1916
"github.com/TicketsBot-cloud/worker/bot/redis"
2017
"github.com/TicketsBot-cloud/worker/bot/utils"
2118
)
@@ -38,7 +35,6 @@ func (h *AdminDebugServerRecacheHandler) Properties() registry.Properties {
3835
}
3936

4037
func (h *AdminDebugServerRecacheHandler) Execute(ctx *context.ButtonContext) {
41-
4238
if !utils.IsBotHelper(ctx.UserId()) {
4339
ctx.ReplyRaw(customisation.Red, "Error", "You do not have permission to use this button.")
4440
}
@@ -66,37 +62,12 @@ func (h *AdminDebugServerRecacheHandler) Execute(ctx *context.ButtonContext) {
6662
ctx.Worker().Cache.DeleteGuildChannels(ctx, guildId)
6763
ctx.Worker().Cache.DeleteGuildRoles(ctx, guildId)
6864

69-
botId, isWhitelabel, err := dbclient.Client.WhitelabelGuilds.GetBotByGuild(ctx, guildId)
65+
worker, err := utils.WorkerForGuild(ctx, ctx.Worker(), guildId)
7066
if err != nil {
7167
ctx.HandleError(err)
7268
return
7369
}
7470

75-
var worker *w.Context
76-
if isWhitelabel {
77-
bot, err := dbclient.Client.Whitelabel.GetByBotId(ctx, botId)
78-
if err != nil {
79-
ctx.HandleError(err)
80-
return
81-
}
82-
83-
if bot.BotId == 0 {
84-
ctx.HandleError(errors.New("bot not found"))
85-
return
86-
}
87-
88-
worker = &w.Context{
89-
Token: bot.Token,
90-
BotId: bot.BotId,
91-
IsWhitelabel: true,
92-
ShardId: 0,
93-
Cache: ctx.Worker().Cache,
94-
RateLimiter: nil, // Use http-proxy ratelimit functionality
95-
}
96-
} else {
97-
worker = ctx.Worker()
98-
}
99-
10071
guild, err := worker.GetGuild(guildId)
10172
if err != nil {
10273
ctx.HandleError(err)

bot/command/impl/admin/adminblacklist.go

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"github.com/TicketsBot-cloud/common/permission"
1010
"github.com/TicketsBot-cloud/gdl/objects/interaction"
1111
"github.com/TicketsBot-cloud/gdl/objects/interaction/component"
12-
"github.com/TicketsBot-cloud/worker"
1312
"github.com/TicketsBot-cloud/worker/bot/blacklist"
1413
"github.com/TicketsBot-cloud/worker/bot/command"
1514
"github.com/TicketsBot-cloud/worker/bot/command/registry"
@@ -75,35 +74,16 @@ func (AdminBlacklistCommand) Execute(ctx registry.CommandContext, guildIdRaw str
7574
}
7675

7776
// Check for whitelabel
78-
botId, isWhitelabel, err := dbclient.Client.WhitelabelGuilds.GetBotByGuild(ctx, guildId)
77+
worker, err := utils.WorkerForGuild(ctx, ctx.Worker(), guildId)
7978
if err != nil {
8079
ctx.HandleError(err)
8180
return
8281
}
8382

84-
var w *worker.Context
85-
if isWhitelabel {
86-
bot, err := dbclient.Client.Whitelabel.GetByBotId(ctx, botId)
87-
if err != nil {
88-
ctx.HandleError(err)
89-
return
90-
}
91-
92-
w = &worker.Context{
93-
Token: bot.Token,
94-
BotId: bot.BotId,
95-
IsWhitelabel: true,
96-
Cache: ctx.Worker().Cache,
97-
RateLimiter: nil, // Use http-proxy ratelimit functionality
98-
}
99-
} else {
100-
w = ctx.Worker()
101-
}
102-
10383
// Try to get owner
10484
var ownerId *uint64
10585
var botInGuild bool
106-
guild, err := w.GetGuild(guildId)
86+
guild, err := worker.GetGuild(guildId)
10787
if err == nil {
10888
ownerId = &guild.OwnerId
10989
botInGuild = true
@@ -142,7 +122,7 @@ func (AdminBlacklistCommand) Execute(ctx registry.CommandContext, guildIdRaw str
142122

143123
// Leave guild
144124
if botInGuild {
145-
if err := w.LeaveGuild(guildId); err != nil {
125+
if err := worker.LeaveGuild(guildId); err != nil {
146126
ctx.HandleError(err)
147127
return
148128
}

0 commit comments

Comments
 (0)