diff --git a/README.md b/README.md
index 65b64a2f..21be122b 100644
--- a/README.md
+++ b/README.md
@@ -413,6 +413,14 @@ print("run[CQ:image,file="+j["img"]+"]")
- [x] 藏尾诗[xxx]
+
+
+ 英文字符翻转
+
+ `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/char_reverser"`
+
+ - [x] 翻转 [英文字符串]
+
选择困难症帮手
diff --git a/main.go b/main.go
index 343e109b..645bef24 100644
--- a/main.go
+++ b/main.go
@@ -62,6 +62,7 @@ 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/coser" // 三次元小姐姐
diff --git a/plugin/char_reverser/init.go b/plugin/char_reverser/init.go
new file mode 100644
index 00000000..1a208c15
--- /dev/null
+++ b/plugin/char_reverser/init.go
@@ -0,0 +1,111 @@
+// 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()))
+ },
+ )
+}