Skip to content

Commit

Permalink
Merge pull request #108 from DisgoOrg/feature/modals
Browse files Browse the repository at this point in the history
modals
  • Loading branch information
topi314 authored Feb 11, 2022
2 parents 8319c42 + 7778f66 commit 6b07b5f
Show file tree
Hide file tree
Showing 26 changed files with 812 additions and 692 deletions.
2 changes: 1 addition & 1 deletion _examples/application_commands/gateway/example.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ func main() {
func commandListener(event *events.ApplicationCommandInteractionEvent) {
data := event.SlashCommandInteractionData()
if data.CommandName == "say" {
err := event.Create(discord.NewMessageCreateBuilder().
err := event.CreateMessage(discord.NewMessageCreateBuilder().
SetContent(*data.Options.String("message")).
Build(),
)
Expand Down
2 changes: 1 addition & 1 deletion _examples/application_commands/http/example.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func main() {
func commandListener(event *events.ApplicationCommandInteractionEvent) {
data := event.SlashCommandInteractionData()
if data.CommandName == "say" {
err := event.Create(discord.NewMessageCreateBuilder().
err := event.CreateMessage(discord.NewMessageCreateBuilder().
SetContent(*data.Options.String("message")).
Build(),
)
Expand Down
2 changes: 1 addition & 1 deletion _examples/components/example.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func main() {
},
OnComponentInteraction: func(event *events.ComponentInteractionEvent) {
if event.ButtonInteractionData().CustomID == "danger" {
_ = event.Create(discord.NewMessageCreateBuilder().SetEphemeral(true).SetContent("Ey that was danger").Build())
_ = event.CreateMessage(discord.NewMessageCreateBuilder().SetEphemeral(true).SetContent("Ey that was danger").Build())
}
},
}),
Expand Down
82 changes: 0 additions & 82 deletions _examples/test/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,6 @@ var commands = []discord.ApplicationCommandCreate{
Description: "return the guild & your locale",
DefaultPermission: true,
},
discord.SlashCommandCreate{
Name: "eval",
Description: "runs some go code",
DefaultPermission: true,
Options: []discord.ApplicationCommandOption{
discord.ApplicationCommandOptionString{
Name: "code",
Description: "the code to eval",
Required: true,
},
},
},
discord.SlashCommandCreate{
Name: "test",
Description: "test",
Expand All @@ -46,76 +34,6 @@ var commands = []discord.ApplicationCommandCreate{
},
},
},
discord.SlashCommandCreate{
Name: "attachment-test",
Description: "test attachment upload",
Options: []discord.ApplicationCommandOption{
discord.ApplicationCommandOptionAttachment{
Name: "test",
Description: "test attachment",
Required: true,
},
},
DefaultPermission: true,
},
discord.SlashCommandCreate{
Name: "addrole",
Description: "This command adds a role to a member",
DefaultPermission: true,
Options: []discord.ApplicationCommandOption{
discord.ApplicationCommandOptionUser{
Name: "member",
Description: "The member to add a role to",
Required: true,
},
discord.ApplicationCommandOptionRole{
Name: "role",
Description: "The role to add to a member",
Required: true,
},
},
},
discord.SlashCommandCreate{
Name: "removerole",
Description: "This command removes a role from a member",
DefaultPermission: true,
Options: []discord.ApplicationCommandOption{
discord.ApplicationCommandOptionUser{
Name: "member",
Description: "The member to removes a role from",
Required: true,
},
discord.ApplicationCommandOptionRole{
Name: "role",
Description: "The role to removes from a member",
Required: true,
},
},
},
discord.SlashCommandCreate{
Name: "root",
Description: "root command",
DefaultPermission: true,
Options: []discord.ApplicationCommandOption{
discord.ApplicationCommandOptionSubCommandGroup{
Name: "group",
Description: "group command",
Options: []discord.ApplicationCommandOptionSubCommand{
{
Name: "sub",
Description: "sub command",
Options: []discord.ApplicationCommandOption{
discord.ApplicationCommandOptionString{
Name: "test",
Description: "test",
Required: true,
},
},
},
},
},
},
},
}

func registerCommands(bot *core.Bot) {
Expand Down
12 changes: 2 additions & 10 deletions _examples/test/examplebot.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,9 @@ import (
"github.com/DisgoOrg/snowflake"
)

const (
red = 16711680
orange = 16562691
green = 65280
)

var (
token = os.Getenv("disgo_token")
guildID = snowflake.GetSnowflakeEnv("disgo_test_guild_id")
adminRoleID = snowflake.GetSnowflakeEnv("disgo_admin_role_id")
testRoleID = snowflake.GetSnowflakeEnv("disgo_test_role_id")
token = os.Getenv("disgo_token")
guildID = snowflake.GetSnowflakeEnv("disgo_test_guild_id")

//go:embed gopher.png
gopher []byte
Expand Down
1 change: 0 additions & 1 deletion _examples/test/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ require (
github.com/DisgoOrg/disgo v0.5.6
github.com/DisgoOrg/log v1.1.3
github.com/DisgoOrg/snowflake v1.0.4
github.com/PaesslerAG/gval v1.1.1
)

require (
Expand Down
4 changes: 0 additions & 4 deletions _examples/test/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@ github.com/DisgoOrg/log v1.1.3 h1:UN0ZfmPZ7yhCCDQ7iVvIedvZ2zEexNS5Ek76GBuffOE=
github.com/DisgoOrg/log v1.1.3/go.mod h1:tSMofXaNhQNvzLRoL4tAiCG9yGY1ES5DLvduh7e9GRU=
github.com/DisgoOrg/snowflake v1.0.4 h1:hgeXSaXRDVdoNJ0rfHXyVsgxQMzctP346S5WXlBmoOU=
github.com/DisgoOrg/snowflake v1.0.4/go.mod h1:jIQVlVmElm2OGt6v52ITf/71ODaU09chUCflxt8+3yM=
github.com/PaesslerAG/gval v1.1.1 h1:4d7pprU9876+m3rc08X33UjGip8oV1kkm8Gh5GBuTss=
github.com/PaesslerAG/gval v1.1.1/go.mod h1:Fa8gfkCmUsELXgayr8sfL/sw+VzCVoa03dcOcR/if2w=
github.com/PaesslerAG/jsonpath v0.1.0 h1:gADYeifvlqK3R3i2cR5B4DGgxLXIPb3TRTH1mGi0jPI=
github.com/PaesslerAG/jsonpath v0.1.0/go.mod h1:4BzmtoM/PI8fPO4aQGIusjGxGir2BzcV0grWtFzq1Y8=
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=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand Down
169 changes: 65 additions & 104 deletions _examples/test/listeners.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,51 +2,91 @@ package main

import (
"bytes"
"fmt"
"strconv"
"strings"
"time"

"github.com/DisgoOrg/disgo/core/events"

"github.com/DisgoOrg/disgo/core"
"github.com/DisgoOrg/disgo/core/events"
"github.com/DisgoOrg/disgo/discord"
"github.com/DisgoOrg/log"
"github.com/PaesslerAG/gval"
)

var listener = &events.ListenerAdapter{
OnGuildMessageCreate: messageListener,
OnApplicationCommandInteraction: applicationCommandListener,
OnComponentInteraction: componentListener,
OnModalSubmit: modalListener,
}

func modalListener(event *events.ModalSubmitInteractionEvent) {
switch event.Data.CustomID {
case "test1":
value := event.Data.Components[0].Components()[0].(discord.TextInputComponent).Value
_ = event.CreateMessage(discord.MessageCreate{Content: value})

case "test2":
value := event.Data.Components[0].Components()[0].(discord.TextInputComponent).Value
_ = event.DeferCreateMessage(false)
go func() {
time.Sleep(time.Second * 5)
_, _ = event.UpdateOriginalMessage(discord.MessageUpdate{Content: &value})
}()

case "test3":
value := event.Data.Components[0].Components()[0].(discord.TextInputComponent).Value
_ = event.UpdateMessage(discord.MessageUpdate{Content: &value})

case "test4":
_ = event.DeferUpdateMessage()
}
}

func componentListener(event *events.ComponentInteractionEvent) {
switch data := event.Data.(type) {
case *core.ButtonInteractionData:
switch data.CustomID {
case core.ButtonInteractionData:
ids := strings.Split(data.CustomID.String(), ":")
switch ids[0] {
case "modal":
_ = event.CreateModal(discord.ModalCreate{
CustomID: discord.CustomID("test" + ids[1]),
Title: "Test" + ids[1] + " Modal",
Components: []discord.ContainerComponent{
discord.ActionRowComponent{
discord.TextInputComponent{
CustomID: "test_input",
Style: discord.TextInputStyleShort,
Label: "qwq",
Required: true,
Placeholder: "test placeholder",
Value: "uwu",
},
},
},
})

case "test1":
_ = event.Create(discord.NewMessageCreateBuilder().
_ = event.CreateMessage(discord.NewMessageCreateBuilder().
SetContent(data.CustomID.String()).
Build(),
)

case "test2":
_ = event.DeferCreate(false)
_ = event.DeferCreateMessage(false)

case "test3":
_ = event.DeferUpdate()
_ = event.DeferUpdateMessage()

case "test4":
_ = event.Update(discord.NewMessageUpdateBuilder().
_ = event.UpdateMessage(discord.NewMessageUpdateBuilder().
SetContent(data.CustomID.String()).
Build(),
)
}

case *core.SelectMenuInteractionData:
case core.SelectMenuInteractionData:
switch data.CustomID {
case "test3":
if err := event.DeferUpdate(); err != nil {
if err := event.DeferUpdateMessage(); err != nil {
log.Errorf("error sending interaction response: %s", err)
}
_, _ = event.CreateFollowupMessage(discord.NewMessageCreateBuilder().
Expand All @@ -62,112 +102,33 @@ func applicationCommandListener(event *events.ApplicationCommandInteractionEvent
data := event.SlashCommandInteractionData()
switch data.CommandName {
case "locale":
err := event.Create(discord.NewMessageCreateBuilder().
err := event.CreateMessage(discord.NewMessageCreateBuilder().
SetContentf("Guild Locale: %s\nLocale: %s", event.GuildLocale, event.Locale).
Build(),
)
if err != nil {
event.Bot().Logger.Error("error on sending response: ", err)
}

case "eval":
go func() {
code := *data.Options.String("code")
embed := discord.NewEmbedBuilder().
SetColor(orange).
AddField("Status", "...", true).
AddField("Time", "...", true).
AddField("Code", "```go\n"+code+"\n```", false).
AddField("Output", "```\n...\n```", false)
_ = event.Create(discord.NewMessageCreateBuilder().SetEmbeds(embed.Build()).Build())

start := time.Now()
output, err := gval.Evaluate(code, map[string]interface{}{
"bot": event.Bot(),
"event": event,
})

elapsed := time.Since(start)
embed.SetField(1, "Time", strconv.Itoa(int(elapsed.Milliseconds()))+"ms", true)

if err != nil {
_, err = event.UpdateResponse(discord.NewMessageUpdateBuilder().
SetEmbeds(embed.
SetColor(red).
SetField(0, "Status", "Failed", true).
SetField(3, "Output", "```"+err.Error()+"```", false).
Build(),
).
Build(),
)
if err != nil {
log.Errorf("error sending interaction response: %s", err)
}
return
}
_, err = event.UpdateResponse(discord.NewMessageUpdateBuilder().
SetEmbeds(embed.
SetColor(green).
SetField(0, "Status", "Success", true).
SetField(3, "Output", "```"+fmt.Sprintf("%+v", output)+"```", false).
Build(),
).
Build(),
)
if err != nil {
log.Errorf("error sending interaction response: %s", err)
}
}()

case "say":
_ = event.Create(discord.NewMessageCreateBuilder().
_ = event.CreateMessage(discord.NewMessageCreateBuilder().
SetContent(*data.Options.String("message")).
SetEphemeral(*data.Options.Bool("ephemeral")).
ClearAllowedMentions().
Build(),
)

case "test":
go func() {
_ = event.DeferCreate(true)
members, err := event.Guild().RequestMembersWithQuery("", 0)
if err != nil {
_, _ = event.UpdateResponse(discord.NewMessageUpdateBuilder().SetContentf("failed to load members. error: %s", err).Build())
return
}
_, _ = event.UpdateResponse(discord.NewMessageUpdateBuilder().
SetContentf("loaded %d members", len(members)).
Build(),
)
}()

case "addrole":
user := data.Options.User("member")
role := data.Options.Role("role")

if err := event.Bot().RestServices.GuildService().AddMemberRole(*event.GuildID, user.ID, role.ID); err == nil {
_ = event.Create(discord.NewMessageCreateBuilder().AddEmbeds(
discord.NewEmbedBuilder().SetColor(green).SetDescriptionf("Added %s to %s", role, user).Build(),
).Build())
} else {
_ = event.Create(discord.NewMessageCreateBuilder().AddEmbeds(
discord.NewEmbedBuilder().SetColor(red).SetDescriptionf("Failed to add %s to %s", role, user).Build(),
).Build())
}

case "removerole":
user := data.Options.User("member")
role := data.Options.Role("role")

if err := event.Bot().RestServices.GuildService().RemoveMemberRole(*event.GuildID, user.ID, role.ID); err == nil {
_ = event.Create(discord.NewMessageCreateBuilder().AddEmbeds(
discord.NewEmbedBuilder().SetColor(65280).SetDescriptionf("Removed %s from %s", role, user).Build(),
).Build())
} else {
_ = event.Create(discord.NewMessageCreateBuilder().AddEmbeds(
discord.NewEmbedBuilder().SetColor(16711680).SetDescriptionf("Failed to remove %s from %s", role, user).Build(),
).Build())
}
_ = event.CreateMessage(discord.NewMessageCreateBuilder().
SetContent("test").
AddActionRow(
discord.NewPrimaryButton("test1", "modal:1"),
discord.NewPrimaryButton("test2", "modal:2"),
discord.NewPrimaryButton("test3", "modal:3"),
discord.NewPrimaryButton("test4", "modal:4"),
).
Build(),
)
}
}

Expand Down
Loading

0 comments on commit 6b07b5f

Please sign in to comment.