mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 05:30:07 +08:00
feat:添加词库,骂人和笑话 (#90)
Co-authored-by: Guohuiyuan <haibaraguo@yeahka.com>
This commit is contained in:
parent
4fdedd0a7b
commit
b953385bc5
@ -65,6 +65,7 @@ zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
|
||||
- [x] 空调关
|
||||
- [x] 群温度
|
||||
- [x] 设置温度[正整数]
|
||||
- [x] mua|啾咪|摸|上你|傻|裸|贴|老婆|抱|亲|一下|咬|操|123|进去|调教|搓|让|捏|挤|略|呐|原味|胖次|内裤|内衣|衣服|ghs|批|憨批|kkp|咕|骚|喜欢|suki|好き|看|不能|砸了|透|口我|草我|自慰|onani|オナニー|炸了|色图|涩图|告白|对不起|回来|吻|软|壁咚|掰开|女友|是|喵|嗷呜|叫|拜|佬|awsl|臭|香|腿|张开|脚|脸|头发|手|pr|舔|小穴|腰|诶嘿嘿|可爱|扭蛋|鼻|眼|色气|推|床|举|手冲|饿|变|敲|爬|怕|冲|射|不穿|迫害|猫粮|揪尾巴|薄荷|早|晚安|揉|榨|掐|胸|奶子|欧派|嫩|蹭|牵手|握手|拍照|w|睡不着|欧尼酱|哥|爱你|过来|自闭|打不过|么么哒|很懂|膝枕|累了|安慰|洗澡|一起睡觉|一起|多大|姐姐|糖|嗦|牛子|🐂子|🐮子|嫌弃|紧|baka|笨蛋|插|插进来|屁股|翘|翘起来|抬|抬起|爸|傲娇|rua|咕噜咕噜|咕噜|上床|做爱|吃掉|吃|揪|种草莓|种草|掀|妹|病娇|嘻
|
||||
- **ATRI** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_atri"`
|
||||
- [x] 具体指令看 /用法 atri
|
||||
- 注:本插件基于 [ATRI](https://github.com/Kyomotoi/ATRI) ,为 Golang 移植版
|
||||
@ -217,8 +218,12 @@ zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
|
||||
- [x] 随机书评
|
||||
- **coser** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_coser" `
|
||||
- [x] coser
|
||||
- **novel** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_novel" `
|
||||
- **小说** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_novel" `
|
||||
- [x] 小说[xxx]
|
||||
- **骂人** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_curse"`
|
||||
- [x] 骂他[@xxx]|骂他[qq号]
|
||||
- **笑话** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_funny"`
|
||||
- [x] 讲个笑话[@xxx]|讲个笑话[qq号]
|
||||
- **TODO...**
|
||||
|
||||
## 使用方法
|
||||
|
||||
1607
data/chat/kimo.json
Normal file
1607
data/chat/kimo.json
Normal file
File diff suppressed because it is too large
Load Diff
166
data/funny/laugh.txt
Normal file
166
data/funny/laugh.txt
Normal file
@ -0,0 +1,166 @@
|
||||
Erdos相信上帝有一本记录所有数学中绝妙证明的书,上帝相信这本书在%name手里
|
||||
有一次费马惹怒了%name,于是就有了费马最后定理
|
||||
%name从不会用光页边的空白
|
||||
%name的Erdos数是-1
|
||||
如果%name告诉你他在说谎,他就正在说真话
|
||||
%name从大到小列举了所有素数,就知道了素数有无穷多
|
||||
%name可以不重复地走遍柯尼斯堡的七座桥
|
||||
%name可以倒着写完圆周率的每一位
|
||||
当数学家们使用通用语句——设n是一个正整数时,这是在请求%name允许他们这样做
|
||||
%name小时候有一次要把正整数从1加到100,于是他用心算把所有正整数的和减去大于100的正整数的和
|
||||
不是%name发现了正态分布,而是自然规律在遵从%name的意愿
|
||||
一个数学家,一个物理学家,一个工程师走进一家酒吧,侍者说:‘你好,%name教授’
|
||||
%name可以走到莫比乌斯带的另一面
|
||||
当%name令一个正整数增加1时,那个正整数并没有增加,而是其他正整数减少了1
|
||||
%name同时给他自己和罗素剪头发
|
||||
%name不能理解什么是随机过程,因为他能预言随机数
|
||||
有一次%name证明了一个结论,但他不喜欢这个结论,于是%name把它证伪了
|
||||
有些级数是发散的,因为%name觉得它们不值得加起来
|
||||
问%name一个定理是否正确可以作为一个定理的严谨证明
|
||||
如果没有船,%name可以把狼,羊,菜传送到河对岸
|
||||
有一次%name在森林里迷路了,于是他给这个森林添加了一些边把它变成了一棵树
|
||||
只有%name知道薛定谔的猫是死是活
|
||||
通过故意遗漏证明最后的‘证毕’,%name拯救了热带雨林
|
||||
%name可以剔掉奥卡姆剃刀
|
||||
你刚证明了一个定理?%name200年前就证明它了。
|
||||
空集的定义是%name不会证明的定理构成的集合
|
||||
‘我找不到反例’可以被视为一个定理的证明,如果它是%name写下的
|
||||
%name把磁铁断为两块时,他得到两个单极磁铁
|
||||
费马认为书页边缘写不下自己对费马大定理的证明,%name能证明为什么这个证明这么长
|
||||
上帝从不掷骰子,除非%name允许他赢一小会
|
||||
平行线在%name让它们相交的地方相交
|
||||
当哥德尔听说%name能证明一切命题时,他让%name证明‘存在一个命题%name不能证明’——这就是量子态的来历
|
||||
%name可以看到自己头上帽子的颜色
|
||||
%name把无穷视为归纳证明的第一个非平凡情况
|
||||
%name可以用1种颜色染任何地图
|
||||
%name在求不定积分时不需要在最后加上一个常数
|
||||
%name无需站在任何人肩膀上就能比别人看的更远
|
||||
%name用克莱因瓶喝酒
|
||||
%name通过枚举法证伪了哥德尔不完备性定理,有一次%name发现有一个定理自己不会证——这直接证明了哥德尔不完备定理
|
||||
%name有log(n)速度的排序算法
|
||||
上帝创造了正整数,剩下的就是%name的工作了
|
||||
黎曼是%name发表未公开成果时使用的名字
|
||||
%name不用任何公理就能证明一个定理
|
||||
一个发现就是一个%name的未公开结果
|
||||
%name使用无穷进制写数
|
||||
%name可以除以0
|
||||
存在一个实数到被%name证明了的定理的双射
|
||||
%name从不需要选择公理
|
||||
%name在200年前发明了64量子位计算机,但这让他的工作减速了
|
||||
难题不会为%name带来麻烦,%name会为难题带来麻烦
|
||||
%name说过‘数学是科学的皇后’,你猜谁是国王?
|
||||
没有比65537大的费马素数,因为%name发现费马将要发现什么了不起的事情,于是把它终结掉了
|
||||
发散序列当看到%name在旁边时会收敛
|
||||
宇宙通过膨胀让自己的熵增加速度不超过%name证明定理的速度
|
||||
Erdos说他知道37个勾股定理的证明,%name说他知道37个黎曼定理的证明,并留给黎曼做练习
|
||||
希尔伯特23问题是他收集的%name的手稿中留给读者做练习的那些问题
|
||||
只有两件事物是无限的:人类的愚蠢和%name的智慧,而且我对前者不太确定——爱因斯坦
|
||||
%name也发现了伽罗瓦理论,但他赢了那场决斗
|
||||
%name不能理解P与NP的问题,因为一切对他而言都是常数级别
|
||||
%name能心算干掉RSA公钥加密算法
|
||||
%name在实数集上使用数归
|
||||
%name从不证明任何定理——都是他的引理
|
||||
不是%name素数的素数会遭到戏弄
|
||||
%name可以做出正17边形——只用直尺
|
||||
有一次%name在脑子里构建了所有集合构成的集合
|
||||
%name证明了哥德巴赫猜想——通过检查所有情况
|
||||
%name可以把毛球捋平
|
||||
世界上没有定理,只有%name允许其正确的命题
|
||||
%name知道哪些图灵机会停机,因为它们运行前要得到%name批准
|
||||
在晚上,定理们围坐在篝火边给%name讲故事
|
||||
%name本想证明三色定理,但他喜欢蓝色,所以放弃了
|
||||
%name当初面试Google时,被问到‘如果P=NP能够推导出哪些结论’,Jeff回答说:‘P = 0或者N = 1’。而在面试官还没笑完的时候,Jeff检查了一下Google的公钥,然后在黑板上写下了私钥。
|
||||
编译器从不警告%name,只有%name警告编译器。
|
||||
%name的编码速度在2000年底提高了约40倍,因为他换了USB2.0的键盘。
|
||||
%name在提交代码前都会编译一遍,不过是为了检查编译器和链接器有没有出bug。
|
||||
%name有时候会调整他的工作环境和设备,不过这是为了保护他的键盘。
|
||||
所有指针都指向%name。
|
||||
gcc -O4的功能是发送代码给%name重写。
|
||||
%name有一次没有通过图灵测试,因为他正确说出了斐波那契数列的第203项的值,在一秒钟内。
|
||||
真空中光速曾经是35英里每小时,直到%name花了一个周末时间优化了一下物理法则。
|
||||
%name出生于1969年12月31日午后11点48分,他花了12分钟实现了他的第一个计时器。
|
||||
%name既不用Emacs也不用Vim,他直接输入代码到zcat,因为这样更快。
|
||||
%name发送以太网封包从不会发生冲突,因为其他封包都吓得逃回了网卡的缓冲区里。
|
||||
因为对常数级的时间复杂度感到不满意,%name发明了世界上第一个O(1/n)算法。
|
||||
有一次%name去旅行,期间Google的几个服务神秘地罢工了好几天。这是真事。
|
||||
%name被迫发明了异步API因为有一天他把一个函数优化到在调用前就返回结果了。
|
||||
%name首先写的是二进制代码,然后再写源代码作为文档。
|
||||
%name曾经写过一个O(n^2)算法,那是为了解决旅行商问题。
|
||||
%name有一次用一句printf实现了一个web服务器。其他工程师添加了数千行注释但依然无法完全解释清楚其工作原理。而这个程序就是今天Google首页的前端。
|
||||
%name可以下四子棋时用三步就击败你。
|
||||
当你的代码出现未定义行为时,你会得到一个segmentation fault和一堆损坏的数据。当%name的代码出现未定义行为时,一个独角兽会踏着彩虹从天而降并给每个人提供免费的冰激凌。
|
||||
当%name运行一个profiler时,循环们都会恐惧地自动展开。
|
||||
%name至今还在等待数学家们发现他隐藏在PI的小数点后数字里的笑话。
|
||||
%name的键盘只有两个键,1和0。
|
||||
%name失眠的时候,就Mapreduce羊。
|
||||
%name想听mp3的时候,他只需要把文件cat到/dev/dsp,然后在脑内解码。
|
||||
Graham Bell当初发明出电话时,他看到有一个来自%name的未接来电。
|
||||
%name的手表显示的是自1970年1月1日的秒数,并且从没慢过一秒。
|
||||
%name写程序是从‘cat >/dev/mem’开始的。
|
||||
有一天%name出门时把笔记本错拿成了绘画板。在他回去拿笔记本的路上,他在绘图板上写了个俄罗斯方块打发时间。
|
||||
%name卡里只有8毛钱,本来想打个6毛的饭结果不小心按了9毛的,哪知机器忽然疯狂地喷出255两饭,被喷得满脸热饭的%name%大叫‘烫烫烫烫烫烫。。。。’
|
||||
%name不洗澡是因为水力发电公司运行的是专有软件。
|
||||
%name的胡子是由括号构成的。
|
||||
%name从来不用洗澡;他只需要运行‘make clean’。
|
||||
%name通过把一切都变得free而解决了旅行推销员问题。
|
||||
%name的左手和右手分别命名为‘(’和‘)’。
|
||||
%name用Emacs写出了Emacs的第一版。
|
||||
有些人检查他们的电脑里是否有病毒。病毒检查他们的电脑里是否有%name。
|
||||
在一间普通的客厅里有1242件物体可以被%name用来写一个操作系统,包括这房间本身。
|
||||
当%name还是个学数手指的小毛孩时,他总是从0开始数。
|
||||
%name不去kill一个进程,他只想看它是否胆敢继续运行。
|
||||
当%name指向(point at)一台Windows电脑时,它就会出现段错误。
|
||||
%name最初的话语是syscalls(系统调用)。
|
||||
%name之所以存在是因为他把自己编译成了生命体。
|
||||
%name是他自己在Emacs里用Lisp语言编写成的。
|
||||
%name能够通过Emacs的ssh客户端程序连接到任何大脑。
|
||||
当%name使用浮点数时,它们便没有舍入误差。
|
||||
%name不用维护代码。他注视着它们,直到它们带着敬仰改正自己的错误。
|
||||
%name不对开源项目作出贡献;开源项目对%name作出贡献。
|
||||
%name的胡须里面不是下巴,而是另一撮胡须。如此递归直至无穷。
|
||||
%name曾经得过猪流感,但是该病毒很快被GPL污染并且同化了。
|
||||
无论何时世界上有人写出一个‘Hello, world’程序,%name总以“Hello”回应。
|
||||
%name从不编译,他只要闭上眼睛,就能看见编译器优化时二进制位之间的能量流动被创造出来……
|
||||
如果%name有一个1GB的内存,你有一个1GB的内存,那么%name拥有比你更多的内存。
|
||||
当%name执行ps -e时,你的名字会出现。
|
||||
从来就没有软件开发过程这回事,只有被%name允许存在的一些程序。
|
||||
%name的DNA中包含调试符号。尽管他从不需要它们。
|
||||
%name的医生能通过CVS采集他的血样。
|
||||
对于%name来说,多项式时间就是O(1)。
|
||||
%name将会使可口可乐在GPL协议下公布他们的配方。
|
||||
%name不需要用鼠标或键盘来操作计算机。他只要凝视着它,直到它完成想要的工作。
|
||||
%name就是图灵测试的解答。
|
||||
%name其实没有写过CQhttp,只是字母们因为恐惧而组成了CQhttp的源代码。
|
||||
当%name%问deno能不能生产环境的时候,他是在准备给deno贡献代码让他能支持生产环境
|
||||
%name是google的大牛,主持google各种牛逼分布式系统的设计,比如Mapreduce之类的,关于大神的传说,如同春哥一样多,当然,有些传说只有程序员能明白!
|
||||
%name当初面试Google时,被问到“如果P=NP能够推导出哪些结论”,%name回答说:“P = 0或者N = 1”。而在面试官还没笑完的时候,%name检查了一下Google的公钥,然后在黑板上写下了私钥。
|
||||
编译器从不警告%name,只有Jeff警告编译器。
|
||||
%name的编码速度在2000年底提高了约40倍,因为他换了USB2.0的键盘。
|
||||
%name在提交代码前都会编译一遍,不过是为了检查编译器和链接器有没有出bug。
|
||||
%name有时候会调整他的工作环境和设备,不过这是为了保护他的键盘。(注:ergonomic evaluation似乎针对个人的工作环境定制服务,所以这里姑且就译成了“调整工作环境和设备”)
|
||||
所有指针都指向%name。
|
||||
gcc -O4的功能是发送代码给%name重写。
|
||||
%name有一次没有通过图灵测试,因为他正确说出了斐波那契数列的第203项的值,在一秒钟内。
|
||||
真空中光速曾经是35英里每小时,直到%name花了一个周末时间优化了一下物理法则。
|
||||
%name出生于1969年12月31日午后11点48分,他花了12分钟实现了他的第一个计时器。
|
||||
%name既不用Emacs也不用Vim,他直接输入代码到zcat,因为这样更快。
|
||||
%name发送以太网封包从不会发生冲突,因为其他封包都吓得逃回了网卡的缓冲区里。
|
||||
因为对常数级的时间复杂度感到不满意,%name发明了世界上第一个O(1/n)算法。
|
||||
有一次%name去旅行,期间Google的几个服务神秘地罢工了好几天。这是真事。
|
||||
%name被迫发明了异步API因为有一天他把一个函数优化到在调用前就返回结果了。
|
||||
%name首先写的是二进制代码,然后再写源代码作为文档。
|
||||
%name曾经写过一个O(n^2)算法,那是为了解决旅行商问题。
|
||||
%name有一次用一句printf实现了一个web服务器。其他工程师添加了数千行注释但依然无法完全解释清楚其工作原理。而这个程序就是今天Google首页的前端。
|
||||
%name有一次只提交了一项变更就使得(总的二进制文件体积缩小了3%)AND(一个本来优先度较低的python bug的优先度变成紧急),并且在那项变更中不包含任何python代码。
|
||||
%name可以下四子棋时用三步就击败你。
|
||||
当你的代码出现未定义行为时,你会得到一个segmentation fault和一堆损坏的数据。当%name的代码出现未定义行为时,一个独角兽会踏着彩虹从天而降并给每个人提供免费的冰激凌。
|
||||
当%name运行一个profiler时,循环们都会恐惧地自动展开。
|
||||
%name至今还在等待数学家们发现他隐藏在PI的小数点后数字里的笑话。
|
||||
%name的键盘只有两个键,1和0。
|
||||
%name失眠的时候,就Mapreduce羊。
|
||||
%name想听mp3的时候,他只需要把文件cat到/dev/dsp,然后在脑内解码。
|
||||
Graham Bell当初发明出电话时,他看到有一个来自%name的未接来电。
|
||||
%name的手表显示的是自1970年1月1日的秒数,并且从没慢过一秒。
|
||||
%name写程序是从’cat >/dev/mem’开始的。
|
||||
|
||||
|
||||
2
main.go
2
main.go
@ -33,7 +33,9 @@ import (
|
||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_book_review" // 哀伤雪刃吧推书记录
|
||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_choose" // 选择困难症帮手
|
||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_coser" // 三次元小姐姐
|
||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_curse" // 骂人
|
||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_fortune" // 运势
|
||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_funny" // 笑话
|
||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_hs" // 炉石
|
||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_minecraft" // MCSManager
|
||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_moyu" // 摸鱼
|
||||
|
||||
@ -20,7 +20,7 @@ const (
|
||||
// 服务名
|
||||
servicename = "atri"
|
||||
// ATRI 所有命令的优先级
|
||||
prio = 5
|
||||
prio = 15
|
||||
// ATRI 表情的 codechina 镜像
|
||||
res = "https://codechina.csdn.net/u011570312/ZeroBot-Plugin/-/raw/master/plugin_atri/"
|
||||
)
|
||||
|
||||
@ -2,6 +2,11 @@
|
||||
package chat
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/tidwall/gjson"
|
||||
|
||||
"io/ioutil"
|
||||
"math/rand"
|
||||
"strconv"
|
||||
"time"
|
||||
@ -9,20 +14,29 @@ import (
|
||||
zero "github.com/wdvxdr1123/ZeroBot"
|
||||
"github.com/wdvxdr1123/ZeroBot/extension/rate"
|
||||
"github.com/wdvxdr1123/ZeroBot/message"
|
||||
"github.com/wdvxdr1123/ZeroBot/utils/helper"
|
||||
|
||||
"github.com/FloatTech/ZeroBot-Plugin/control"
|
||||
)
|
||||
|
||||
var poke = rate.NewManager(time.Minute*5, 8) // 戳一戳
|
||||
const (
|
||||
dbpath = "data/chat/"
|
||||
dbfile = dbpath + "kimo.json"
|
||||
prio = 10
|
||||
)
|
||||
|
||||
var engine = control.Register("chat", &control.Options{
|
||||
DisableOnDefault: false,
|
||||
Help: "chat\n- [BOT名字]\n- [戳一戳BOT]\n- 空调开\n- 空调关\n- 群温度\n- 设置温度[正整数]",
|
||||
})
|
||||
var (
|
||||
poke = rate.NewManager(time.Minute*5, 8) // 戳一戳
|
||||
engine = control.Register("chat", &control.Options{
|
||||
DisableOnDefault: false,
|
||||
Help: "chat\n- [BOT名字]\n- [戳一戳BOT]\n- 空调开\n- 空调关\n- 群温度\n- 设置温度[正整数]\n- mua|啾咪|摸|上你|傻|裸|贴|老婆|抱|亲|一下|咬|操|123|进去|调教|搓|让|捏|挤|略|呐|原味|胖次|内裤|内衣|衣服|ghs|批|憨批|kkp|咕|骚|喜欢|suki|好き|看|不能|砸了|透|口我|草我|自慰|onani|オナニー|炸了|色图|涩图|告白|对不起|回来|吻|软|壁咚|掰开|女友|是|喵|嗷呜|叫|拜|佬|awsl|臭|香|腿|张开|脚|脸|头发|手|pr|舔|小穴|腰|诶嘿嘿|可爱|扭蛋|鼻|眼|色气|推|床|举|手冲|饿|变|敲|爬|怕|冲|射|不穿|迫害|猫粮|揪尾巴|薄荷|早|晚安|揉|榨|掐|胸|奶子|欧派|嫩|蹭|牵手|握手|拍照|w|睡不着|欧尼酱|哥|爱你|过来|自闭|打不过|么么哒|很懂|膝枕|累了|安慰|洗澡|一起睡觉|一起|多大|姐姐|糖|嗦|牛子|🐂子|🐮子|嫌弃|紧|baka|笨蛋|插|插进来|屁股|翘|翘起来|抬|抬起|爸|傲娇|rua|咕噜咕噜|咕噜|上床|做爱|吃掉|吃|揪|种草莓|种草|掀|妹|病娇|嘻",
|
||||
})
|
||||
chatList = []string{}
|
||||
)
|
||||
|
||||
func init() { // 插件主体
|
||||
// 被喊名字
|
||||
engine.OnFullMatch("", zero.OnlyToMe).SetBlock(true).FirstPriority().
|
||||
engine.OnFullMatch("", zero.OnlyToMe).SetBlock(true).SetPriority(prio).
|
||||
Handle(func(ctx *zero.Ctx) {
|
||||
var nickname = zero.BotConfig.NickName[0]
|
||||
time.Sleep(time.Second * 1)
|
||||
@ -36,7 +50,7 @@ func init() { // 插件主体
|
||||
))
|
||||
})
|
||||
// 戳一戳
|
||||
engine.On("notice/notify/poke", zero.OnlyToMe).SetBlock(false).FirstPriority().
|
||||
engine.On("notice/notify/poke", zero.OnlyToMe).SetBlock(false).SetPriority(prio).
|
||||
Handle(func(ctx *zero.Ctx) {
|
||||
var nickname = zero.BotConfig.NickName[0]
|
||||
switch {
|
||||
@ -55,18 +69,18 @@ func init() { // 插件主体
|
||||
// 群空调
|
||||
var AirConditTemp = map[int64]int{}
|
||||
var AirConditSwitch = map[int64]bool{}
|
||||
engine.OnFullMatch("空调开").SetBlock(true).FirstPriority().
|
||||
engine.OnFullMatch("空调开").SetBlock(true).SetPriority(prio).
|
||||
Handle(func(ctx *zero.Ctx) {
|
||||
AirConditSwitch[ctx.Event.GroupID] = true
|
||||
ctx.SendChain(message.Text("❄️哔~"))
|
||||
})
|
||||
engine.OnFullMatch("空调关").SetBlock(true).FirstPriority().
|
||||
engine.OnFullMatch("空调关").SetBlock(true).SetPriority(prio).
|
||||
Handle(func(ctx *zero.Ctx) {
|
||||
AirConditSwitch[ctx.Event.GroupID] = false
|
||||
delete(AirConditTemp, ctx.Event.GroupID)
|
||||
ctx.SendChain(message.Text("💤哔~"))
|
||||
})
|
||||
engine.OnRegex(`设置温度(\d+)`).SetBlock(true).FirstPriority().
|
||||
engine.OnRegex(`设置温度(\d+)`).SetBlock(true).SetPriority(prio).
|
||||
Handle(func(ctx *zero.Ctx) {
|
||||
if _, exist := AirConditTemp[ctx.Event.GroupID]; !exist {
|
||||
AirConditTemp[ctx.Event.GroupID] = 26
|
||||
@ -85,7 +99,7 @@ func init() { // 插件主体
|
||||
))
|
||||
}
|
||||
})
|
||||
engine.OnFullMatch(`群温度`).SetBlock(true).FirstPriority().
|
||||
engine.OnFullMatch(`群温度`).SetBlock(true).SetPriority(prio).
|
||||
Handle(func(ctx *zero.Ctx) {
|
||||
if _, exist := AirConditTemp[ctx.Event.GroupID]; !exist {
|
||||
AirConditTemp[ctx.Event.GroupID] = 26
|
||||
@ -102,4 +116,29 @@ func init() { // 插件主体
|
||||
))
|
||||
}
|
||||
})
|
||||
initCharList()
|
||||
engine.OnFullMatchGroup(chatList, zero.OnlyToMe).SetBlock(true).SetPriority(prio).Handle(
|
||||
func(ctx *zero.Ctx) {
|
||||
rand.Seed(time.Now().Unix())
|
||||
kimo, err := ioutil.ReadFile(dbfile)
|
||||
if err != nil {
|
||||
log.Println("err:", err)
|
||||
}
|
||||
key := ctx.MessageString()
|
||||
count := gjson.Get(helper.BytesToString(kimo), key+".#").Int()
|
||||
text := gjson.Get(helper.BytesToString(kimo), fmt.Sprintf("%s.%d", key, rand.Intn(int(count)))).String()
|
||||
ctx.SendChain(message.At(ctx.Event.UserID), message.Text(text))
|
||||
})
|
||||
}
|
||||
|
||||
func initCharList() {
|
||||
kimo, err := ioutil.ReadFile(dbfile)
|
||||
if err != nil {
|
||||
log.Println("err:", err)
|
||||
}
|
||||
//打开文件
|
||||
gjson.Get(helper.BytesToString(kimo), "@this").ForEach(func(key, value gjson.Result) bool {
|
||||
chatList = append(chatList, key.String())
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
17
plugin_chat/data.go
Normal file
17
plugin_chat/data.go
Normal file
@ -0,0 +1,17 @@
|
||||
package chat
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/FloatTech/ZeroBot-Plugin/utils/file"
|
||||
"github.com/FloatTech/ZeroBot-Plugin/utils/process"
|
||||
)
|
||||
|
||||
// 加载数据库
|
||||
func init() {
|
||||
go func() {
|
||||
process.SleepAbout1sTo2s()
|
||||
_ = os.MkdirAll(dbpath, 0755)
|
||||
_, _ = file.GetLazyData(dbfile, false, true)
|
||||
}()
|
||||
}
|
||||
56
plugin_curse/curse.go
Normal file
56
plugin_curse/curse.go
Normal file
@ -0,0 +1,56 @@
|
||||
package curse
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/FloatTech/ZeroBot-Plugin/control"
|
||||
"github.com/FloatTech/ZeroBot-Plugin/utils/web"
|
||||
log "github.com/sirupsen/logrus"
|
||||
zero "github.com/wdvxdr1123/ZeroBot"
|
||||
"github.com/wdvxdr1123/ZeroBot/extension/rate"
|
||||
"github.com/wdvxdr1123/ZeroBot/message"
|
||||
"github.com/wdvxdr1123/ZeroBot/utils/helper"
|
||||
)
|
||||
|
||||
const (
|
||||
qqReg = `\d+`
|
||||
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
|
||||
curseURL = "https://zuanbot.com/api.php?level=min&lang=zh_cn"
|
||||
)
|
||||
|
||||
var (
|
||||
engine = control.Register("curse", &control.Options{
|
||||
DisableOnDefault: false,
|
||||
Help: "骂人\n" +
|
||||
"- 骂他[@xxx]|骂他[qq号]\n",
|
||||
})
|
||||
limit = rate.NewManager(time.Minute, 20)
|
||||
)
|
||||
|
||||
func init() {
|
||||
engine.OnPrefix("骂他").SetBlock(true).FirstPriority().Handle(func(ctx *zero.Ctx) {
|
||||
if !limit.Load(ctx.Event.GroupID).Acquire() {
|
||||
ctx.SendChain(message.Text("请稍后重试0x0..."))
|
||||
return
|
||||
}
|
||||
var uid int64
|
||||
var text string
|
||||
reg := regexp.MustCompile(qqReg)
|
||||
if len(ctx.Event.Message) > 1 && ctx.Event.Message[1].Type == "at" {
|
||||
uid, _ = strconv.ParseInt(ctx.Event.Message[1].Data["qq"], 10, 64)
|
||||
} else if reg.MatchString(ctx.Event.RawMessage) {
|
||||
result := reg.FindAllString(ctx.Event.RawMessage, -1)
|
||||
uid, _ = strconv.ParseInt(result[0], 10, 64)
|
||||
} else if uid == 0 {
|
||||
uid = ctx.Event.UserID
|
||||
}
|
||||
data, err := web.ReqWith(curseURL, "GET", "", ua)
|
||||
if err != nil {
|
||||
log.Println("err为:", err)
|
||||
}
|
||||
text = helper.BytesToString(data)
|
||||
ctx.SendChain(message.At(uid), message.Text(text))
|
||||
})
|
||||
}
|
||||
17
plugin_funny/data.go
Normal file
17
plugin_funny/data.go
Normal file
@ -0,0 +1,17 @@
|
||||
package funny
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/FloatTech/ZeroBot-Plugin/utils/file"
|
||||
"github.com/FloatTech/ZeroBot-Plugin/utils/process"
|
||||
)
|
||||
|
||||
// 加载数据库
|
||||
func init() {
|
||||
go func() {
|
||||
process.SleepAbout1sTo2s()
|
||||
_ = os.MkdirAll(dbpath, 0755)
|
||||
_, _ = file.GetLazyData(dbfile, false, true)
|
||||
}()
|
||||
}
|
||||
63
plugin_funny/laugh.go
Normal file
63
plugin_funny/laugh.go
Normal file
@ -0,0 +1,63 @@
|
||||
package funny
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"math/rand"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/FloatTech/ZeroBot-Plugin/control"
|
||||
log "github.com/sirupsen/logrus"
|
||||
zero "github.com/wdvxdr1123/ZeroBot"
|
||||
"github.com/wdvxdr1123/ZeroBot/extension/rate"
|
||||
"github.com/wdvxdr1123/ZeroBot/message"
|
||||
"github.com/wdvxdr1123/ZeroBot/utils/helper"
|
||||
)
|
||||
|
||||
const (
|
||||
qqReg = `\d+`
|
||||
dbpath = "data/funny/"
|
||||
dbfile = dbpath + "laugh.txt"
|
||||
)
|
||||
|
||||
var (
|
||||
engine = control.Register("curse", &control.Options{
|
||||
DisableOnDefault: false,
|
||||
Help: "讲个笑话\n" +
|
||||
"- 讲个笑话[@xxx]|讲个笑话[qq号]\n",
|
||||
})
|
||||
limit = rate.NewManager(time.Minute, 20)
|
||||
)
|
||||
|
||||
func init() {
|
||||
engine.OnPrefix("讲个笑话").SetBlock(true).FirstPriority().Handle(func(ctx *zero.Ctx) {
|
||||
if !limit.Load(ctx.Event.GroupID).Acquire() {
|
||||
ctx.SendChain(message.Text("请稍后重试0x0..."))
|
||||
return
|
||||
}
|
||||
var uid int64
|
||||
var text string
|
||||
reg := regexp.MustCompile(qqReg)
|
||||
if len(ctx.Event.Message) > 1 && ctx.Event.Message[1].Type == "at" {
|
||||
uid, _ = strconv.ParseInt(ctx.Event.Message[1].Data["qq"], 10, 64)
|
||||
} else if reg.MatchString(ctx.Event.RawMessage) {
|
||||
result := reg.FindAllString(ctx.Event.RawMessage, -1)
|
||||
uid, _ = strconv.ParseInt(result[0], 10, 64)
|
||||
} else if uid == 0 {
|
||||
uid = ctx.Event.UserID
|
||||
}
|
||||
si := ctx.GetStrangerInfo(uid, false)
|
||||
nickname := si.Get("nickname").String()
|
||||
laugh, err := ioutil.ReadFile(dbfile)
|
||||
if err != nil {
|
||||
log.Println("err:", err)
|
||||
}
|
||||
laughList := strings.Split(helper.BytesToString(laugh), "\n")
|
||||
rand.Seed(time.Now().Unix())
|
||||
text = laughList[rand.Intn(len(laughList))]
|
||||
text = strings.Replace(text, "%name", nickname, -1)
|
||||
ctx.SendChain(message.Text(text))
|
||||
})
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user