Disable /open
This commit is contained in:
parent
d35ae1f243
commit
696d09ddb8
@ -56,7 +56,7 @@ func GetGuilds(ctx *gin.Context) {
|
||||
fakeGuild := guild.Guild{
|
||||
Id: g.GuildId,
|
||||
Owner: g.Owner,
|
||||
Permissions: uint64(g.UserPermissions),
|
||||
Permissions: g.UserPermissions,
|
||||
}
|
||||
|
||||
if g.Owner {
|
||||
|
@ -1,11 +1,17 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"github.com/TicketsBot/GoPanel/botcontext"
|
||||
dbclient "github.com/TicketsBot/GoPanel/database"
|
||||
"github.com/TicketsBot/GoPanel/rpc/cache"
|
||||
"github.com/TicketsBot/database"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/rxdn/gdl/objects/channel"
|
||||
"github.com/rxdn/gdl/objects/interaction"
|
||||
"github.com/rxdn/gdl/rest"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
func UpdateSettingsHandler(ctx *gin.Context) {
|
||||
@ -15,7 +21,7 @@ func UpdateSettingsHandler(ctx *gin.Context) {
|
||||
if err := ctx.BindJSON(&settings); err != nil {
|
||||
ctx.AbortWithStatusJSON(400, gin.H{
|
||||
"success": false,
|
||||
"error": err.Error(),
|
||||
"error": err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
@ -24,7 +30,7 @@ func UpdateSettingsHandler(ctx *gin.Context) {
|
||||
channels := cache.Instance.GetGuildChannels(guildId)
|
||||
|
||||
// TODO: Errors
|
||||
settings.updateSettings(guildId)
|
||||
err := settings.updateSettings(guildId)
|
||||
validPrefix := settings.updatePrefix(guildId)
|
||||
validWelcomeMessage := settings.updateWelcomeMessage(guildId)
|
||||
validTicketLimit := settings.updateTicketLimit(guildId)
|
||||
@ -37,18 +43,68 @@ func UpdateSettingsHandler(ctx *gin.Context) {
|
||||
settings.updateFeedbackEnabled(guildId)
|
||||
|
||||
ctx.JSON(200, gin.H{
|
||||
"prefix": validPrefix,
|
||||
"prefix": validPrefix,
|
||||
"welcome_message": validWelcomeMessage,
|
||||
"ticket_limit": validTicketLimit,
|
||||
"ticket_limit": validTicketLimit,
|
||||
"archive_channel": validArchiveChannel,
|
||||
"category": validCategory,
|
||||
"naming_scheme": validNamingScheme,
|
||||
"category": validCategory,
|
||||
"naming_scheme": validNamingScheme,
|
||||
"error": err,
|
||||
})
|
||||
}
|
||||
|
||||
// TODO: Return error
|
||||
func (s *Settings) updateSettings(guildId uint64) {
|
||||
go dbclient.Client.Settings.Set(guildId, s.Settings)
|
||||
func (s *Settings) updateSettings(guildId uint64) error {
|
||||
group, _ := errgroup.WithContext(context.Background())
|
||||
|
||||
group.Go(func() error {
|
||||
return dbclient.Client.Settings.Set(guildId, s.Settings)
|
||||
})
|
||||
|
||||
group.Go(func() error {
|
||||
return setOpenCommandPermissions(guildId, s.DisableOpenCommand)
|
||||
})
|
||||
|
||||
return group.Wait()
|
||||
}
|
||||
|
||||
func setOpenCommandPermissions(guildId uint64, disabled bool) error {
|
||||
ctx, err := botcontext.ContextForGuild(guildId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
commands, err := rest.GetGlobalCommands(ctx.Token, ctx.RateLimiter, ctx.BotId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var commandId uint64
|
||||
for _, cmd := range commands {
|
||||
if cmd.Name == "open" {
|
||||
commandId = cmd.Id
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if commandId == 0 {
|
||||
return errors.New("open command not found")
|
||||
}
|
||||
|
||||
data := rest.CommandWithPermissionsData{
|
||||
Id: commandId,
|
||||
ApplicationId: ctx.BotId,
|
||||
GuildId: guildId,
|
||||
Permissions: []interaction.ApplicationCommandPermissions{
|
||||
{
|
||||
Id: guildId,
|
||||
Type: interaction.ApplicationCommandPermissionTypeRole,
|
||||
Permission: !disabled,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
_, err = rest.EditCommandPermissions(ctx.Token, ctx.RateLimiter, ctx.BotId, guildId, commandId, data)
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *Settings) updatePrefix(guildId uint64) bool {
|
||||
@ -113,6 +169,7 @@ func (s *Settings) updateArchiveChannel(channels []channel.Channel, guildId uint
|
||||
}
|
||||
|
||||
var validScheme = []database.NamingScheme{database.Id, database.Username}
|
||||
|
||||
func (s *Settings) updateNamingScheme(guildId uint64) bool {
|
||||
var valid bool
|
||||
for _, scheme := range validScheme {
|
||||
@ -142,7 +199,6 @@ func (s *Settings) updateCloseConfirmation(guildId uint64) {
|
||||
go dbclient.Client.CloseConfirmation.Set(guildId, s.CloseConfirmation)
|
||||
}
|
||||
|
||||
|
||||
func (s *Settings) updateFeedbackEnabled(guildId uint64) {
|
||||
go dbclient.Client.FeedbackEnabled.Set(guildId, s.FeedbackEnabled)
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ import (
|
||||
)
|
||||
|
||||
type BotContext struct {
|
||||
BotId uint64
|
||||
Token string
|
||||
RateLimiter *ratelimit.Ratelimiter
|
||||
}
|
||||
@ -113,7 +114,6 @@ func (ctx BotContext) SearchMembers(guildId uint64, query string) (members []mem
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
func (ctx BotContext) ListMembers(guildId uint64) (members []member.Member, err error) {
|
||||
data := rest.ListGuildMembersData{
|
||||
Limit: 100,
|
||||
|
@ -22,9 +22,11 @@ func ContextForGuild(guildId uint64) (ctx BotContext, err error) {
|
||||
return ctx, err
|
||||
}
|
||||
|
||||
ctx.BotId = res.BotId
|
||||
ctx.Token = res.Token
|
||||
keyPrefix = fmt.Sprintf("ratelimiter:%d", whitelabelBotId)
|
||||
} else {
|
||||
ctx.BotId = config.Conf.Bot.Id
|
||||
ctx.Token = config.Conf.Bot.Token
|
||||
keyPrefix = "ratelimiter:public"
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ type (
|
||||
}
|
||||
|
||||
Bot struct {
|
||||
Id uint64
|
||||
Token string
|
||||
PremiumLookupProxyUrl string `toml:"premium-lookup-proxy-url"`
|
||||
PremiumLookupProxyKey string `toml:"premium-lookup-proxy-key"`
|
||||
@ -119,6 +120,7 @@ func fromEnvvar() {
|
||||
rateLimitMax, _ := strconv.Atoi(os.Getenv("RATELIMIT_MAX"))
|
||||
sessionThreads, _ := strconv.Atoi(os.Getenv("SESSION_DB_THREADS"))
|
||||
oauthId, _ := strconv.ParseUint(os.Getenv("OAUTH_ID"), 10, 64)
|
||||
botId, _ := strconv.ParseUint(os.Getenv("BOT_ID"), 10, 64)
|
||||
redisPort, _ := strconv.Atoi(os.Getenv("REDIS_PORT"))
|
||||
redisThreads, _ := strconv.Atoi(os.Getenv("REDIS_THREADS"))
|
||||
|
||||
@ -140,7 +142,7 @@ func fromEnvvar() {
|
||||
},
|
||||
Secret: os.Getenv("JWT_SECRET"),
|
||||
TrustedProxies: strings.Split(os.Getenv("TRUSTED_PROXIES"), ","),
|
||||
RealIpHeaders: strings.Split(os.Getenv("REAL_IP_HEADERS"), ","),
|
||||
RealIpHeaders: strings.Split(os.Getenv("REAL_IP_HEADERS"), ","),
|
||||
},
|
||||
Oauth: Oauth{
|
||||
Id: oauthId,
|
||||
@ -151,6 +153,7 @@ func fromEnvvar() {
|
||||
Uri: os.Getenv("DATABASE_URI"),
|
||||
},
|
||||
Bot: Bot{
|
||||
Id: botId,
|
||||
Token: os.Getenv("BOT_TOKEN"),
|
||||
PremiumLookupProxyUrl: os.Getenv("PREMIUM_PROXY_URL"),
|
||||
PremiumLookupProxyKey: os.Getenv("PREMIUM_PROXY_KEY"),
|
||||
|
@ -33,3 +33,4 @@
|
||||
- REDIS_THREADS
|
||||
- CACHE_URI
|
||||
- TRUSTED_PROXIES
|
||||
- BOT_ID
|
||||
|
@ -23,6 +23,7 @@
|
||||
<NamingScheme col4=true bind:value={data.naming_scheme}/>
|
||||
<Checkbox label="Enable User Feedback" col4=true bind:value={data.feedback_enabled}/>
|
||||
<Checkbox label="Hide Claim Button" col4=true bind:value={data.hide_claim_button}/>
|
||||
<Checkbox label="Disable /open Command" col4=true bind:value={data.disable_open_command}/>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-1">
|
||||
|
2
go.mod
2
go.mod
@ -6,7 +6,7 @@ require (
|
||||
github.com/BurntSushi/toml v0.3.1
|
||||
github.com/TicketsBot/archiverclient v0.0.0-20210220155137-a562b2f1bbbb
|
||||
github.com/TicketsBot/common v0.0.0-20210727134627-35eb7ed03a44
|
||||
github.com/TicketsBot/database v0.0.0-20210801121328-1e2e1c5e3346
|
||||
github.com/TicketsBot/database v0.0.0-20210808170243-bcb4f117ed18
|
||||
github.com/TicketsBot/worker v0.0.0-20210727130432-3df3cd1246a3
|
||||
github.com/apex/log v1.1.2
|
||||
github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect
|
||||
|
Loading…
x
Reference in New Issue
Block a user