结合之前的那个插件,胡萝卜+大棒政策
藤原白叶 发布的帖子
-
HoshinoYumemi - Plugin
HoshiniYumemi
一个基于Mirai的功能性机器人
项目地址:HoshiniYumemi
下载地址:HoshiniYumemiReleases主要功能:
- 好感度 (<del>说是好感度其实是权限等级</del>,好感度为负值则会导致机器人不理你,这时只能通过签到慢慢回复)
- 金币系统 (由于API存在限额,此设定主要是为了防止群友滥用)
- 签到 (签到图像布局<del>抄袭</del>借鉴自真寻Bot)
- 聊天机器人 (不同好感设定有不同的回应词条,若数据中无词条则接入腾讯聊天机器人)
- 腾讯云机器翻译 (需要好感度等级不小于4,金币2*String.Length来使用,好感度等级不低于7级则免金币使用
- 腾讯云OCR (由于开通OCR需要企业认证(貌似),所以目前所有关于这一方面的函数都打了//)
- Saucenao搜图 (需要好感度等级不小于5,金币1000枚才可以使用,好感度等级不小于8级时免金币使用)
- Lolicon搜图 (需要好感度等级不低于4级,金币100*获取数量方可使用,好感度等级不低于7级则免金币使用)
- 黑名单 (将好感度设置为-800并将一切增加好感度的行为变为减少好感度)
- 礼物商店 (给Bot送礼物)
- (TODO)各种其他娱乐型BOT的功能,如小游戏等
功能详细介绍:
一、好感度系统:
-
1、系统介绍
好感度系统为一切功能的一个前置系统,之所以在前面将好感度称为权限等
级,是因为好感度决定解锁的机器人功能。好感度的获取途径主要有:
1、签到;2、和机器人聊天;3、给机器人送礼物;4、在好感度等级足够的
情况下和机器人进行亲密行为(如贴贴,摸头,叫老婆等);5、夸机器人;
6、todo失去好感度的主要原因:
1、辱骂机器人;2、在好感度不足的情况下进行亲密行为(如贴贴,摸头,
叫老婆等);3、被管理员针对;4、todo好感度上限:
普通群员上限为800;管理员为900;在data\srh.shirakana.hoshino
yumemi.plugin\HoshinoYumemiUser.yml中SpecialUser中指定的QQ
用户为1000好感度指令:
@机器人 好感(查看好感)
/usrcmd(我的) kk(查看好感)(查看好感)
/koukann <add/decrease> Member Amount(指定Member好感加减)
/koukann <addall/decreaseall> Amount(所有群成员好感统一加减)
/好感度 添加/减少/全体添加/全体减少 分别对应以上指令 -
2、好感度存储:
#### data\srh.shirakana.hoshinoyumemi.plugin\HoshinoYumemiKouKann.yml # 好感度列表 KouKannList: 123456: 0.0 1234567: 1000.0 QQ号码: 好感度数值(Double)
二、金币系统:
-
1、系统介绍
目前金币系统仅作为限制功能使用的筹码,以后会出小游戏功能
指令:
@机器人 金币(查看金币)
/usrcmd(我的) mon(查看金钱)(查看金币)
/money <add/decrease> Member Amount(指定Member金币加减)
/金钱 添加/减少 分别对应以上指令 -
2、金币存储
#### data\srh.shirakana.hoshinoyumemi.plugin\HoshinoYumemiMoney.yml # 金钱列表 Money: 12345: 0.0 123456: 0.0 QQ号码:金币数量
三、签到系统:
-
1、系统介绍:
在群内输入签到,或者AT机器人输入签到,即可进行签到,签到会根据抽卡机制
按照不同段位给予相应的随机好感度以及金币(配图)data\srh.shirakana
.hoshinoyumemi.plugin\HoshinoYumemiUser.yml中bool列表为当日签到状态
于每日0点重置
四、聊天系统:
-
1、系统介绍:
需要配置腾讯云APIID和APIKey,配置位置在config\srh.shirakana.hoshino
yumemi.plugin\HoshinoYumemi_TencentCloudApiConfig.yml,一切的聊天
内容均需要AT机器人触发(特殊动作请注意好感度,可能会扣好感)当机器人受到符合条件的MessageEvent后,优先从data\srh.shirakana.hoshi
noyumemi.plugin\HoshinoYumemiReplyList.yml中读取回复信息,若该列表中
无响应信息,则使用腾讯云聊天机器人(均为模糊匹配,腾讯云聊天机器人为腾讯
云自然语言处理中的聊天机器人)聊天机器人指令:
/DataList <replyadd/replyadd> inputMsg KoukannLevel outputMsg其
中inputMsg为输入的信息,KoukannLevel为好感度等级(好感度/100).toInt
outputMsg为回复信息(该条回复会被写入上面提到的文件中)
/数据 添加回复/删除回复 分别对应以上指令 -
2、回复列表存储:
#### data\srh.shirakana.hoshinoyumemi.plugin\HoshinoYumemiUser.yml # 回复列表 ReplyList: 1919810: - 0: 像你这种又屑又臭的人,有在这个群存在的必要吗?!(恼) - 0: 像你这种又屑又臭的人,为什么还在这个群里呢?(疑惑) - 0: 像你这种又屑又臭的人,还是赶紧退群罢!(无慈悲) - 1: 像你这种又屑又臭的人,有在这个群存在的必要吗?!(恼) - 1: 像你这种又屑又臭的人,为什么还在这个群里呢?(疑惑) - 1: 像你这种又屑又臭的人,还是赶紧退群罢!(无慈悲) - 2: 像你这种又屑又臭的人,有在这个群存在的必要吗?!(恼) - 2: 像你这种又屑又臭的人,为什么还在这个群里呢?(疑惑) - 2: 像你这种又屑又臭的人,还是赶紧退群罢!(无慈悲) - 3: 像你这种又屑又臭的人,有在这个群存在的必要吗?!(恼) - 3: 像你这种又屑又臭的人,为什么还在这个群里呢?(疑惑) - 3: 像你这种又屑又臭的人,还是赶紧退群罢!(无慈悲) - 4: 请不要唐突恶臭! - 4: 为什么总是要这么臭呢? - 5: 请不要唐突恶臭! - 5: 为什么总是要这么臭呢? - 6: 请不要唐突恶臭! - 6: 为什么总是要这么臭呢? - 7: 臭死了 - 7: 好臭啊 - 8: 臭死了 - 8: 好臭啊 - 9: 如果是你的话,就算是恶臭的也可以接受 - 9: 但是,我还是更喜欢不臭的你 - 10: 如果是你的话,就算是恶臭的也可以接受 - 10: 但是,我还是更喜欢不臭的你 114514: - 0: 像你这种又屑又臭的人,有在这个群存在的必要吗?!(恼) - 0: 像你这种又屑又臭的人,为什么还在这个群里呢?(疑惑) - 0: 像你这种又屑又臭的人,还是赶紧退群罢!(无慈悲) - 1: 像你这种又屑又臭的人,有在这个群存在的必要吗?!(恼) - 1: 像你这种又屑又臭的人,为什么还在这个群里呢?(疑惑) - 1: 像你这种又屑又臭的人,还是赶紧退群罢!(无慈悲) - 2: 像你这种又屑又臭的人,有在这个群存在的必要吗?!(恼) - 2: 像你这种又屑又臭的人,为什么还在这个群里呢?(疑惑) - 2: 像你这种又屑又臭的人,还是赶紧退群罢!(无慈悲) - 3: 像你这种又屑又臭的人,有在这个群存在的必要吗?!(恼) - 3: 像你这种又屑又臭的人,为什么还在这个群里呢?(疑惑) - 3: 像你这种又屑又臭的人,还是赶紧退群罢!(无慈悲) - 4: 请不要唐突恶臭! - 4: 为什么总是要这么臭呢? - 5: 请不要唐突恶臭! - 5: 为什么总是要这么臭呢? - 6: 请不要唐突恶臭! - 6: 为什么总是要这么臭呢? - 7: 臭死了 - 7: 好臭啊 - 8: 臭死了 - 8: 好臭啊 - 9: 如果是你的话,就算是恶臭的也可以接受 - 9: 但是,我还是更喜欢不臭的你 - 10: 如果是你的话,就算是恶臭的也可以接受 - 10: 但是,我还是更喜欢不臭的你 文件结构为: inputMsg1 - KoukannLevel1: outputMsg1 - KoukannLevel1: outputMsg2 - KoukannLevel2: outputMsg1 inputMsg2 - KoukannLevel1: outputMsg1 - KoukannLevel2: outputMsg1 - KoukannLevel2: outputMsg2 当同一个KoukannLevel有多个outputMsg时,随机选取其中一个
五、各个API的使用:
-
配置文件:
需要配置config\srh.shirakana.hoshinoyumemi.plugin\HoshinoYumemi
_TencentCloudApiConfig.yml中ID和Key需要配置config\srh.shirakana.hoshinoyumemi.plugin\HoshinoYumemi
SaucenaoApiConfig.yml中Key -
指令:
/TCAPI(腾讯云) MT(机器翻译) InputString TargetLang
其中InputString为要翻译的字符串,空格用下划线"_"代替,TargetLang为
目标语言,需要使用简写,如中文“zh”;日语“jp”;英语“en”
/eroImage(涩图) g(发几张) Tag Amount
获取Amount张(小于等于5)lolicon涩图,不支持R18,发送为转发消息模式
30秒撤回,Tag可使用rand来代表随机Tag
/eroImage(涩图) s(搜索) Image
使用Saucenao搜索指定图片
六、礼物商店
-
指令:
/usrcmd(我的) giftlist(列出礼物列表)
/usrcmd(我的) gift ID(给机器人送指定ID的礼物)
/DataList <shopadd/shopdel> Name Cost(加减名为Name售价Cost的商品)
/我的 礼物列表/送礼物
/数据 添加商品/删除商品
机器人好感度获取为物品价格/1000 -
文件:
#### data\srh.shirakana.hoshinoyumemi.plugin\HoshinoYumemiShop # 商店列表 Shop: - 古河面包: 1000.0 - 商品名: 售价
七、其他指令
- 黑名单:/KouKann <bladd/blrem> Member(将指定群员添加/移除出黑名单>
- @机器人 睡吧(关闭插件功能)
- @机器人 起床吧(开启插件功能)
八、打工和学位
-
介绍:
打工功能,不过与其他娱乐机器人不同,想要打工,必须取得相应专业的学位
而学位可以通过考试获得,考试的题目需机器人的管理者自行建库。
指令:
/AdmCmd addTest <Specialize> <Question> <Answer>
#为Specialize专业添加Question问题,答案为Answer(专业不存在则创建)
/AdmCmd addWork <requiredSpecialize> <reward>
#添加requiredSpecialize专业对应的工作,基础工资为reward(需要存在
专业“requiredSpecialize”(上一个指令创建)
/AdmCmd delTest <Specialize> <Question>
/AdmCmd delWork <requiredSpecialize>
#下面两个为删除相应内容
/usrcmd LS
#查看所有存在的专业
/usrcmd mysp
#查看自己的专业及学位
/usrcmd giveupmysp
#放弃自己的学位
/usrcmd jointest <Specialize>
#参加指定专业“Specialize”的考试
/usrcmd exittest
#退出当前考试
/我的 参加考试/退出考试/有什么专业/我的专业/放弃学位 -
文件:
#### data\srh.shirakana.hoshinoyumemi.plugin\HoshinoYumemiCourse # 题目 Course: 数学: - 1+1=?: 2 - 题目: 答案 专业: - 题目: 答案 还有两个json,存储用户和工作()
更新日志:
6月10日-
1、名称显示修复 2、降低了聊天获取的好感度 3、降低了签到获取的金币 4、打工、学位系统实装并进入测试
6月14日-
1、标准化了试题的格式 2、修复了考试的几个BUG
6月29日-
1、添加了中文指令 2、腾讯云NLP聊天机器人开关(使用/AdmCmd Disable add/del 群号) 群号为0时则操作机器人所在的所有群
-
RE: ToriShiroJimaAdminPlugin - 一个简易的大清洗插件
新功能:管理偏执度系统已经实装(在内部测试中)
指针指向的位置为 (1.8 * 当前偏执度) ° 指针指向位置之前的表盘会变红
目标栏有9个,会获取9个已被清洗的用户头像填充(如果不足9个那就会填充当前数量) -
写定时任务出现的一些问题()
今天试图用Timer写定时任务,然后出现了一个严重的问题:部分函数只能协程或者suspend函数调用(比如说sendMessage)。
但是Timer中函数貌似不能suspend()
想问一下各位大佬,这种问题怎么解决()
我目前的解决方法太过暴力(),就是每秒读取一下系统时间做匹配,但是还是试图找到一种高效的方法 -
RE: ToriShiroJimaAdminPlugin - 一个简易的大清洗插件
目前还有一个接入消息审核的想法,但是百度云消息审核限额太少,又有点贵(在启用的群聊较多的情况下),所以打算以后看其他的机器学习,或者是以后自己训练一个消息审核的模型然后套入()
-
ToriShiroJimaAdminPlugin - 一个简易的大清洗插件
ToriShiroJimaAdminPlugin
- 一个基于 mirai 和 mirai-console 的粉丝群管理插件,
其创建的导火索是两个粉丝群被冲塔以及内鬼冲爆,主要是通过建立大清洗(P社玩家狂喜)和相关警告机制来尽可能的使群不被冲爆。
项目地址:
shirakana-admin-bot
插件介绍:
本插件实现的功能主要有:
- 1、指定启用的群聊。
- 2、识别所有启用的群聊中非重复成员并统计之。
- 3、用一个可以由拥有相关权限用户操作的“黑名单”来实现自动清理重复加群的用户(防止同一个人为了报复在多个群里实行炸群行动)。
- 4、大清洗,清洗名单(警告作用),名单加急(开始清洗),群内点名枪毙公决(踢出群)。
- 5、清理指定时间内未发言的群员(清理定时炸弹),这个过程排除处于保护列表或拥有专属头衔亦或是在群备注中注明了指定语句的群员。
- 6、XX偏执度系统,创建一个XX偏执度变量,该变量逐日自增,也可由管理员控制,到达50开始小清洗,到达100进行大清洗并清零,XX偏执度会通过图片的方式发送,如同下图:
- 7、(TODO)根据群友以及社区的建议写的其他功能。
- 8、
彩蛋功能。
插件指令及其作用
- ([]括起来的代表可选参数,<>括起来的代表必填参数):
org.fujiwara.shirakana.adminbot.plugin:command.selectgroups
/SelectGroups <add/del> <群号>:添加/删除功能启用的群聊 /SelectGroups list:查看启用功能的群 /SelectGroups reload:重载非重复群员统计 /SelectGroups amount:查看非重复群员个数
org.fujiwara.shirakana.adminbot.plugin:command.cleanlist
/CleanList bigclean <add/del/list> <GroupId> [GroupMembersTarget] #大清洗保护名单操作,将群聊GroupId的指定群员GroupMembersTarget添加/删除入功能5的例外名单(保护名单) /CleanList repeat <add/del/list> <GroupId> [GroupMembersTarget] #禁止重复加群用户名单操作,将群聊GroupId的指定群员GroupMembersTarget添加/删除入禁止重复加群的名单 #(在此名单内的用户无法添加一个以上的插件启用群聊) /CleanList smallclean <add/del/list> <GroupId> [GroupMembersTarget] #小清洗列表操作,将群聊GroupId的指定群员GroupMembersTarget添加/删除入清洗名单 #注:GroupMembersTarget为QQ号,可指定多个QQ,中间用空格隔开 /CleanList help #查看插件的总帮助
org.fujiwara.shirakana.adminbot.plugin:command.tutu
全都给图图乐/Tutu SmallClean <群号>: #在指定群开启小清洗(清洗目标为CleanList smallclean指定的人,执行后可以从中选择 #任意人数进行清洗 /Tutu BigClean: #开启大清洗(会跳过CleanList bigclean指定的人、有群专属头衔的人、群备注包含 #ShirakanaBigCleanSetting.nameStandard的人)默认目标为2个月不发言的群员 /Tutu List: #查看被清洗者名单 /Tutu Add <QQ>: #将某人加入已被清洗名单 /Tutu Del <QQ>: #将某人删除出已被清洗名单 /Tutu kick: #在所有的群踢出“已被清洗”名单中的群员 /Tutu help: #查看帮助 #注:使用小清洗指令踢出的群员会被加入“已被清洗”名单(相当于本群黑名单) #此名单中用户无法加入任何启用该插件的群(可以找管理协商解决问题)
org.fujiwara.shirakana.adminbot.plugin:command.Paranoid
/Paranoid add <Amount>:添加指定数量的偏执度 /Paranoid decrease <Amount>:减少指定数量的偏执度 /Paranoid amount:查看当前偏执度 注意:偏执度会于每天的20:30 +2 ,并在启用群的群公告发送。
效果图:
org.fujiwara.shirakana.adminbot.plugin:command.cleanrepeat
/CleanRepeat <GroupTarget>:若禁止重复加群名单中的用户已添加指定群聊(GroupTarget) 则将其从插件启用的其他群聊中踢出
数字恶臭化工具(彩蛋)/To114514 <input> #将input(Long)转换为一个114514序列组成的表达式
实现方法:我在B站的文章
配置文件及DATA
\config\org.fujiwara.shirakana.adminbot.plugin\Shirakana_AdminBot_Setting
# 大清洗开关(偏执度达到100大清洗) big_clean_switch: true //偏执度系统功能(未实现) # 小清洗开关(偏执度为50时小清洗) small_clean_switch: true //偏执度系统功能(未实现) # 重复加群自动拒绝及清理开关 repeat_join_clean: true //偏执度系统功能(未实现) # 重复加群白名单/黑名单(True为黑名单模式,False为白名单模式) repeat_join_clean_mode: true //重复加群清理的模式,黑名单模式会清理名单中重复加群的人,白名单模式则会清理不在名单中的人 # 命名标准(群备注包含此字符串的不会被大清洗) Standard_Name: (无)//大清洗时,如果群员的群备注中有此字符串,则不会被清理 # 大清洗时间,最后一次发言时间在这个数值(天)之前的群友会被清洗 Standard_Time: '' //大清洗目标最后一次发言的时间(默认为60天,目前无法改变)
\data\org.fujiwara.shirakana.adminbot.plugin\Shirakana_AdminBot_GroupMember_Data.yml
# 统计群员 selected_group_members: [] //该列表存储非重复群员的QQ号 # 统计群员(重复加群重点清理目标) group_members_target: [] //当重复加群设置为黑名单时,清理该列表中的群员,为白名单时,清理该名单之外的群员 # 统计群员(管理指定的小清洗目标) small_clean_target: [] //该列表为小清洗指定的群员 # 统计群员(管理指定的大清洗目标) big_clean_target: [] //该列表为大清洗的保护名单(在此名单中的人不会被大清洗) # 统计开启功能的群聊 selected_groups: [] # 偏执度(管理员San值) big_clean_paranoia: 0 //管理偏执度 # 黑名单 black_list: [] //黑名单(即上文提到的“被清洗状态”名单)
Flag文件建议不要动,也不需要动
\data\org.fujiwara.shirakana.adminbot.plugin
请将123改为你的管理员内部群
清洗发动时的效果图:
第一次学着写mirai插件,还是用一个不太熟悉的语言(),
希望社区的各位狠狠的批评,来促使我改进。
Mirai框架的许多内容还有我未了解的地方,许多类和函数的使用方法也不是太了解,所以插件可能写的不怎么好,希望各位能够指导我改进,以后可能会搞一大堆奇奇怪怪功能的插件。
至于为什么某些指令需要指定群号,这样做的目的主要是为了能够在一个外部群或者是机器人私聊时操作()
5月25日更新:修复了许多致命的BUG
更新:
- 8月19日:
删除了一些不实用的功能,替换成了一些更加实用的功能,同时部分指令也有一定的变化。
前段时间润去跑深度学习了(TTS),这段时间润回来维护项目了,打算搞一个Api合成白羽语音并接入我的另一个插件()
- 一个基于 mirai 和 mirai-console 的粉丝群管理插件,