mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 22:00:11 +08:00
272 lines
10 KiB
Go
272 lines
10 KiB
Go
/*
|
||
Package atri 本文件基于 https://github.com/Kyomotoi/ATRI
|
||
为 Golang 移植版,语料、素材均来自上述项目
|
||
本项目遵守 AGPL v3 协议进行开源
|
||
*/
|
||
package atri
|
||
|
||
import (
|
||
"math/rand"
|
||
"time"
|
||
|
||
zero "github.com/wdvxdr1123/ZeroBot"
|
||
"github.com/wdvxdr1123/ZeroBot/message"
|
||
|
||
control "github.com/FloatTech/zbputils/control"
|
||
"github.com/FloatTech/zbputils/process"
|
||
)
|
||
|
||
const (
|
||
// 服务名
|
||
servicename = "atri"
|
||
// ATRI 所有命令的优先级
|
||
prio = 15
|
||
// ATRI 表情的 codechina 镜像
|
||
res = "https://gitcode.net/u011570312/zbpdata/-/raw/main/Atri/"
|
||
)
|
||
|
||
func init() { // 插件主体
|
||
engine := control.Register(servicename, &control.Options{
|
||
DisableOnDefault: false,
|
||
Help: "本插件基于 ATRI ,为 Golang 移植版\n" +
|
||
"- ATRI醒醒\n- ATRI睡吧\n- 萝卜子\n- 喜欢|爱你|爱|suki|daisuki|すき|好き|贴贴|老婆|亲一个|mua\n" +
|
||
"- 草你妈|操你妈|脑瘫|废柴|fw|废物|战斗|爬|爪巴|sb|SB|傻B\n- 早安|早哇|早上好|ohayo|哦哈哟|お早う|早好|早|早早早\n" +
|
||
"- 中午好|午安|午好\n- 晚安|oyasuminasai|おやすみなさい|晚好|晚上好\n- 高性能|太棒了|すごい|sugoi|斯国一|よかった\n" +
|
||
"- 没事|没关系|大丈夫|还好|不要紧|没出大问题|没伤到哪\n- 好吗|是吗|行不行|能不能|可不可以\n- 啊这\n- 我好了\n- ?|?|¿\n" +
|
||
"- 离谱\n- 答应我",
|
||
})
|
||
zero.OnFullMatch("ATRI醒醒", zero.AdminPermission).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
c, ok := control.Lookup(servicename)
|
||
if ok && !c.IsEnabledIn(ctx.Event.GroupID) {
|
||
c.Enable(ctx.Event.GroupID)
|
||
process.SleepAbout1sTo2s()
|
||
ctx.SendChain(message.Text("嗯呜呜……夏生先生……?"))
|
||
}
|
||
})
|
||
engine.OnFullMatch("ATRI睡吧", zero.AdminPermission).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
c, ok := control.Lookup(servicename)
|
||
if ok && c.IsEnabledIn(ctx.Event.GroupID) {
|
||
c.Disable(ctx.Event.GroupID)
|
||
process.SleepAbout1sTo2s()
|
||
ctx.SendChain(message.Text("Zzz……Zzz……"))
|
||
}
|
||
})
|
||
engine.OnFullMatch("萝卜子", atriSleep).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
process.SleepAbout1sTo2s()
|
||
switch rand.Intn(2) {
|
||
case 0:
|
||
ctx.SendChain(randText("萝卜子是对机器人的蔑称!", "是亚托莉......萝卜子可是对机器人的蔑称"))
|
||
case 1:
|
||
ctx.SendChain(randRecord("RocketPunch.amr"))
|
||
}
|
||
})
|
||
engine.OnFullMatchGroup([]string{"喜欢", "爱你", "爱", "suki", "daisuki", "すき", "好き", "贴贴", "老婆", "亲一个", "mua"}, atriSleep, zero.OnlyToMe).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
process.SleepAbout1sTo2s()
|
||
ctx.SendChain(randImage("SUKI.jpg", "SUKI1.jpg", "SUKI2.png"))
|
||
})
|
||
engine.OnKeywordGroup([]string{"草你妈", "操你妈", "脑瘫", "废柴", "fw", "five", "废物", "战斗", "爬", "爪巴", "sb", "SB", "傻B"}, atriSleep, zero.OnlyToMe).SetBlock(true).SetPriority(prio - 1).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
process.SleepAbout1sTo2s()
|
||
ctx.SendChain(randImage("FN.jpg", "WQ.jpg", "WQ1.jpg"))
|
||
})
|
||
engine.OnFullMatchGroup([]string{"早安", "早哇", "早上好", "ohayo", "哦哈哟", "お早う", "早好", "早", "早早早"}).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
now := time.Now().Hour()
|
||
process.SleepAbout1sTo2s()
|
||
switch {
|
||
case now < 6: // 凌晨
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText(
|
||
"zzzz......",
|
||
"zzzzzzzz......",
|
||
"zzz...好涩哦..zzz....",
|
||
"别...不要..zzz..那..zzz..",
|
||
"嘻嘻..zzz..呐~..zzzz..",
|
||
"...zzz....哧溜哧溜....",
|
||
))
|
||
case now >= 6 && now < 9:
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText(
|
||
"啊......早上好...(哈欠)",
|
||
"唔......吧唧...早上...哈啊啊~~~\n早上好......",
|
||
"早上好......",
|
||
"早上好呜......呼啊啊~~~~",
|
||
"啊......早上好。\n昨晚也很激情呢!",
|
||
"吧唧吧唧......怎么了...已经早上了么...",
|
||
"早上好!",
|
||
"......看起来像是傍晚,其实已经早上了吗?",
|
||
"早上好......欸~~~脸好近呢",
|
||
))
|
||
case now >= 9 && now < 18:
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText(
|
||
"哼!这个点还早啥,昨晚干啥去了!?",
|
||
"熬夜了对吧熬夜了对吧熬夜了对吧???!",
|
||
"是不是熬夜是不是熬夜是不是熬夜?!",
|
||
))
|
||
case now >= 18 && now < 24:
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText(
|
||
"早个啥?哼唧!我都准备洗洗睡了!",
|
||
"不是...你看看几点了,哼!",
|
||
"晚上好哇",
|
||
))
|
||
}
|
||
})
|
||
engine.OnFullMatchGroup([]string{"中午好", "午安", "午好"}).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
now := time.Now().Hour()
|
||
if now > 11 && now < 15 { // 中午
|
||
process.SleepAbout1sTo2s()
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText(
|
||
"午安w",
|
||
"午觉要好好睡哦,ATRI会陪伴在你身旁的w",
|
||
"嗯哼哼~睡吧,就像平常一样安眠吧~o(≧▽≦)o",
|
||
"睡你午觉去!哼唧!!",
|
||
))
|
||
}
|
||
})
|
||
engine.OnFullMatchGroup([]string{"晚安", "oyasuminasai", "おやすみなさい", "晚好", "晚上好"}).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
now := time.Now().Hour()
|
||
process.SleepAbout1sTo2s()
|
||
switch {
|
||
case now < 6: // 凌晨
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText(
|
||
"zzzz......",
|
||
"zzzzzzzz......",
|
||
"zzz...好涩哦..zzz....",
|
||
"别...不要..zzz..那..zzz..",
|
||
"嘻嘻..zzz..呐~..zzzz..",
|
||
"...zzz....哧溜哧溜....",
|
||
))
|
||
case now >= 6 && now < 11:
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText(
|
||
"你可猝死算了吧!",
|
||
"?啊这",
|
||
"亲,这边建议赶快去睡觉呢~~~",
|
||
"不可忍不可忍不可忍!!为何这还不猝死!!",
|
||
))
|
||
case now >= 11 && now < 15:
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText(
|
||
"午安w",
|
||
"午觉要好好睡哦,ATRI会陪伴在你身旁的w",
|
||
"嗯哼哼~睡吧,就像平常一样安眠吧~o(≧▽≦)o",
|
||
"睡你午觉去!哼唧!!",
|
||
))
|
||
case now >= 15 && now < 19:
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText(
|
||
"难不成??晚上不想睡觉??现在休息",
|
||
"就......挺离谱的...现在睡觉",
|
||
"现在还是白天哦,睡觉还太早了",
|
||
))
|
||
case now >= 19 && now < 24:
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText(
|
||
"嗯哼哼~睡吧,就像平常一样安眠吧~o(≧▽≦)o",
|
||
"......(打瞌睡)",
|
||
"呼...呼...已经睡着了哦~...呼......",
|
||
"......我、我会在这守着你的,请务必好好睡着",
|
||
))
|
||
}
|
||
})
|
||
engine.OnKeywordGroup([]string{"高性能", "太棒了", "すごい", "sugoi", "斯国一", "よかった"}, atriSleep, zero.OnlyToMe).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
process.SleepAbout1sTo2s()
|
||
ctx.SendChain(randText(
|
||
"当然,我是高性能的嘛~!",
|
||
"小事一桩,我是高性能的嘛",
|
||
"怎么样?还是我比较高性能吧?",
|
||
"哼哼!我果然是高性能的呢!",
|
||
"因为我是高性能的嘛!嗯哼!",
|
||
"因为我是高性能的呢!",
|
||
"哎呀~,我可真是太高性能了",
|
||
"正是,因为我是高性能的",
|
||
"是的。我是高性能的嘛♪",
|
||
"毕竟我可是高性能的!",
|
||
"嘿嘿,我的高性能发挥出来啦♪",
|
||
"我果然是很高性能的机器人吧!",
|
||
"是吧!谁叫我这么高性能呢!哼哼!",
|
||
"交给我吧,有高性能的我陪着呢",
|
||
"呣......我的高性能,毫无遗憾地施展出来了......",
|
||
))
|
||
})
|
||
engine.OnKeywordGroup([]string{"没事", "没关系", "大丈夫", "还好", "不要紧", "没出大问题", "没伤到哪"}, atriSleep, zero.OnlyToMe).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
process.SleepAbout1sTo2s()
|
||
ctx.SendChain(randText(
|
||
"当然,我是高性能的嘛~!",
|
||
"没事没事,因为我是高性能的嘛!嗯哼!",
|
||
"没事的,因为我是高性能的呢!",
|
||
"正是,因为我是高性能的",
|
||
"是的。我是高性能的嘛♪",
|
||
"毕竟我可是高性能的!",
|
||
"那种程度的事不算什么的。\n别看我这样,我可是高性能的",
|
||
"没问题的,我可是高性能的",
|
||
))
|
||
})
|
||
|
||
engine.OnKeywordGroup([]string{"好吗", "是吗", "行不行", "能不能", "可不可以"}, atriSleep).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
process.SleepAbout1sTo2s()
|
||
if rand.Intn(2) == 0 {
|
||
ctx.SendChain(randImage("YES.png", "NO.jpg"))
|
||
}
|
||
})
|
||
engine.OnKeywordGroup([]string{"啊这"}, atriSleep).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
process.SleepAbout1sTo2s()
|
||
if rand.Intn(2) == 0 {
|
||
ctx.SendChain(randImage("AZ.jpg", "AZ1.jpg"))
|
||
}
|
||
})
|
||
engine.OnKeywordGroup([]string{"我好了"}, atriSleep).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
process.SleepAbout1sTo2s()
|
||
ctx.SendChain(message.Reply(ctx.Event.MessageID), randText("不许好!", "憋回去!"))
|
||
})
|
||
engine.OnFullMatchGroup([]string{"?", "?", "¿"}, atriSleep).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
process.SleepAbout1sTo2s()
|
||
switch rand.Intn(5) {
|
||
case 0:
|
||
ctx.SendChain(randText("?", "?", "嗯?", "(。´・ω・)ん?", "ん?"))
|
||
case 1, 2:
|
||
ctx.SendChain(randImage("WH.jpg", "WH1.jpg", "WH2.jpg", "WH3.jpg"))
|
||
}
|
||
})
|
||
engine.OnKeyword("离谱", atriSleep).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
switch rand.Intn(5) {
|
||
case 0:
|
||
ctx.SendChain(randText("?", "?", "嗯?", "(。´・ω・)ん?", "ん?"))
|
||
case 1, 2:
|
||
ctx.SendChain(randImage("WH.jpg"))
|
||
}
|
||
})
|
||
engine.OnKeyword("答应我", atriSleep, zero.OnlyToMe).SetBlock(true).SetPriority(prio).
|
||
Handle(func(ctx *zero.Ctx) {
|
||
process.SleepAbout1sTo2s()
|
||
ctx.SendChain(randText("我无法回应你的请求"))
|
||
})
|
||
}
|
||
|
||
func randText(text ...string) message.MessageSegment {
|
||
return message.Text(text[rand.Intn(len(text))])
|
||
}
|
||
|
||
func randImage(file ...string) message.MessageSegment {
|
||
return message.Image(res + file[rand.Intn(len(file))])
|
||
}
|
||
|
||
func randRecord(file ...string) message.MessageSegment {
|
||
return message.Record(res + file[rand.Intn(len(file))])
|
||
}
|
||
|
||
// atriSleep 凌晨0点到6点,ATRI 在睡觉,不回应任何请求
|
||
func atriSleep(ctx *zero.Ctx) bool {
|
||
if now := time.Now().Hour(); now >= 1 && now < 6 {
|
||
return false
|
||
}
|
||
return true
|
||
}
|