mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 13:59:39 +08:00
112 lines
2.0 KiB
Go
112 lines
2.0 KiB
Go
// 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()))
|
||
},
|
||
)
|
||
}
|