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'
+}