diff --git a/commands/learnedDataList.go b/commands/learnedDataList.go
index 9c3554c..be71433 100644
--- a/commands/learnedDataList.go
+++ b/commands/learnedDataList.go
@@ -13,22 +13,39 @@ import (
"go.mongodb.org/mongo-driver/v2/mongo"
)
+const (
+ learnArgsCommand = "단어:"
+ learnArgsResult = "대답:"
+)
+
var LearnedDataListCommand *Command = &Command{
ApplicationCommand: &discordgo.ApplicationCommand{
Type: discordgo.ChatApplicationCommand,
Name: "리스트",
Description: "당신이 가ㄹ르쳐준 지식을 나열해요.",
+ Options: []*discordgo.ApplicationCommandOption{
+ {
+ Name: "쿼리",
+ Description: "해당 단어가 포함된 결과만 찾아요.",
+ Required: false,
+ },
+ },
},
Aliases: []string{"list", "목록", "지식목록"},
DetailedDescription: &DetailedDescription{
Usage: fmt.Sprintf("%s리스트", configs.Config.Bot.Prefix),
+ Examples: []string{
+ fmt.Sprintf("%s리스트 ㅁㄴㅇㄹ", configs.Config.Bot.Prefix),
+ fmt.Sprintf("%s리스트 단어:안녕", configs.Config.Bot.Prefix),
+ fmt.Sprintf("%s리스트 대답:머핀", configs.Config.Bot.Prefix),
+ },
},
Category: Chatting,
MessageRun: func(ctx *MsgContext) {
- learnedDataListRun(ctx.Session, ctx.Msg)
+ learnedDataListRun(ctx.Session, ctx.Msg, &ctx.Args)
},
ChatInputRun: func(ctx *ChatInputContext) {
- learnedDataListRun(ctx.Session, ctx.Inter)
+ learnedDataListRun(ctx.Session, ctx.Inter, nil)
},
}
@@ -39,24 +56,66 @@ func getDescriptions(data *[]databases.Learn) (descriptions []string) {
return
}
-func learnedDataListRun(s *discordgo.Session, m any) {
+func learnedDataListRun(s *discordgo.Session, m any, args *[]string) {
var userId, globalName, avatarUrl string
var data []databases.Learn
+ var filter bson.E
switch m := m.(type) {
case *discordgo.MessageCreate:
userId = m.Author.ID
globalName = m.Author.GlobalName
avatarUrl = m.Author.AvatarURL("512")
+
+ query := strings.Join(*args, " ")
+ if strings.HasPrefix(query, learnArgsResult) {
+ query, _ = strings.CutPrefix(query, learnArgsResult)
+ filter = bson.E{
+ Key: "result",
+ Value: bson.M{
+ "$regex": query,
+ },
+ }
+ } else {
+ query, _ = strings.CutPrefix(query, learnArgsCommand)
+ filter = bson.E{
+ Key: "command",
+ Value: bson.M{
+ "$regex": query,
+ },
+ }
+ }
case *utils.InteractionCreate:
m.DeferReply(true)
userId = m.Member.User.ID
globalName = m.Member.User.GlobalName
avatarUrl = m.Member.User.AvatarURL("512")
+
+ if opt, ok := m.Options["쿼리"]; ok {
+ query := opt.StringValue()
+
+ if strings.HasPrefix(query, learnArgsResult) {
+ query, _ = strings.CutPrefix(query, learnArgsResult)
+ filter = bson.E{
+ Key: "result",
+ Value: bson.M{
+ "$regex": query,
+ },
+ }
+ } else {
+ query, _ = strings.CutPrefix(query, learnArgsCommand)
+ filter = bson.E{
+ Key: "command",
+ Value: bson.M{
+ "$regex": query,
+ },
+ }
+ }
+ }
}
- cur, err := databases.Learns.Find(context.TODO(), bson.D{{Key: "user_id", Value: userId}})
+ cur, err := databases.Learns.Find(context.TODO(), bson.D{{Key: "user_id", Value: userId}, filter})
if err != nil {
if err == mongo.ErrNoDocuments {
embed := &discordgo.MessageEmbed{
diff --git a/configs/version.go b/configs/version.go
index dcb0b48..6df6301 100644
--- a/configs/version.go
+++ b/configs/version.go
@@ -7,7 +7,7 @@ import (
"git.wh64.net/muffin/goMuffin/utils"
)
-const MUFFIN_VERSION = "5.0.1-gopher_release.250505a"
+const MUFFIN_VERSION = "5.1.0-gopher_dev.250510a"
var updatedString string = utils.Decimals.FindAllStringSubmatch(MUFFIN_VERSION, -1)[3][0]
diff --git a/utils/regexp.go b/utils/regexp.go
index f162478..f180d6e 100644
--- a/utils/regexp.go
+++ b/utils/regexp.go
@@ -2,7 +2,11 @@ package utils
import "regexp"
-var FlexibleStringParser *regexp.Regexp = regexp.MustCompile("[^\\s\"'「」«»]+|\"([^\"]*)\"|'([^']*)'|「([^」]*)」|«([^»]*)»")
-var Decimals *regexp.Regexp = regexp.MustCompile(`\d+`)
-var ItemIdRegexp *regexp.Regexp = regexp.MustCompile(`No.\d+`)
-var EmojiRegexp *regexp.Regexp = regexp.MustCompile(``)
+var (
+ FlexibleStringParser = regexp.MustCompile("[^\\s\"'「」«»]+|\"([^\"]*)\"|'([^']*)'|「([^」]*)」|«([^»]*)»")
+ Decimals = regexp.MustCompile(`\d+`)
+ ItemIdRegexp = regexp.MustCompile(`No.\d+`)
+ EmojiRegexp = regexp.MustCompile(``)
+ LearnQueryCommand = regexp.MustCompile(`^단어:`)
+ LearnQueryResult = regexp.MustCompile(`^대답:`)
+)