diff --git a/app/http/endpoints/api/emojis.go b/app/http/endpoints/api/emojis.go new file mode 100644 index 0000000..f6e7e85 --- /dev/null +++ b/app/http/endpoints/api/emojis.go @@ -0,0 +1,25 @@ +package api + +import ( + "github.com/TicketsBot/GoPanel/botcontext" + "github.com/TicketsBot/GoPanel/utils" + "github.com/gin-gonic/gin" +) + +func EmojisHandler(ctx *gin.Context) { + guildId := ctx.Keys["guildid"].(uint64) + + botContext, err := botcontext.ContextForGuild(guildId) + if err != nil { + ctx.JSON(500, utils.ErrorJson(err)) + return + } + + emojis, err := botContext.GetGuildEmojis(guildId) + if err != nil { + ctx.JSON(500, utils.ErrorJson(err)) + return + } + + ctx.JSON(200, emojis) +} diff --git a/app/http/server.go b/app/http/server.go index 9dffacc..825846d 100644 --- a/app/http/server.go +++ b/app/http/server.go @@ -75,6 +75,7 @@ func StartServer() { guildAuthApiSupport.GET("/premium", api.PremiumHandler) guildAuthApiSupport.GET("/user/:user", api.UserHandler) guildAuthApiSupport.GET("/roles", api.RolesHandler) + guildAuthApiSupport.GET("/emojis", rl(middleware.RateLimitTypeGuild, 5, time.Second*30), api.EmojisHandler) guildAuthApiSupport.GET("/members/search", rl(middleware.RateLimitTypeGuild, 5, time.Second), rl(middleware.RateLimitTypeGuild, 10, time.Second*30), diff --git a/botcontext/botcontext.go b/botcontext/botcontext.go index 8dd5500..068ad37 100644 --- a/botcontext/botcontext.go +++ b/botcontext/botcontext.go @@ -9,6 +9,7 @@ import ( "github.com/TicketsBot/database" "github.com/rxdn/gdl/objects/channel" "github.com/rxdn/gdl/objects/guild" + "github.com/rxdn/gdl/objects/guild/emoji" "github.com/rxdn/gdl/objects/member" "github.com/rxdn/gdl/objects/user" "github.com/rxdn/gdl/rest" @@ -100,6 +101,19 @@ func (ctx BotContext) GetGuildRoles(guildId uint64) (roles []guild.Role, err err return } +func (ctx BotContext) GetGuildEmojis(guildId uint64) (emojis []emoji.Emoji, err error) { + if emojis := cache.Instance.GetGuildEmojis(guildId); len(emojis) > 0 { + return emojis, nil + } + + emojis, err = rest.ListGuildEmojis(ctx.Token, ctx.RateLimiter, guildId) + if err == nil { + go cache.Instance.StoreEmojis(emojis, guildId) + } + + return +} + func (ctx BotContext) SearchMembers(guildId uint64, query string) (members []member.Member, err error) { data := rest.SearchGuildMembersData{ Query: query, diff --git a/frontend/src/components/EmojiItem.svelte b/frontend/src/components/EmojiItem.svelte new file mode 100644 index 0000000..1a6d6fc --- /dev/null +++ b/frontend/src/components/EmojiItem.svelte @@ -0,0 +1,97 @@ + + + + +
+ {item.name} + :{item.name}: +
\ No newline at end of file diff --git a/frontend/src/components/form/EmojiInput.svelte b/frontend/src/components/form/EmojiInput.svelte index 14a1e53..d26c9ff 100644 --- a/frontend/src/components/form/EmojiInput.svelte +++ b/frontend/src/components/form/EmojiInput.svelte @@ -1,5 +1,7 @@
- + {#if label !== undefined} + + {/if}
{#if !disabled} diff --git a/frontend/src/components/form/RoleSelect.svelte b/frontend/src/components/form/RoleSelect.svelte index a7b8399..d9f7452 100644 --- a/frontend/src/components/form/RoleSelect.svelte +++ b/frontend/src/components/form/RoleSelect.svelte @@ -1,6 +1,6 @@ -{#if label !== undefined} +`{#if label !== undefined} -{/if} +{/if}`
+ - - - {#each forms as form} - - {/each} - +
+ +
+
+ + console.log('a')}> +
+ {#if data.use_custom_emoji} + +
+