From 053363f781e78b6f52e54908d10e6ce40b602079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Tue, 4 Oct 2022 22:18:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 ++--- main.go | 2 +- plugin/breakrepeat/breakrepeat.go | 12 +++- plugin/char_reverser/init.go | 111 ------------------------------ plugin/chrev/init.go | 32 +++++++++ plugin/chrev/map.go | 59 ++++++++++++++++ 6 files changed, 111 insertions(+), 121 deletions(-) delete mode 100644 plugin/char_reverser/init.go create mode 100644 plugin/chrev/init.go create mode 100644 plugin/chrev/map.go diff --git a/README.md b/README.md index 774069ca..f47aa0a5 100644 --- a/README.md +++ b/README.md @@ -478,14 +478,6 @@ print("run[CQ:image,file="+j["img"]+"]") - [x] 藏尾诗[xxx] - -
- 英文字符翻转 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/char_reverser"` - - - [x] 翻转 [英文字符串] -
选择困难症帮手 @@ -502,6 +494,14 @@ print("run[CQ:image,file="+j["img"]+"]") - [x] 抽象翻译[xxx] +
+
+ 英文字符翻转 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chrev"` + + - [x] 翻转 I love you +
coser diff --git a/main.go b/main.go index 1e525851..c0bea4a5 100644 --- a/main.go +++ b/main.go @@ -68,9 +68,9 @@ import ( _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili" // b站相关 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/book_review" // 哀伤雪刃吧推书记录 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/cangtoushi" // 藏头诗 - _ "github.com/FloatTech/ZeroBot-Plugin/plugin/char_reverser" // 英文字符翻转 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/choose" // 选择困难症帮手 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chouxianghua" // 说抽象话 + _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chrev" // 英文字符翻转 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/coser" // 三次元小姐姐 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/cpstory" // cp短打 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/danbooru" // DeepDanbooru二次元图标签识别 diff --git a/plugin/breakrepeat/breakrepeat.go b/plugin/breakrepeat/breakrepeat.go index 227a4a85..076e759f 100644 --- a/plugin/breakrepeat/breakrepeat.go +++ b/plugin/breakrepeat/breakrepeat.go @@ -2,6 +2,7 @@ package breakrepeat import ( + "math/rand" "strconv" ctrl "github.com/FloatTech/zbpctrl" @@ -19,7 +20,9 @@ func init() { DisableOnDefault: false, Help: "打断复读\n- 打断" + strconv.Itoa(throttle) + "次以上复读\n", }) - engine.On(`message/group`, zero.OnlyGroup).SetBlock(false). + engine.On("message/group", zero.OnlyGroup, func(ctx *zero.Ctx) bool { + return !zero.HasPicture(ctx) + }).SetBlock(false). Handle(func(ctx *zero.Ctx) { gid := ctx.Event.GroupID raw := ctx.Event.RawMessage @@ -34,6 +37,13 @@ func init() { return } sm.Delete(gid) + if len(r) > 2 { + ru := []rune(r) + rand.Shuffle(len(ru), func(i, j int) { + ru[i], ru[j] = ru[j], ru[i] + }) + r = string(ru) + } ctx.Send(r) }) } diff --git a/plugin/char_reverser/init.go b/plugin/char_reverser/init.go deleted file mode 100644 index 3ec33428..00000000 --- a/plugin/char_reverser/init.go +++ /dev/null @@ -1,111 +0,0 @@ -// Package charreverser 英文字符反转 -package charreverser - -import ( - "regexp" - "strings" - - ctrl "github.com/FloatTech/zbpctrl" - "github.com/FloatTech/zbputils/control" - zero "github.com/wdvxdr1123/ZeroBot" - "github.com/wdvxdr1123/ZeroBot/message" -) - -const commandRegex = `[A-z]{1}([A-z]|\s)+[A-z]{1}` // 命令正则表达式 - -var ( - charMap = map[rune]rune{ - 'a': 'ɐ', - 'b': 'q', - 'c': 'ɔ', - 'd': 'p', - 'e': 'ǝ', - 'f': 'ɟ', - 'g': 'ƃ', - 'h': 'ɥ', - 'i': 'ᴉ', - 'j': 'ɾ', - 'k': 'ʞ', - 'l': 'l', - 'm': 'ɯ', - 'n': 'u', - 'o': 'o', - 'p': 'd', - 'q': 'b', - 'r': 'ɹ', - 's': 's', - 't': 'ʇ', - 'u': 'n', - 'v': 'ʌ', - 'w': 'ʍ', - 'x': 'x', - 'y': 'ʎ', - 'z': 'z', - 'A': '∀', - 'B': 'ᗺ', - 'C': 'Ɔ', - 'D': 'ᗡ', - 'E': 'Ǝ', - 'F': 'Ⅎ', - 'G': '⅁', - 'H': 'H', - 'I': 'I', - 'J': 'ſ', - 'K': 'ʞ', - 'L': '˥', - 'M': 'W', - 'N': 'N', - 'O': 'O', - 'P': 'Ԁ', - 'Q': 'Ò', - 'R': 'ᴚ', - 'S': 'S', - 'T': '⏊', - 'U': '∩', - 'V': 'Λ', - 'W': 'M', - 'X': 'X', - 'Y': '⅄', - 'Z': 'Z', - } - - compiledRegex = regexp.MustCompile(commandRegex) -) - -func init() { - // 初始化engine - engine := control.Register( - "charreverser", - &ctrl.Options[*zero.Ctx]{ - DisableOnDefault: false, - Help: "字符翻转\n -翻转 <英文字符串>", - }, - ) - // 处理字符翻转指令 - engine.OnRegex(`翻转( )+[A-z]{1}([A-z]|\s)+[A-z]{1}`).SetBlock(true).Handle( - func(ctx *zero.Ctx) { - // 获取需要翻转的字符串 - results := compiledRegex.FindAllString(ctx.MessageString(), -1) - str := results[0] - - // 将字符顺序翻转 - var tempBuilder strings.Builder - for i := len(str) - 1; i >= 0; i-- { - tempBuilder.WriteByte(str[i]) - } - - // 翻转字符字形 - var reversedStrBuilder strings.Builder - for _, char := range tempBuilder.String() { - if char != ' ' { - reversedStrBuilder.WriteRune(charMap[char]) - } else { - reversedStrBuilder.WriteRune(' ') - } - } - - // 发送翻转后的字符串 - ctx.SendChain(message.Text(reversedStrBuilder.String())) - }, - ) -} diff --git a/plugin/chrev/init.go b/plugin/chrev/init.go new file mode 100644 index 00000000..0cd7fbe4 --- /dev/null +++ b/plugin/chrev/init.go @@ -0,0 +1,32 @@ +// Package chrev 英文字符反转 +package chrev + +import ( + "strings" + + ctrl "github.com/FloatTech/zbpctrl" + "github.com/FloatTech/zbputils/control" + zero "github.com/wdvxdr1123/ZeroBot" + "github.com/wdvxdr1123/ZeroBot/message" +) + +func init() { + // 初始化engine + engine := control.Register("chrev", &ctrl.Options[*zero.Ctx]{ + DisableOnDefault: false, + Help: "字符翻转\n- 翻转 I love you", + }) + // 处理字符翻转指令 + engine.OnRegex(`^翻转\s*([A-Za-z\s]*)$`).SetBlock(true). + Handle(func(ctx *zero.Ctx) { + // 获取需要翻转的字符串 + str := ctx.State["regex_matched"].([]string)[1] + // 将字符顺序翻转 + tmp := strings.Builder{} + for i := len(str) - 1; i >= 0; i-- { + tmp.WriteRune(charMap[str[i]]) + } + // 发送翻转后的字符串 + ctx.SendChain(message.Text(tmp.String())) + }) +} diff --git a/plugin/chrev/map.go b/plugin/chrev/map.go new file mode 100644 index 00000000..6bb89f2b --- /dev/null +++ b/plugin/chrev/map.go @@ -0,0 +1,59 @@ +package chrev + +var charMap [256]rune + +func init() { + charMap[' '] = ' ' + charMap['a'] = 'ɐ' + charMap['b'] = 'q' + charMap['c'] = 'ɔ' + charMap['d'] = 'p' + charMap['e'] = 'ǝ' + charMap['f'] = 'ɟ' + charMap['g'] = 'ƃ' + charMap['h'] = 'ɥ' + charMap['i'] = 'ᴉ' + charMap['j'] = 'ɾ' + charMap['k'] = 'ʞ' + charMap['l'] = 'l' + charMap['m'] = 'ɯ' + charMap['n'] = 'u' + charMap['o'] = 'o' + charMap['p'] = 'd' + charMap['q'] = 'b' + charMap['r'] = 'ɹ' + charMap['s'] = 's' + charMap['t'] = 'ʇ' + charMap['u'] = 'n' + charMap['v'] = 'ʌ' + charMap['w'] = 'ʍ' + charMap['x'] = 'x' + charMap['y'] = 'ʎ' + charMap['z'] = 'z' + charMap['A'] = '∀' + charMap['B'] = 'ᗺ' + charMap['C'] = 'Ɔ' + charMap['D'] = 'ᗡ' + charMap['E'] = 'Ǝ' + charMap['F'] = 'Ⅎ' + charMap['G'] = '⅁' + charMap['H'] = 'H' + charMap['I'] = 'I' + charMap['J'] = 'ſ' + charMap['K'] = 'ʞ' + charMap['L'] = '˥' + charMap['M'] = 'W' + charMap['N'] = 'N' + charMap['O'] = 'O' + charMap['P'] = 'Ԁ' + charMap['Q'] = 'Ò' + charMap['R'] = 'ᴚ' + charMap['S'] = 'S' + charMap['T'] = '⏊' + charMap['U'] = '∩' + charMap['V'] = 'Λ' + charMap['W'] = 'M' + charMap['X'] = 'X' + charMap['Y'] = '⅄' + charMap['Z'] = 'Z' +}