From 2c8b95e3125b5cff6320e67ae002e130a31acca9 Mon Sep 17 00:00:00 2001 From: ikafly144 Date: Tue, 29 Aug 2023 19:40:33 +0900 Subject: [PATCH] =?UTF-8?q?=E3=81=84=E3=82=8D=E3=82=93=E3=81=AA=E5=BD=B9?= =?UTF-8?q?=E8=81=B7=E3=83=91=E3=83=8D=E3=83=AB=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ikafly144 --- bot/commands/message_other.go | 13 ++--------- bot/commands/role.go | 44 +++++++++++------------------------ 2 files changed, 16 insertions(+), 41 deletions(-) diff --git a/bot/commands/message_other.go b/bot/commands/message_other.go index 274b4723..9e638ff2 100644 --- a/bot/commands/message_other.go +++ b/bot/commands/message_other.go @@ -9,7 +9,6 @@ import ( "github.com/sabafly/disgo/events" "github.com/sabafly/gobot/bot/client" botlib "github.com/sabafly/sabafly-lib/v2/bot" - "github.com/sabafly/sabafly-lib/v2/emoji" "github.com/sabafly/sabafly-lib/v2/handler" "github.com/sabafly/sabafly-lib/v2/translate" ) @@ -59,22 +58,14 @@ func messageOtherHandler(b *botlib.Bot[*client.Client]) handler.CommandHandler { func rolePanelConvertCheck(message discord.Message) bool { switch message.Author.ID { - case 895912135039803402, 1138119538190340146, 1137367652482957313, 971523089550671953: + case 895912135039803402, 1138119538190340146, 1137367652482957313, 971523089550671953 /*役職パネルv3*/, 917780792032251904 /*役職ボット*/, 669817785932578826 /*陽菜*/, 716496407212589087 /*RT*/, 718760319207473152 /*SevenBot*/, 832614051514417202 /*Glow-bot*/ : if len(message.Embeds) < 1 { return false } lines := strings.Split(message.Embeds[0].Description, "\r") valid_lines := 0 for _, v := range lines { - if !emoji.MatchString(v) { - continue - } - emojis := emoji.FindAllString(v) - role_strings, ok := strings.CutPrefix(v, emojis[0]) - if !ok { - continue - } - if !role_regexp.MatchString(role_strings) { + if !role_regexp.MatchString(v) { continue } valid_lines++ diff --git a/bot/commands/role.go b/bot/commands/role.go index a932bf6f..fc6cc380 100644 --- a/bot/commands/role.go +++ b/bot/commands/role.go @@ -134,24 +134,7 @@ func rolePanelV2PanelAutoCompleteHandler(b *botlib.Bot[*client.Client]) handler. func rolePanelV2Create(b *botlib.Bot[*client.Client]) handler.CommandHandler { return func(event *events.ApplicationCommandInteractionCreate) error { modal := discord.NewModalCreateBuilder() - role := event.SlashCommandInteractionData().Role("role") - self, valid := event.Client().Caches().SelfMember(*event.GuildID()) - if !valid { - return botlib.ReturnErrMessage(event, "error_bot_member_not_found", botlib.WithEphemeral(true)) - } - role_map := map[snowflake.ID]discord.Role{} - for _, id := range self.RoleIDs { - role, ok := event.Client().Caches().Role(*event.GuildID(), id) - if !ok { - continue - } - role_map[id] = role - } - hi, _ := botlib.GetHighestRolePosition(role_map) - if role.Managed || role.Position >= hi { - return botlib.ReturnErrMessage(event, "error_invalid_command_argument") - } - modal.SetCustomID(fmt.Sprintf("handler:rp-v2:create-modal:%s", role.ID.String())) + modal.SetCustomID("handler:rp-v2:create-modal") modal.SetTitle(translate.Message(event.Locale(), "rp_v2_create_modal_title")) modal.AddActionRow(discord.TextInputComponent{ CustomID: "name", @@ -1369,23 +1352,23 @@ func rolePanelV2ConvertComponentHandler(b *botlib.Bot[*client.Client]) handler.C lines := strings.Split(message.Embeds[0].Description, "\n") b.Logger.Debugf("lines %d", len(lines)) roles := []db.RolePanelV2Role{} + role_count := 0 for _, v := range lines { - if !emoji.MatchString(v) { - b.Logger.Debug("failed emoji match") + if !role_regexp.MatchString(v) { + b.Logger.Debug("failed role regexp") continue } - emojis := emoji.FindAllString(v) - component_emoji := botlib.ParseComponentEmoji(emojis[0]) - role_strings, ok := strings.CutPrefix(v, emojis[0]) - if !ok { - b.Logger.Debug("failed cut prefix") - continue + var emojis []string + if !emoji.MatchString(v) { + emojis = append(emojis, botlib.Number2Emoji(role_count+1)) + } else { + emojis = emoji.FindAllString(v) } - if !role_regexp.MatchString(role_strings) { - b.Logger.Debug("failed role regexp") - continue + component_emoji := botlib.ParseComponentEmoji(emojis[0]) + if _, ok := event.Client().Caches().Emoji(*event.GuildID(), component_emoji.ID); !ok && component_emoji.ID != 0 { + component_emoji = botlib.ParseComponentEmoji(botlib.Number2Emoji(role_count + 1)) } - role_id, err := snowflake.Parse(role_id_regexp.FindString(role_regexp.FindString(role_strings))) + role_id, err := snowflake.Parse(role_id_regexp.FindString(role_regexp.FindString(v))) if err != nil { b.Logger.Debug("failed parse role id") continue @@ -1399,6 +1382,7 @@ func rolePanelV2ConvertComponentHandler(b *botlib.Bot[*client.Client]) handler.C } role = *role_ptr } + role_count++ roles = append(roles, db.RolePanelV2Role{ RoleID: role.ID, RoleName: role.Name,