MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接
    1. 主页
    2. Moyuyanli
    3. 主题
    • 资料
    • 关注 2
    • 粉丝 11
    • 主题 14
    • 帖子 242
    • 最佳 24
    • 有争议的 1
    • 群组 2

    Moyuyanli 创建的主题

    • Moyuyanli

      [壶言鉴权]一个能帮助你快速开发Mirai插件的前置插件
      插件发布 • • Moyuyanli

      4
      1
      赞同
      4
      帖子
      570
      浏览

      Moyuyanli

      HuYanAuthorize 壶言鉴权

      仓库地址:github

      说明

      一个用于针对简化mirai插件开发的前置插件,简化的内容为:

      自动化添加消息监听 针对用户(Friend),群(Group),群成员(GroupMember),群管理(GroupAdmin)都有独立的权限 权限是通过分组形式添加,可以继承 自动匹配触发内容(直接匹配或正则匹配) 权限code也自定义添加 使用 添加依赖

      在build.gradle中

      dependencies { compileOnly("cn.chahuyun:HuYanAuthorize:1.2.0") }

      在插件的onEnable方法中启用

      java

      //添加本插件的注册消息包信息 PermissionServer.INSTANCE.registerMessageEvent(this,"cn.chahuyun.authorize.event");

      kotlin

      PermissionServer.registerMessageEvent(this, "cn.chahuyun.authorize.event")

      在对应的包里面建立一个class,然后在类上面添加@EventComponent注解,表明这个类下面有需要注册的消息事件方法。

      建立一个方法,只有一个消息参数,无返回值。

      //添加消息鉴权注解 @MessageAuthorize(text = "你好") public void reply(MessageEvent event) { event.getSubject().sendMessage("你好呀!"); } @MessageAuthorize(text = ["你好"]) suspend fun reply(event: MessageEvent) { event.subject.sendMessage("你好啊") }

      即可完成最基本的使用!

      消息鉴权api

      MessageAuthorize注解的所有可操作属性

      text 匹配文本

      text: Array<String>

      用于匹配的文本。

      在默认模式下,有任何一个String字符串,于其中一个相同,即匹配成功。 在正则模式下,取第一个匹配。 custom 自定义匹配

      custom: KClass<out CustomPattern>

      自定义匹配规则。

      实现CustomPattern接口即可。

      在匹配方式设置为CUSTOM时启用,启用时将忽略text的配置。

      messageMatching 消息匹配方式

      messageMatching: MessageMatchingEnum

      消息的匹配方式,有:

      TEXT 文本匹配 REGULAR 正则匹配 CUSTOM 自定义匹配 messageConversion 消息转换方式

      messageConversion: MessageConversionEnum

      用于在匹配消息的时候,消息转换为string的方式。

      CONTENT contentToString() MIRAI_CODE serializeToMiraiCode() JSON serializeToJsonString() userPermissions 用户权限

      userPermissions: Array<String>

      需要用户拥有的权限。

      自己的权限需要进行注册,注册方式请查看权限注册。

      userPermissionsMatching 用户权限匹配方式

      userPermissionsMatching: PermissionMatchingEnum

      如果需要用户权限有多个,多个权限之间的匹配方式.

      or 或,满足一个即匹配成功 and 且,都满足才匹配成功 groupPermissions 群权限

      groupPermissions: Array<String>

      要求的群权限,跟用户同理,只不过要求的是群的权限。

      groupPermissionsMatching 群权限匹配方式

      groupPermissionsMatching:PermissionMatchingEnum

      同上面

      userInGroupPermissionsAssociation 用户与群权限的匹配方式

      userInGroupPermissionsAssociation: PermissionMatchingEnum

      如果某一条指令,即要求用户权限,又要求群权限。

      这里可以控制两种权限的合并方式。

      同上面用户的匹配方式。

      priority 优先级

      消息响应优先级,跟mirai的消息注册一样,一般不建议修改。

      concurrency 消息的处理方式

      消息的处理方式,跟mirai的消息注册一样,一般不建议修改。

      权限

      权限是本插件的核心,用于对整个消息注册做控制。

      采用的是code形式,是String字符串。

      本插件默认权限:

      owner 主人权限,最高权限,类比root admin 管理员权限,比root低

      不可使用的code:

      null 表明无权限

      使用方法:

      AuthPerm.OWNER AuthPerm.ADMIN AuthPerm.NULL 自定义注册权限

      fun registerPermCode(plugin: JvmPlugin, vararg perms: Perm)
      注册权限很简单。

      权限可以一次性注册多个。

      java

      PermissionServer.INSTANCE.registerPermCode(this,new Perm("test","一个测试的权限")...); PermissionServer.registerPermCode(this, Perm("test", "一个测试的权限"))

      注册成功后,会打印debug日志显示是否注册成功,或者该权限是否被别的插件注册。

      然后就可以在MessageAuthorize中的权限列表使用了。

      注意:

      这里注册用的权限是新建的,仅供于注册用 想要使用注册后的权限,请使用下面的工具获取 操作权限

      权限的实现分两部分,一部分是权限组(PermGroup),权限组有权限(Perm)和用户(User)。

      对于权限组,在依赖插件中如果手动操作了权限组,可以使用PermGroup自己的save()方法保存,或者使用工具操作权限组。

      操作权限组指令:

      指令 含义 案例 案例含义 +perm (权限组名称) [权限code] 创建一个权限组,并添加对应的权限,权限组必填,code选填。 +perm 测试组 admin 添加或修改一个名叫测试组的权限组,并为测试组添加权限admmin。 +perm (权限组名称) [%父权限组名称] 继承一个权限组,从父权限组哪里继承权限。指令能添加和修改权限组,并且能共用。 +perm 测试组 %主人 admin 添加或修改一个名叫测试组的权限组,继承主人权限组的所有权限,并添加admin权限。 -perm (权限组名称) [权限code] 删除一个权限或权限组,当不填权限code时,会尝试删除整个权限组。 -perm 测试组 admin 删除权限组测试组的权限admin。 =perm [权限组名称] 查询权限组信息,也可以查询单独一个权限组的信息。 =perm 查询所有权限组信息

      用户操作指令:

      用户分为四类用户,他们有不同的作用域。

      全局用户

      这个用户是作用于所有位置的一个单qq用户。

      指令 含义 案例 案例含义 +global (@user) (权限组名称) 添加这个用户到对应权限组,这里可以at,可以直接填qq。 +global @放空 主人 添加放空到主人权限组 -global (@user) (权限组名称) 还没写 群成员用户

      这个用户作用于指定群的某个一群成员用户。

      指令 含义 案例 案例含义 +member (@user) (权限组名称) 添加这个群成员到对应权限组,这里只能at,并且得在群里操作 +member @放空 主人 添加群成员放空到主人权限组 -member (@user) (权限组名称) 还没写 群管理用户

      这个用户是对于一个群的群主和管理员的用户。

      指令 含义 案例 案例含义 +admin (权限组名称) 添加这个群的管理员到对应权限组,只能在群里操作 +admin 主人 添加本群管理员到主人权限组 -admin (权限组名称) 还没写 群用户

      这个用户跟上面三个不一样,这个代表的是这个群拥有的权限,而不是这个群里面所有人拥有的权限。

      指令 含义 案例 案例含义 +group (权限组名称) 添加这个群到对应权限组,只能在群里操作 +group 主人 添加本群到主人权限组 -group (权限组名称) 还没写 其他api

      还开发一些好用的工具类,供大家使用。

      消息事件注册(PermissionServer)

      PermissionServer.kt

      带指令前缀的注册

      fun registerMessageEvent(plugin: JvmPlugin, packageName: String, prefix: String)

      指令前缀可为""。

      权限操作工具类(PermUtil)

      PermUtil.kt

      获取一个权限

      fun takePerm(code: String): Perm

      只能获取已经注册过的权限,未注册的权限会抛错。

      PermUtil.takePerm("admin") 获取一个权限组

      fun talkPermGroupByName(name: String): PermGroup

      获取一个权限组,不存在则新建。

      PermUtil.talkPermGroupByName("测试组") 检查这个用户有没有这个权限

      fun checkUserHasPerm(user: User, code: String): Boolean

      用户的获取请看下面

      //获取一个群用户 val group = User.group(group.id) PermUtil.checkUserHasPerm(group, "admin") 将这个用户添加到对应的权限组

      fun addUserToPermGroupByName(user: User, name: String): Boolean

      PermUtil.addUserToPermGroupByName(group, "测试组") 将这个权限添加到对于的权限组

      fun addPermToPermGroupByName(perm: Perm, name: String): Boolea
      fun addPermToPermGroupByPermGroup(perm: Perm, permGroup: PermGroup): Boolean

      将这个用户从对应的权限组删除

      fun delUserFromPermGroupByName(user: User, name: String): Boolean

      用户的操作(User)

      UserUtil.kt

      获取用户 fun globalUser(userId: Long): User 查询或新建一个全局用户 fun group(groupId: Long): User 查询或新建一个群用户 fun groupAdmin(groupId: Long): User 查询或新建一个群管理用户 fun member(groupId: Long, userId: Long): User 查询或新建一个群成员用户

      kotlin

      UserUtil.group(390444068) UserUtil.member(390444068, 572490972)

      java

      UserUtil.INSTANCE.group(390444068L); UserUtil.INSTANCE. member(390444068L,572490972L); 消息工具类(MessageUtil)

      MessageUtil.kt

      这个类比较简单,具体看看源码就明白了,但是好用!

      日志工具类(Log)

      Log.kt

      使用方法:

      在插件的onEnable方法中:

      Log.init(this)

      即可加载完成。

      然后在需要打印日志的地方直接:

      Log.info("这是一条日志") Log.INSTANCE.info("这是%s日志","一个");

      对于java,自带格式化。

      如果觉得不优雅,可以只引入他的INSTANCE。

      错误工具(ExceptionHandle)

      ExceptionHandle.kt

      对于消息注册方法,我做了一个错误收集。

      fun init( plugin: JvmPlugin, packageName: String, exceptionHandle: ExceptionHandleApi = ExceptionHandle() )

      这是一个消息注册的重载方法,只需要传递自己实现的错误接口即可拿到错误。

      获取主人

      对于依赖于本插件的插件,可以实现共用一个主人,就算是换代,换配置,主人依然可以保存。

      主人信息存在于数据库,如果config没有设置,会尝试从数据库找之前设置的主人来同步。
      如果config已经设置,会自动通过config的信息同步到数据。

      HuYanAuthorize.INSTANCE.getOwner() HuYanAuthorize.Companion.getINSTANCE(). getOwner(); 指令 命令前缀 命令 含义 案例 #hya owner 设置主人 #hya owner 572490972 v 查询当前插件版本 #hya v
    • Moyuyanli

      已解决 现在还有插件的模板吗?
      开发交流 • • Moyuyanli

      4
      0
      赞同
      4
      帖子
      469
      浏览

      Moyuyanli

      我看文档的idea插件版本已经不符合了。
      不知道该怎么给新手创建一个插件模板。

    • Moyuyanli

      HuYanEconomy 壶言壶言经济 --- 娱乐插件
      插件发布 • java 签到 娱乐 • • Moyuyanli

      7
      2
      赞同
      7
      帖子
      1745
      浏览

      Moyuyanli

      HuYanEconomy 壶言壶言经济 --- 娱乐插件

      version download

      下载本插件

      这里是壶言经济,一款mirai娱乐插件,设计灵感来自于论坛的经济帖子,心血来潮就创建了这个项目,从22年11月开始,中间慢慢填坑,
      陆陆续续的完成了一部分饼,由于大部分饼都没实现,所以没在论坛发布,但是在我群共享。

      或许有些人在一些群见过本插件的功能,就比如这个签到

      88916f52-1ac1-4ca4-b53b-8ebb949e55a8-img.png

      现在完成了一些基本功能,仍然有很多bug的存在,但是能用(叉腰)。
      开个玩笑,如果遇见bug可以去github提issues。

      或者有什么好的建议也可以提。

      使用

      本插件需要前置:

      mirai-economy-core
      依赖于:mirai-hibernate-plugin HuYanAuthorize

      前置插件和插件本体一起放入plugins文件夹后,启动一次mirai,再停止。
      进入config/cn.chahuyun.HuYanAuthorize中配置AuthorizeConfig.yml:

      这里的主人,才是真主人。

      # 主人 owner: 123456 # 是否开启方法代理 proxySwitch: false # 数据库类型(H2,SQLITE,MYSQL) dataType: H2 # mysql数据库连接地址 mysqlUrl: '127.0.0.1:3306/authorize' # mysql数据库用户名 mysqlUser: root # mysql数据库密码 mysqlPassword: 123456

      进入config/cn.chahuyun.HuYanEconomy中配置config:

      这里的主人暂时不可用。

      前置插件和插件本体一起放入plugins文件夹后,启动一次mirai,再停止。
      进入config/cn.chahuyun.HuYanEconomy中配置config:

      # 主人 owner: 123456 # 指令触发前缀 prefix: ' ' # 数据库类型(H2,MYSQL,SQLITE) dataType: MYSQL # mysql 连接地址 mysqlUrl: 'localhost:3306/economy' # mysql 用户名 mysqlUser: root # mysql 密码 mysqlPassword: 123456 # 插件单一管理botQQ bot: 123456

      请设置主人用于管理本插件!

      由于限制,本插件无法实现多bot,只能用于唯一bot,所以请指定botqq。

      数据库可以自定义指定,目前只实现了3种数据库。

      设置完成后,再次启动mirai即可使用本插件。

      功能列表

      由于一些功能上的设计缺陷,修复他们需要改动数据库,导致数据库的数据错误,因此需要执行修复指令:/hye repair;

      建议在控制台执行,并且最好是启动后先执行。只需要执行一次就行

      目前已知需要修复版本:

      1.4.3 -> 1.4.4 修复抢劫信息错误 1.4.5 -> 1.4.6 修复鱼塘重复问题 经济功能

      基于mirai-economy-core经济前置,注册货币为hy-gold。

      目前实现功能有:

      转账 存款 取款 抢劫 红包 签到功能

      指令sign,签到,打卡,关闭签到,开启签到;

      完成签到会生成一张图片签到信息,当图片签到失败后会发送文字签到。
      签到图片目前支持背景自定义。

      只需要将图片放入data/cn.chahuyun.HuYanEconomy/bottom即可,每次启动都会读取一次文件夹里面的图片。
      data/cn.chahuyun.HuYanEconomy/font是自定义字体。

      背景图自动轮询。

      签到的刷新是每天的4点,可自定义时间。
      随机获得50~500的金币奖励!
      概率不均衡

      用户功能

      指令个人信息,info,money,经济信息,我的资金;

      可以生成一张当前用户的个人信息。
      同时获取一言

      对于昵称区域,群主是一个独立的渐变色,管理员是一种,群成员又是一种。
      部分功能会影响到颜色。

      银行功能

      指令存款 (额度),deposit (额度),取款 (额度),withdraw (额度),银行利率,富豪榜;

      银行功能设计之初支持多银行管理。
      但是目前只实现了主银行,也就是全局银行。

      以后可能会完成之前画的饼。

      银行有每周利息,利息随概率变动。

      变动规则:

      70% 1~3% 29% 4~7% 1% -3~-1%(经济危机!!!) 称号功能

      指令我的称号,购买称号 (称号),切换称号 (称号坐标),称号商店;

      称号默认获取群特殊头衔,没有就获取群活跃头衔,颜色不同。

      除此之外的称号,都会有自己特有的颜色,目前只实现了4个称号:

      [大富翁] 金币到达10w自动获得,期限永久,高贵的黄金渐变色! [小富翁] 花费1w金币购买购买称号 小富翁,期限30天。 [只是传说] 签到狂人称号,连续签到15天获得,期限15天。 [邓刚] 钓鱼佬称号,钓鱼榜榜首持有,无期限。 [17张牌能秒我?] 赌怪称号,目前没有获取方法。

      特殊buff:

      启用签到狂人称号时,签到获得的金币翻倍。 启用钓鱼佬称号时,钓鱼cd为3分钟,并且上钩更快!

      切换称号 0是卸下所有称号,回到默认称号。

      现已开放称号自定义添加功能,目前只有依赖本插件实现。
      未来可能会实现通过配置文件自定义添加称号。

      自定义称号功能已经实现,在data/cn.chahuyun.HuYanEconomy/title.json中编辑,插件启动后将自动扫描注册到称号列表中。
      目前只有购买一种途径获得,也没办法配置buff。

      { // 称号code "templateCode": "template", // 过期时间(天) "validityPeriod": -1, // 称号名称(不是称号) "titleName": "模板", // 价格 0.0 "price": 0, // 是否渐变色 "gradient": false, // 颜色是否影响名称 "impactName": false, // 称号 "title": "[模板]", // 起始颜色,当渐变关闭时,此颜色就是唯一颜色 "sColor": "#00000", // 结束颜色 "eColor": "#ffffff" }

      更多请查看TitleTemplateManager

      猜签功能

      权限code:lottery

      指令开启 猜签,关闭 猜签,猜签 (猜签号码) (猜签金额);

      本功能需要在对应群开启,本功能有高强主动发送消息动作,高风险账号慎用!

      签有3类:

      小签 只需要3个号码 1分钟开启一次 最大金额 1000 中签 4个号码 一小时开启一次 最大金额 10000 大签 5个号码 一天开启一次 最大金额 1000000

      中奖倍率

      小签:

      1:0.7 2:6 3:160

      中签:

      1:0.5 2:2.5 3:35 4:1250

      大签:

      1:0.3 2:1.4 3:12 4:200 5:10000

      猜签顺序固定。

      钓鱼功能

      权限code:fish。

      指令开启 钓鱼,关闭 钓鱼,购买鱼竿,钓鱼,抛竿,升级鱼竿,钓鱼排行榜,钓鱼排行,钓鱼榜,鱼竿等级,刷新钓鱼,鱼塘等级;

      本功能需要开启才能使用,本功能具有高刷屏风险,如果没有高管理能力,慎用!

      钓鱼需要一把鱼竿,一把500金币,可以升级。

      鱼上钩后需要操作!

      向左拉|左|1 左操作 向右拉|右|2 右操作 收线|拉|0 收线操作 放线|放|~ 放线操作 !|!|收|起|提|竿 收竿操作

      鱼竿等级决定最小鱼等级保底,最大鱼等级;
      鱼塘决定最大鱼等级;

      在操作的过程中会随机生成操作,你需要做对应的操作(不会提示),
      左和右决定品质系数
      收和放决定等级系数(同时受鱼竿等级影响)

      操作对会增加对应系数,失败则减少,放线会重置所有系数。

      具体鱼的信息来自于星露谷物语和群友的灵感。

      一些特定的系数和等级会固定掉到彩蛋!

      设计之初还有自定义鱼塘,目前已经鸽了很久了,

      红包功能

      在此感谢Travellerrr编写了此功能。

      指令发红包 (额度) (个数) [sj|随机],领红包 (红包id),收红包 (红包id),抢红包,红包列表,全局红包列表,开启 红包,关闭 红包;

      本功能需要在对应群开启。

      通过发红包指令发红包 100 10可以发一个均分100的10个红包,结尾加上sj或随机可以将红包改为随机红包。

      红包24小时到期,到期没有领的红包自动退回账号。

      抢劫功能

      权限code:rob。

      在此感谢Travellerrr编写了此功能。

      指令开启 抢劫,关闭 抢劫,释放出狱,抢银行,抢劫 (@id),保释 (@id),[管理员指令]平账 (@id);

      本功能需要在对应群开启。

      抢劫一个人,概率成功,概率失败。

      被抓进监狱后将无法响应大部分指令,需要保释(要钱!!)。

      你也可以抢银行!

      快快拿起你的阿卡,抢银行吧!!!

      道具功能

      指令背包,backpack,道具商店,shops,购买 (道具) (数量),buy (道具) (数量),使用 (道具) (数量),use (道具) (数量);

      道具系统有bug,并且结构设计的有点问题,目前在考虑重构,敬请期待!

      管理员指令 指令 用处 greedisgood (金额) 获取指定金额

      Console指令

      指令 用处 hye v 查询壶言经济版本 未完成的规划 赌博功能 抢劫功能 红包功能 道具功能重构 增强功能间互动性 教会功能 关联插件 仿BA制造的好感度插件 建议和交流

      如果在使用本插件的时候预计bug,或是有好的建议,请优先前往github
      提issues,
      再考虑到我的插件群不是云的茶壶云(390444068)提问。img.pngimg.png

    • Moyuyanli

      一个轻巧的hibernate连接模块,用于开发。
      其他项目发布 • 数据库 hibernate • • Moyuyanli

      1
      1
      赞同
      1
      帖子
      215
      浏览

      Moyuyanli

      Hibernate-plus

      名字有点张扬了

      hibrnate强化集成,用于以最小的程度连接你的数据库,为你带来最舒服的数据持久化。
      封装了常用方法,也保留了Session的获取。

      内置3种数据库驱动:
      H2
      MySQL
      Sqlit

      使用

      在你的项目中引用
      maven:

      <dependency> <groupId>cn.chahuyun</groupId> <artifactId>hibernate-plus</artifactId> <version>1.0.15</version> <type>module</type> </dependency>

      gradle:

      implementation("cn.chahuyun:hibernate-plus:1.0.15")

      然后创建配置文件

      //这里是你的启动类 Configuration configuration = HibernatePlusService.createConfiguration(Test.class); configuration.setDriveType(DriveType.MYSQL); configuration.setAddress("localhost:3306/test"); configuration.setAutoReconnect(true); configuration.setUser("root"); configuration.setPassword("123456"); //configuration.setPackageName("cc.cb.entity");

      对于驱动类型DriveType,目前只提供了3种类型

      H2 MYSQL SQLITE

      对于java插件的实现:

      EconomyConfig config = HuYanEconomy.config; Configuration configuration = HibernatePlusService.createConfiguration(economy.getClass()); configuration.setPackageName("cn.chahuyun.economy.entity"); DriveType dataType = config.getDataType(); configuration.setDriveType(dataType); Path dataFolderPath = economy.getDataFolderPath(); switch (dataType) { case MYSQL: configuration.setAddress(config.getMysqlUrl()); configuration.setUser(config.getMysqlUser()); configuration.setPassword(config.getMysqlPassword()); break; case H2: configuration.setAddress(dataFolderPath.resolve("HuYanEconomy.h2").toString()); break; case SQLITE: configuration.setAddress(dataFolderPath.resolve("HuYanEconomy").toString()); break; } HibernatePlusService.loadingService(configuration);

      对于kotlin插件的实现:

      val configuration = HibernatePlusService.createConfiguration(plugin::class.java) configuration.classLoader = plugin::class.java.classLoader configuration.packageName = "cn.chahuyun.authorize.entity" configuration.driveType = dataType when (dataType) { MYSQL -> { configuration.address = mysqlUrl configuration.user = mysqlUser configuration.password = mysqlPassword } H2 -> configuration.address = HuYanAuthorize.INSTANCE.dataFolderPath.resolve("authorize.h2.mv.db").toString() SQLITE -> configuration.address = HuYanAuthorize.INSTANCE.dataFolderPath.resolve("authorize.mv.db").toString() } HibernatePlusService.loadingService(configuration)

      对于实体映射,可以填写packageName,进行指定包扫描,模板将会自动将带有Entity的实体添加到映射目录中。

      当然你也可以不填写,那么我将会根据你的ClassLoader自动扫描"entry", "entity", "entities", "model", "models", "bean", "beans", "dto"几个包名下面的实体。

      给定参数之后就可以通过HibernatePlusService来创建hibernate服务了

      HibernatePlusService.loadingService(configuration);

      成功后即可使用HibernateFactory来进行数据操作,我这里封装了几个常用的简单操作

      List<MyUser> myUsers = HibernateFactory.selectList(MyUser.class); log.info("==========list============="); for (MyUser myUser : myUsers) { log.info(myUser.toString()); } log.info("==========================="); MyUser myUser = new MyUser(); myUser.setName("张"); myUser.setSex(123); Integer id = HibernateFactory.merge(myUser).getId(); log.info("==========one============="); MyUser selectOne = HibernateFactory.selectOne(MyUser.class, id); log.info(selectOne.toString()); log.info("===========================");

      更复杂的操作请自行获取SessionFactory去创建。

      SessionFactory session = HibernateFactory.getSession(); 自定义使用

      你也可以不使用我给你的推荐配置,只需要在resources目录下填写hibernate.properties就行,然后通过

      HibernatePlusService.loadingService(Test.class);

      就可以使用自定义配置进行连接

    • Moyuyanli

      想收集一下现在大家对于mirai的使用情况
      使用交流 • • Moyuyanli

      78
      1
      赞同
      78
      帖子
      6720
      浏览

      Moyuyanli

      由于腾讯的神必操作,导致现在mirai大不如从前,但是仍然有一部分用户还使用着mirai,现在想收集一点信息,为之后的开发做打算。

      收集信息如下:

      还在使用mirai吗:是/否 通过那种登录方式使用的mirai: 1.签名服务 2.Overflow 3.其他 mirai登录情况稳定吗:稳定/不稳定 mirai的相关功能使用方式: 1.mirai插件 2.mirai-http外接 3.mirai-core原生开发 使用mirai的相关平台:win/linux/Android

      目前就征集这些信息,谢谢大家反馈!

    • Moyuyanli

      mcl启动器整合包-内置qsign签名服务
      其他项目发布 • mcl 启动器 • • Moyuyanli

      9
      0
      赞同
      9
      帖子
      1556
      浏览

      Moyuyanli

      mcl启动器整合包

      我做了一个mcl启动器带qsign签名服务的整合包,经本人测试一切正常,现在分享给大家!

      对于老账号,可以做到稳定登录,而不封号。
      对于新账号,99%的概率登录2小时内封号!

      此规则不使用9.x协议

      新版本协议已经有大佬开放了,具体可以查看
      试图复活qsign,基于9.0.56版本,再捞一把。

      新版本的整合包去掉了 unidbg-fetch-qsign-1.1.9 直接使用新的9.0.56版本协议,具体使用方法请阅读整合包内的使用前必看.md文件

      下载地址:
      群文件:

      Mirai交流群(780594692) 不是云的茶壶云(390444068) 说明

      以下为整合包说明!

      这是一个由Moyuyanli整理的mcl-2.1.2整合包,旨在便于新手使用Mirai。以下是整合包的组成部分及其使用说明:

      整合包内容: mcl-2.1.2:核心Mirai Console Library版本。 unidbg-fetch-qsign-1.1.9:用于签名服务的工具包。 插件列表: fix-protocol-version-1.11.0.mirai2 chat-command-0.5.1.mirai 默认配置: 使用的协议配置文件为 android_pad.json。 默认的协议版本为 8.9.85。 启动步骤:

      进入 [TeaFox]mcl\mcl-2.1.2\unidbg-fetch-qsign-1.1.9\unidbg-fetch-qsign-1.1.9 目录下,根据操作系统类型选择启动qsign服务的脚本:

      对于Windows系统,执行 unidbg-fetch-qsign.bat 文件。 对于Linux系统,执行 unidbg-fetch-qsign.sh 文件。

      回到 [TeaFox]mcl\mcl-2.1.2 根目录下,根据操作系统类型启动mcl主程序:

      对于Windows系统,运行 mcl.cmd 文件。 对于Linux系统,运行 mcl 文件。 自动登录设置:

      若需自动登录,编辑 [TeaFox]mcl\mcl-2.1.2\config\Console 目录下的 AutoLogin 文件,按照以下格式配置:

      accounts: - # 账户信息 account: 机器人的QQ数字账号 password: kind: PLAIN # 密码类型,可选PLAIN(明文)或MD5 value: 机器人的QQ密码 # 当kind为PLAIN时填写密码文本,当kind为MD5时填写16进制密文 configuration: protocol: ANDROID_PAD # 默认使用的协议,可选ANDROID_PHONE、ANDROID_PAD、ANDROID_WATCH、MACOS、IPAD device: device.json # 设备配置文件 enable: true # 是否启用此账户 heartbeatStrategy: STAT_HB # 心跳策略,可选STAT_HB、REGISTER、NONE # 注意事项: # 若你的机器人QQ号已在ANDROID_PAD登录,此处设置可能导致登录失败,请更换协议或确保该QQ号在目标设备上未登录。 食用方法

      登录成功后,就可以去论坛寻找你想要的插件,放入[TeaFox]mcl\mcl-2.1.2\plugins文件价下面,重新运行mcl就行!

      疑问

      如有任何问题或疑问,可以加群 390444068 进行提问,作者不保证回答,但有万能的群友!

      以上即是整个整合包的结构和使用指南。请按需配置并启动相关服务。

    • Moyuyanli

      [壶言3]壶言会话3-一款高度自定义的自定义回复插件
      插件发布 • 自定义回复 • • Moyuyanli

      27
      3
      赞同
      27
      帖子
      3742
      浏览

      Moyuyanli

      壶言会话3

      好久不见,我是鸽了快一年的放空
      新版本已经完成基本的底层搭建,剩下的就是慢慢不全各功能模块就行。
      现在在这里征集好的注意!

      仓库地址:HuYanSession3

      现有功能

      鉴于前车之鉴,本次升级对上版本插件做减法,对插件进行分离,自定义回复独立提取出来,群管功能以后成为一个单独的插件。

      自定义数据库接入:目前支持(sqlite,h2,mysql) 自定义缓存位置:目前支持(内存),预留(redis) 自定义权限:目前支持(内置),预留接入HuYanAuthorize未来可能会接入lp 分组支持多种类型:对以前的群分组进行了升级,现在分组不仅可以对群分组,还能对人分组和对群成员分组! 高度定义的作用域匹配:7种作用域匹配,满足的需求 ...

      4c8c0423-f828-43fa-ab8a-e2336525c77d-图片.png

      重新设计的单一消息,更加简洁,新增了概率回复功能,保留了壶言会话2.4.x的本地缓存功能 使用

      现阶段版本已经可以进行测试使用
      如果你想使用,可以去群里获取测试版本的插件,放入plugins文件夹启动即可使用。

      由于当前版本为壶言会话2的拆分版,你可以与壶言会话2一起使用,但是会触发两个插件的命令,解决方式就是使用壶言会话2的过滤消息功能将壶言会话2的指令暂时过滤掉!

      对于现阶段mirai的半死状态,这边目前可以总计一下目前可能能行的登录方案:

      签名服务-非常的不稳定(及其容易封号),但是能用 通过Overflow插件接入其他平台的OneBot转生 蕉流与学习

      目前就这完成了这么多,后续会慢慢完善,如果你有好的意见,可以在本帖子种回复。也可以加群直接at我,不是云的茶壶云(390444068)

      如果你想学习编写mirai插件,或者刚学java,欢迎来对本项目进行编写和pr,结构简单易上手!

      以下是本插件部分文档,会持续更新。 参数

      对于部分参数,有默认值,可省略不填。

      | 指可选,左边或右边选择一个即可
      + 指可填写多个,一般中间用 隔开。
      (xx) 指必填,括号内内容必须填写。
      [xxx]指可选填写。

      匹配方式 1|精准 精准匹配(默认) 2|模糊 模糊匹配,包含触发词即匹配成功。 3|头部 头部匹配,从前往后匹配触发词即匹配成功。 4|尾部 尾部匹配,从后往前匹配触发词即匹配成功。 5|正则 正则匹配,按照正则匹配结果。 重写

      对于部分只能存在一条的信息,在参数集里面添加重写状态即可重写写入该信息。

      %|rewrite 启用重写。 动态消息

      不同于壶言会话2的自动识别动态消息,壶言会话3这边需要手动指定是否启用动态消息。

      dt|动态|dynamic 启用动态消息。 本地缓存

      由于腾讯服务器储存图片有概率过期,因此设计本地缓存功能,在config中有默认开启配置,默认不开启。
      也可以根据单个消息默认设定开启与否。

      ca|缓存|cache 启用本地缓存。 转换方式

      消息在匹配时的转换方式

      MIRAICODE miraiCode(默认)。 STRING String。 CONTENT content。 JSON json。 作用域 global 全局。 global-(id)|global-(at) 全局的某个用户,可填号码,可at人。 group 当前群(默认)。 member-(id)|member-(at) 某个群友。 list-(id) 自定义群列表。 users-(id) 自定义用户列表。 members-(id) 自定义某个群的群用户列表。 触发概率 probability-(0.0~1.0) 消息的触发概率。 是否随机 random 用于多词条的开启随机触发功能 动态消息类型

      针对上一代的动态消息使用体验,这个版本也进行了一次优化

      现格式为:

      ${prefix.suffix}

      前缀 后缀 含义 案例 at this at当前发消息的这个人 ${at.this} all at全体(慎用!) ${at.all} (qq) at这个qq用户 ${at.572490972} user id 获取发送者的QQ号 ${user.id} name 发送者的名称 ${user.name} avatar 发送者的头像 ${user.avatar} title 发送者的头衔(仅限群) ${user.title} group id 群号(仅限群) ${group.id} name 群名称(仅限群) ${group.name} avatar 群头像(仅限群) ${group.avatar} owner 群主名称(仅限群) ${group.owner} time now 当前时间(默认格式) ${time.now} timer 当前的时间戳 ${time.timer} (format) 当前时间的自定义格式 ${time.HH:mm:ss.SSS} mate (number) 正则回流编号<br/>(仅限正则匹配中包含匹配块) ${mate.1} message this 当前的消息 ${message.this} reverse 反转的消息(按照消息顺序反转) ${message.reverse} owner id 主人的id(得与机器人是好友) ${owner.id} name 主人的名称(得与机器人是好友) ${owner.name} avatar 主人的头像(得与机器人是好友) ${owner.avatar}

      对于一对一消息回复,如果想启用动态消息的匹配,得才参数中添加dt来启用动态消息识别!

      指令 消息功能

      权限id:session

      一对一消息

      权限id:hh

      指令 含义 案例 %xx (a) (b) [params]+ 学习一个一对一回复 %xx a b %xx [a] 对话的方式学习 %xx,%xx a 学习 (a) (b) [params]+ 同上 学习 啊啊啊 哦哦哦 -xx (a) [scope\|id] 删除一个一对一回复^1 -xx a,-xx a 5 删除 (啊啊啊) [scope\|id] 同上 删除 啊啊啊 %%xx 刷新单一消息缓存 %%xx

      第二类删除

      对于一个短时间内响应的回复消息,如果你有权限,即可引用该消息并发送删除或sc即可删除!

      参数

      params 支持列表:

      匹配方式 重写 动态消息 本地缓存 转换方式 作用域 触发概率

      动态消息支持列表:

      全部 一对多消息

      权限id:dct

      指令 含义 案例 %dct [trigger] 进入多词条学习状态(3分钟超时) %dct,%dct nova的错 学习多词条 同上 学习多词条 -dct (trigger\|id-(id)) [id] 删除多词条 -dct 群典,-dct id-2 5 删除多词条 (trigger\|id-(id)) [id] 同上 删除多词条 群典,删除多词条 id-2 5 %%dct 刷新多词条缓存 %%dct

      第二类删除

      对于一个短时间内响应的回复消息,如果你有权限,即可引用该消息并发送删除或sc即可删除!

      params 支持列表:

      匹配方式 重写 本地缓存 作用域 触发概率

      多词条默认自动识别动态消息!

      动态消息支持列表:

      全部 群典功能

      这是一个非常有意思的功能!

      在配置中启动该功能后,对着机器人在线期间的消息回复一个批准入典, 将会默认生成一个触发词为群典(在配置中自定义)的多词条集

      这个群典只属于当前群,意味着对于不同的群,可以有不同的群典!

      记录群友的丢人瞬间!

      定时消息

      权限id:ds

      权限功能

      权限id:admin

      指令 含义 案例 +(scope)-(at\|qq) (权限id) [权限id] 为该作用域添加一个权限 +global-@572490972 admin 添加权限(scope)-(at\|qq) (权限id) [权限id] 同上 添加权限@572490972 amind -(scope)-(at\|qq) (权限id) [权限id] 为该作用域删除一个权限 -global-@572490972 admin 删除权限(scope)-(at\|qq) (权限id) [权限id] 同上 删除权限@572490972 admin 分组功能 插件指令 hys v 查询当前壶言会话3的版本。
    • Moyuyanli

      有没有一个比较好的道具系统设计思路
      技术交流板块 • • Moyuyanli

      1
      0
      赞同
      1
      帖子
      249
      浏览

      Moyuyanli

      mirai的统一经济底层插件已经出了,准备在此基础上实现一个经济管理的插件,其中的道具系统准备做成api接口的形式,但是自己构思的一个思路发现行不通,准备来论坛看看有没有大神。

      经济底层插件

      原本是准备照着这个插件的api设计思路写,发现我所构思的跟这个设计方式有很大差距,我没办法实现。

      经济底层设计思路

      或者有没有大佬知道mc的物品系统的设计思路,也可以提提。

    • Moyuyanli

      [壶言2]HuYanSession2——壶言会话2
      插件发布 • jvm 自定义回复 群管 自定义 定时任务 • • Moyuyanli

      165
      7
      赞同
      165
      帖子
      42942
      浏览

      Moyuyanli

      HuYanSession2——一款全功能自定义回复插件和小群管

      上面的download是下载,release是查看所有版本!
      gitee好久没更新了...
      如果上面加载不出来可以点这里下载

      迭代

      相较于壶言1,壶言2实现了:

      支持多个机器人 更便捷的指令并且中英双支持 更全面的群管理 更多词条参数识别

      比如$at(qq)将会被转换为@该人

      更全面的权限系统

      权限可以下发到某一条聊天命令!

      更更规整的代码 这条才是重点!

      方便后续的拓展

      更新进度及以发现问题->点这里

      使用 前置依赖

      Hibernate 前置插件,ORM 数据库框架,群/好友消息记录 下载适配版本

      Mirai Hibernate Plugin

      感谢大佬提供的轮子 @cssxsh

      将下载好的jar文件添加到mcl的plugin文件夹,运行mcl即可,启动成功后在console控制台输入

      /hy owner <QQ>

      添加主人即可

      如果聊天命令没有起作用请重启mcl!

      如果你对mcl有一定的了解,那么你可以尝试用以下的方法来安装壶言2

      你需要先删除plugin中的壶言2和前置的 jar,
      再执行以下命令:

      # 前置 mcl --update-package xyz.cssxsh.mirai:mirai-hibernate-plugin --channel maven-stable --type plugin # 只安装正式版 mcl --update-package cn.chahuyun:HuYanSession --channel maven-stable --type plugin # 升级 mcl update # 一个重启小插件(壶言重启) !重启 自定义回复

      权限id:session

      更新

      新增图片本地缓存,用不过期(2.4.x)

      参数

      所有自定义回复都会携带作用域和匹配方式参数!
      支持更简洁的输入且都是可选!默认为精准和全局!

      []和()指数学中的域,在本插件表示可填写和必填写;
      |为或,表示两边都可以用;

      以下所有指令均适用于此表示方法!

      [精准|1] 精准匹配 [模糊|2] 模糊匹配 [头部|3] 头部匹配 [结尾|4] 结尾匹配 [全局|0] 全局匹配 [当前|-1] 当前群匹配 [群组(id)|gr(id)] 指定群组匹配

      具体参数含义可以去壶言1查看

      一对一回复(会话)

      权限id:sessionx

      直接上指令

      指令 含义 案例 中文格式 xx (触发内容) (回复内容) [参数] 快速添加关键字回复 参数可多填,以空格隔开 xx 怎么办 凉拌 2 0 学习 怎么办 凉拌 模糊 全局 xx:[触发内容] 查询所有已保存的关键词回复,冒号中英都支持,后续的触发内容填上就是查询对应的那条 xx: 查询 怎么办 -xx:(触发内容) 删除对应的关键词 -xx:怎么办 删除 怎么办 %xx 通过多次消息发送的形式添加对话,便于手机使用 %xx 学习对话 -%xx 由于多次消息形式添加的对话的触发词可能含有空格,因此要用对应的方式删除 -%xx 删除对话 ...

      下面的参数
      2:模糊匹配 gr1 群组编号1 内触发
      52f718ff-4a89-4c6b-85c1-33d91f1252b5-图片.png

      学习对话参数:

      0 | 全局 修改触发作用域为这个机器人的所有群 1 | 精准 只有发的消息跟触发词相同,才能触发回复,不填写参数默认 2 | 模糊 发送消息包含触发词即可触发。 3 | 头部 发送消息的开头为触发词即可触发 4 | 结尾 发送消息的结尾为触发词即可触发 5 | 正则 以正则匹配触发消息,仅限%xx学习功能 -1 | 当前 修改触发作用域为当期这个群,不填写参数默认 gr(id) | 群组(id) 修改作用域为对应的群组id,()不是指令,只是说明这个id必须填写,群组的使用方式在下方

      所有参数都在聊天指令的结尾以(空格)(参数)添加,无序。

      对话和多词条支持的动态消息:

      欢迎词支持的动态消息:

      动态消息类型 动态消息参数 含义 案例 匹配结果 at this @(at)触发这条消息的人 $at(this) @放空 qq @群里的这个人,会固定@这个人 $at(572490972) @放空 message this 这个人触发这条消息的内容 $message(this) 不会写插件怎么办? user name 获取这个人的名称 $user(name) 放空 id 获取这个人的qq $user(id) 572490972 avatar 获取这个人的头像 $user(avatar) [图片] title 获取这个人的头衔,优先获取特殊头衔 $user(title) 才不是放空了~ info 详细信息?? $user(info) time now 获取当前时间,默认格式yyyy-MM-dd HH:mm:ss $time(now) 2022-8-28 02:15:15 (时间格式) 按照指定的时间格式进行现在的时间输出 $time(HH:mm:ss) 02:16:20 正则消息回流(仅限一对一回复)

      请以%xx学习,学习内容为(你的正则1),与之对应的回复内容为$mate(1),
      参数为5,也就是正则匹配,1对应第一个括号匹配的内容。

      案例:

      ...

      dc4d0a7e-490f-4a22-951d-aca3449a1d67-图片.png

      与之类似的,你只需要更改括号中正则,就可以达到你想要的东西。

      一对多回复(多词条)

      权限id:sessiondct
      指令:

      指令 含义 案例 中文格式 %dct 添加多词条 %dct 添加多词条 dct: 查询所有多词条 %dct 查询多词条 -dct:(id) [id] 删除多词条,id通过查询得到,第一个id是对应的多次条id,第二个id是对应回复语句id,如果填写,就是删除这个多次回复语句下的这条回复,支持空格隔开一次删除多条 -dct:5 删除:2 34 44 23

      在添加多词条消息的途中,
      发送

      !!! | !!! 结束添加,不进行保存,直接结束这次操作 !! | !! 在循环添加回复内容时,停止添加,退出进行多词条消息的保存 ! | ! 删除上一条添加的内容

      添加多词条参数:

      1 | 精准 只有发的消息跟触发词相同,才能触发回复,不填写参数默认 2 | 模糊 发送消息包含触发词即可触发。 3 | 头部 发送消息的开头为触发词即可触发 4 | 结尾 发送消息的结尾为触发词即可触发 lx | 轮询 多个词条回复的顺序为轮询,就是一条一条发送去,不填写参数默认 sj | 随机 修改回复顺序为随机,就是触发后随机从多词条中取一条拿来回复 0 | 全局 修改触发作用域为这个机器人的所有群 gr(id) | 群组(id) 修改作用域为对应的群组id,()不是指令,只是说明这个id必须填写

      单个多词条回复语句也支持动态消息,具体支持看上面的对话动态消息支持

      群组

      权限id:list
      用于设定特定几个群的群组系统,用于一些东西只在这几个群中触发,其他插件有个相反的功能叫群黑名单,我这个是正向的,只在那些群触发。

      指令:

      指令 含义 案例 中文格式 +gr:(id) (群号) 添加多个群为一个群组,群号支持多个 +gr:1 780594692 添加群组:1 780594692 390444068 gr:[id] 查询所有群组信息,id填写后只查询对应的id所属群组信息 gr: 查询群组:1 -gr:(id) [群号] 删除这个群组里面的某个群号,支持多个群号 -gr:1 删除群组:1 390444068 780594692 ...

      13e391e9-4c58-4a3c-a0c7-e2413cae2fb2-图片.png
      d96e3d66-ac42-405f-bcbe-a4a0d1080245-图片.png

      与之类似,你只需要更换你的正则匹配就可以

      定时器

      权限id:ds

      定时任务是指,按照指定的时间频率发送对应的消息,时间频率是cron表达式,不懂的人可以花5分钟了解一下,基本能满足任何时间频率
      cron输入格式$cron(* * * * * ?)

      定时管理

      指令:

      指令 含义 案例 中文格式 %ds 添加定时任务,具体根据提示进行添加 %ds 添加定时器 | 添加定时任务 -ds(id) 删除定时任务,id查询获得 -ds:1 删除定时器:1 | 删除定时任务:1

      在添加回复消息的途中,
      发送

      !!! | !!! 结束添加,不进行保存,直接结束这次操作 !! | !! 在循环添加回复内容时,停止添加,退出进行定时任务的保存 ! | ! 删除上一条添加的内容

      定时任务的参数:

      hf | 回复 定时器触发后只回复一条消息,不填参数默认 lx | 轮询 定时器的回复内容将成为多词条的样式,并且回复词条顺序为轮询,与随机冲突! sj | 随机 定时器的回复内容将成为多词条的样式,并且回复词条顺序为随机,与轮询冲突! -1 | 当前 作用域-当前这个群 默认 0 | 全局 作用域-全部群 gr(id) | 群组(id) 作用域-指定群组 定时器操作

      权限id:dscz

      指令 含义 案例 中文格式 ds: 查询定时任务 ds: 查询定时器 | 查询定时任务 %ds:(id) 切换定时任务的状态,如果已经开启,则切换为关闭,id查询获取 %ds:1 切换定时器:1 | 切换定时任务:1 群管理

      权限id:group 此权限不是指令权限

      对于几个检测群的功能,需要先将对于群添加为检测群

      /hy agroup (群号) #添加 /hy dgroup (群号) #删除

      依然支持在config文件手动添加

      特殊头衔

      当你的机器人是群主时才可以使用,拥有admin、group权限的用户也可以用于使用。

      指令:

      指令 含义 案例 中文格式 %@(user) (内容) 给这个人修改特殊头衔 %@放空 才不是放空了~ 设置头衔@放空 才不是放空了~

      是群主才行哦~

      群欢迎词

      权限id:grouphyc
      当有人申请的时候,拥有管理员权限的机器人并且加入了检测的群
      机器人会给出提示
      在配置文件中有是否启用开关

      ...

      997f2332-8b54-483b-89ae-b583d2955591-图片.png

      指令:

      指令 含义 案例 中文格式 开门 id|all 同意这个人的进群申请 开门 1 开门 all 同意 id|all 同意这个人的进群申请 同意 1 同意 all 关门 id|all 关门这个人的进群申请 关门 1 关门 all 拒绝 id|all 拒绝这个人的进群申请 拒绝 1 拒绝 all

      id是进群时所提示的门牌号

      欢迎词功能不需要检测群支持!
      欢迎词指令:

      指令 含义 案例 中文格式 %hyc 添加欢迎词 %hyc 添加欢迎词 hyc: 查询欢迎词词 hyc: 查询欢迎词 -hyc:(id) [id] 删除欢迎,id查询获得,第二个id是对应的欢迎词集合中的某条欢迎词,不支持多条删除 -hyc:2 删除欢迎词:1 15

      参数:

      lx | 轮询 欢迎词将以轮询的方式逐条发送,默认 sj | 随机 欢迎词将随机发送 0 | 全局 作用域:全局 gr(id) | 群组(id) 作用域:群组

      注意:欢迎词是轮询添加,使用!!或!!保存!

      欢迎词支持的动态消息:

      动态消息类型 动态消息参数 含义 案例 匹配结果 at this @(at)这个进群的人 $at(this) @放空 that 这个要请他的人,如果没有邀请的人则会at同意他进来的那个人 $at(that) @放空 qq @群里的这个人,会固定@这个人 $at(572490972) @放空 message apply 获取这个人进群申请的消息 $message(apply) 这个人什么都没说... user name 获取这个人进群时的名称 $user(name) 放空 id 获取这个人的qq $user(id) 572490972 avatar 获取这个人的头像 $user(avatar) [图片] time 所有支持动态消息的都支持时间,具体用法在文档前面的对话 禁言

      权限id:groupjy

      此指令只有在你的机器人是管理员或群主才能触发

      指令:

      指令 含义 案例 中文格式 @某人(禁言时间) 在机器人有权限的情况下,对你@的这个人进行指定时间的禁言 @放空 3m `` @某人 0s 解除禁言 @放空 ``

      时间频率:

      s 秒 m 分钟 h 小时 d 天 违禁词

      不需要检测群支持。
      此指令只有在你的机器人是管理员或群主才能起作用。

      指令:

      指令 含义 案例 中文格式 +wjc:(内容) [param] 添加违禁词,内容是触发内容,param是参数,具体可以查看下方 +wjc:色图 ch 2m 添加违禁词:色图 % jy -wjc:(id) 删除违禁词,id查询获得 -wjc:2 删除违禁词:2 wjc: 查询所有违禁词 wjc: 查询违禁词 参数的意义 ch 违禁词默认撤回,当输入ch后,wjc将不撤回消息 jy 违禁词默认禁言,当输入jy后,wjc将不禁言 3s 修改禁言时间,具体时间格式查看禁言 % 重写回复语句,支持动态消息,具体支持动态消息查看下方 [gr1 | 0 ] 群组或全局,默认当前群 1,2,3,4 匹配方式,跟关键词回复的匹配同理 hmd3 开启触发3次后就会踢出群聊,数字可自选

      hmd参数输入后,将会开启小黑屋功能,不会提示!当某个人触发这个wjc到达次数,直接踢出本群,可以和下面的自动添加黑名单配合!

      违禁词回复消息支持动态消息:

      动态消息类型 动态消息参数 含义 案例 匹配结果 at this @(at)触发这条消息的人 $at(this) @放空 qq @群里的这个人,会固定@这个人 $at(572490972) @放空 message this 这个人触发这条消息的内容 $message(this) 不会写插件怎么办? jyString 这条违禁词的禁言时间中文 $message(jyString) 禁言2分钟 prohibitString 同上 null 不发送消息 $message(null) user name 获取这个人的名称 $user(name) 放空 id 获取这个人的qq $user(id) 572490972 avatar 获取这个人的头像 $user(avatar) [图片] title 获取这个人的头衔,优先获取特殊头衔 $user(title) 才不是放空了~ info 详细信息?? $user(info) time now 获取当前时间,默认格式yyyy-MM-dd HH:mm:ss $time(now) 2022-8-28 02:15:15 (时间格式) 按照指定的时间格式进行现在的时间输出 $time(HH:mm:ss) 02:16:20 黑名单

      权限id:grouphmd

      不需要检测群支持。
      此指令只有在你的机器人是管理员或群主才能触发。
      支持作用域!!设置为全局时,该用户将被你的bot封禁!

      指令 含义 案例 中文格式 +hmd:@(user) [param] 添加黑名单,参数看下方 +hmd:@放空 jy 添加黑名单:@放空 % hmd: 查询黑名单 hmd: 查询黑名单 -hmd:(id) 删除黑名单,id查询获得 -hmd:3 删除黑名单:2

      参数:

      t 默认检测到就踢出,携带参数不踢出 jy 默认禁言(优先踢出),携带参数不禁言 ch 默认撤回该用户的消息,携带不提出 0 | gr(id) 作用域不携带参数默认当前群 % 重写封禁理由

      此功能需要检测群支持!
      在配置文件blacklist有退群自动添加黑名单开关!
      里面还有重写封禁理由!

      撤回消息

      权限id:groupch

      用于撤回上面的群消息,机器人是管理员和群主才能使用

      指令:

      指令 含义 案例 中文格式 !recall 撤回上面这条消息 !recall 撤回 !recall (number) 撤回前面几条消息,不包含这条消息 !recall 5 撤回 5 !recall 1-5 撤回上面1到5条,从第0条算起,包含这条消息 !recall 1-5 撤回 25-55

      具体用法试一试就明白,撤回多条消息时,权限可能会有冲突。

      ...

      60f41127-46fe-4a31-939c-e9183e78b6b6-图片.png
      046a35d8-0050-4089-b0ba-5c5a2179ea7f-图片.png
      消息被群友顶上去了,我仍然能撤回!
      9d55a500-e3c0-48a3-87b0-af373243d522-图片.png

      踢人

      权限id:grouptr

      此指令只有在你的机器人是管理员或群主才能触发

      指令 含义 案例 中文格式 tr@(user) [hmd] 踢人 tr@放空 踢人@放空

      参数:

      hmd qq的踢人有个禁止此用户再次加群,输入后将禁止此用户再次加群 权限系统

      权限id:admin

      指令:

      指令 含义 案例 中文格式 +@(user) (权限id) 赋予这个群的这个人的某个权限,权限id可在文档查看 +@放空 admin 添加@放空 all -@(user) 移除这个权限 -@放空 all 删除@放空 group !power [param] 查询权限列表,参数如下 !power all 权限列表 all

      参数:

      不填默认当前群 @某人 查看指定人在本群的权限 all 查询所有权限或添加所有权限或删除所有权限

      查询可以输入对应的群号 或者 qq号 来查询指定区域的权限信息
      也可以直接 all 查询全部
      然后通过 上一页 和 下一页 来进行翻译阅读

      多机器人互冲

      对于同时加载多个bot的使用者
      容易存在一条指令两个bot触发,因此,加了一个‘暂停功能’

      指令:

      指令 含义 案例 中文格式 !pause @(bot) 你发的下一条消息,这个机器人将会忽略(包括触发) !pause@乌拉 !pause @(bot) 5 忽略下5条消息,消息数量自定 !pause @乌拉 5

      不带参数,默认忽略你的下一条消息
      也可以自定义忽略下几条消息,这个记录是写在内存的,如果不小心输入多了(9999999999),重启就行。

      插件指令 指令 含义 案例 /hy aGroup 添加一个监测群 /hy aGroup 390444068 /hy dGroup 删除一个监测群 /hy dGroup 390444068 /hy v 查询当前插件版本 /hy v /hy transfer 转移一个所属bot的数据到另一个bot /hy transfer 2061954151 3630254205 规划和已知BUG

      任何意见都可以提!

      以后的规划将不在此处更新,具体更新查看下面

      规划:

      实现消息的excel导入和导出(在1添加导出功能)

      bug:

      交流

      壶言系列插件交流群 不是云的茶壶云(390444068)
      有任何疑问或者建议都可以来群里提!

      更新进度及以发现问题->点这里

      最新的插件动态也会在群里说明!

    • Moyuyanli

      启动mcl报错一堆(虽然并不影响使用)
      BUG反馈 • • Moyuyanli

      3
      0
      赞同
      3
      帖子
      315
      浏览

      Moyuyanli

      报错信息:
      9cccfb0e-f669-45ea-bd17-3872cb0e0460-图片.png
      使用插件:
      9e6a3db7-dc42-460e-8add-45cfc7bd60df-图片.png

    • Moyuyanli

      关于java事件监听设置优先级问题
      开发交流 • • Moyuyanli

      3
      0
      赞同
      3
      帖子
      325
      浏览

      Moyuyanli

      问题:我在java中尝试更改事件监听的优先级,但是有一个参数我不会填,摸底发现是kt的东西,由于没有学过kt,导致我没办法实现该功能。

      不知道为啥我这里抽风了,上传不了图片了

      监听器调度
      监听器会被创建一个协程任务, 语义上在 [parentScope] 下运行.
      通过 Kotlin [默认协程调度器][Dispatchers.Default] 在固定的全局共享线程池里执行, 除非有 [coroutineContext] 指定.

      就是这个参数

      @param coroutineContext 在 [defaultCoroutineContext] 的基础上, 给事件监听协程的额外的 [CoroutineContext].

      期望:给一个参数的填写方法,或者指明一条路。

    • Moyuyanli

      [壶言]一款各种自定义回复消息插件
      插件发布 • java jvm 自定义回复 群管 自定义 • • Moyuyanli

      124
      1
      赞同
      124
      帖子
      29692
      浏览

      Moyuyanli

      HuYanSession 壶言会话———自定义回复和小群管插件

      上面的download是下载,release是查看所有版本!

      最近更新

      壶言会话2已经发布

      点击上面壶言会话2跳转或者点击 这里 跳转

      使用

      下面有个群,群里有一个打包好的了控制台版mcl包,供新手使用...

      丢进plugin文件夹中运行console就行
      运行一次之后停掉console,到config里面设置一下主人和指定机器人

      基本功能 学习指令

      根据关键词进行特定形式的回复
      学习指令的基本格式

      学习 (触发内容) (回复内容) [精准|模糊|头部|结尾] [当前|gr{编号}|全局] 例: 学习 啊 吧

      后面两个参数是可选,不带就是默认第一个

      后续可能会简化学习指令的格式为xx

      关键词参数意义

      可以指定关键词匹配方式,以及作用域范围

      指定匹配方式:
      目前有4种匹配方式

      精准:一模一样才能触发 模糊:只要消息内包含关键词就能触发 头部:消息最前面的内容相同就能触发 结尾:消息结尾的内容相同就能触发

      当你学习了一个模糊匹配的关键词

      学习 怎么办 凉拌咯~ 模糊

      在遇见消息内包含'怎么办'就会触发

      ...

      58d4fce4-e60f-45ad-8171-c2aed424f686-图片.png

      其他匹配机制同理

      指定作用范围,目前有三种形式:

      当前:在群内学习的消息回复不携带参数会默认为当前群触发 gr{编号}:设定为你指定的多个群触发 全局:所有群都能触发

      如果不填,默认只在本群触发。
      群组的说明再下面。
      添加全局的话只能是主人才能添加!

      学习 啊 巴~ 结尾 群组2 学习 乒 乓 全局 查询和删除 查询 [关键内容] 删除 (关键内容)

      查询可以查询全部,也可以查询单条信息

      ...

      9788bf06-a603-4ed0-a5a9-eae24996b323-图片.png

      多词条消息

      特别设定了一个关键词触发多条回复消息的功能。

      学习多词条 触发内容 回复内容1 [精准|模糊|头部|结尾] [当前|gr{编号}|全局] [轮询|随机] 轮询 从你添加的第一条开始,一条一条发送 随机 随机发送其中一条

      当第一次学习多词条时,会新建一条多词条消息,后续学习多词条都只会进行添加回复内容,不会更改参数

      学习多词条 触发内容 回复内容2

      也有便利的多词条添加功能

      添加多词条 触发内容 ...

      92b25bea-aed5-4760-a361-cf636ffe723f-图片.png
      255e2baf-a462-4b14-8d1f-5204329b5bff-图片.png

      然后就可以分条发送你需要添加的内容了。
      有一个容错机制,发送'!'删除上一条触发内容。
      需要完成添加只需要发送'!!!',即可结束添加,将内容保存到
      该条多词条回复中。

      多词条回复的查询跟回复消息的查询一样。
      但是删除可以有两种情况

      删除多词条 触发内容 回复内容

      这样的删除可以删除该条多词条回复中的某一个回复内容。
      需要删除整个多词条跟消息回复的删除一样

      删除 触发内容 ...

      要折叠的内容

      群组操作

      由于机器人拥有的群属于个人隐私
      因此该指令只能由主人跟机器人私发

      +gr:(群组编号) (群号1) [群号2] ...

      群号可以一次添加多个,也可以一次就只加一个,然后继续添加。

      -gr:(群组编号) [群号]

      删除也是处于两种状态->
      一种只填写群组编号,直接删除该群组
      一种填写群组编号和群号,删除指定群组下的指定群号

      ...

      图片已经过时了,看看就行
      f0787d2b-d325-45c9-8a24-aa3443875e18-图片.png

      gr: #查看 权限操作

      内部携带一个简单的权限系统,可以让部分指令的权限外放

      操作指令

      +@某人 (session|admin|group|all) -@某人 (session|admin|group|all) session 会话权限 也就是学习 删除 查询 3大指令的使用权 admin 管理权限 可以操作权限的人,意思他也可以操作别人的权限(只有这个权限的话也是用不了会话仨指令的,虽然能给自己加就是) group 群管理权限 群管操作的指令权限 all 上面3个权限 群管理操作 欢迎新人

      默认有个欢迎词,如果不自定义添加的话。

      +hyc:(tag) (内容) [群组{编号}] #添加 -hyc:(tag) #删除 hyc: #查看欢迎词 ...

      d0fe1e66-f8bf-4a30-89e9-364ebace0b11-图片.png

      支持图片,支持多条消息,每次加人会随机获取一条发送。

      默认无检测群。
      需要用指令添加qq群来实现检测

      /hy addgroup <群号> #添加 /hy delgroup <群号> #删除

      也可以去config里面手动添加

      解禁言

      对于禁言,设立了超级便捷的识别法

      @某人 3s #禁言3秒 @某人 5m #禁言5分钟 ...

      cbf0b9db-1630-45b4-99b7-6e98dbe602ee-图片.png

      其他的时间单位还有h(小时),d(天)。
      解除禁言只需要吧时间改为0s就可以了。

      记得给机器加管理哦~

      同时,该指令支持权限操作,也就是拥有group权限的群友同样可以使用。

      群违禁词

      可以添加一个用于精准匹配的违禁词,当检测到时就会禁言加撤回

      +wjc:(id) (违禁词内容) [{禁言时间}] [gr(id)|全局] -wjc:(id) wjc:

      禁言的时间跟上面的写法相同

      踢人 踢人@某人 定时任务(测试中)

      最新开发的功能,可以按照需求添加定时任务虽然叫任务,但是目前只支持发送消息。

      用主人号给机器私发消息即可

      %ds #添加定时任务 添加定时任务 #中文指令

      然后照着提示一步一步发送就行。
      在任意一个步骤,发送'!!!'即可停止添加!

      ...

      049c9eb8-4f6d-4db4-9db0-56401850d40d-图片.png

      对于定时器名称,支持中文。
      对于定时频率,目前不支持中文识别在做了在做了...
      只识别cron表达式,不懂的请务必花5分钟了解一下

      输入格式

      $cron(表达式)

      这个是为定时任务设置的一个参数识别,后续可能还会有http之类的。

      定时任务添加完成后默认关闭,可以查看

      ds: #查看定时任务 +ds:(id) #开启定时任务 -ds:(id) #关闭定时任务 查询定时任务 #中文指令 开启定时任务:(id) 关闭定时任务:(id) ...

      6d86e51a-6221-43d1-bb25-fe68e5b0e8b5-图片.png

      现在可以查看一个定时任务的详细信息

      ds:(id) ...

      9aa4f160-ea27-4141-a8a9-e6418046aa63-图片.png

      删除定时器

      %ds:(定时器编号) 删除定时任务:(id) # 中文指令

      需先查询对应的定时器编号,才可正确的删除!

      其他操作

      刚进社区就接触了个斗地主插件,所以玩了好久。
      甚至后来拿到源码根据自身的需求进行了一番修改,然后继续用着,但是没有帮助,就顺手在本插件里面写了一个改过后的斗地主插件的帮助...

      ...

      欢迎查看斗地主帮助!
      在有权限的群内发送'开桌'即可创建斗地主对局.
      需求自定义底分的对局可发送'开桌 [底分]'即
      可创建自定义底分对局.
      对局创建后,发送'上桌'即可上桌,当人满3人就
      可以发送'发牌'让机器人给你们发牌.
      在对局未开始之前上桌可以发送'下桌'下桌.
      游戏开始后进入抢地主,可发送'抢','抢地主'
      或'不抢'进行地主的博弈.
      进入出牌阶段,发送'![牌]'即可出牌.
      当你要不起时可以发送'过','要不起','不要'来跳过.
      在任何阶段,管理员可以发送'掀桌'结束对局.
      指令帮助.
      #d beg 领取每日500豆
      #d me 查看胜率
      #da add qq point 为qq添加point个豆子
      #dc addamin qq 添加游戏管理员
      #dc addgroup qq群号 添加游戏群
      以上就是斗地主帮助,祝你游戏愉快!

      发送斗地主就可

      斗地主

      想要我这个斗地主改版也可以来找我要或者进群里要。
      这个默认是关闭的,可以按需求开启。

      发送帮助即可获取本插件的基本帮助
      默认不在群里显示,可以在config里面开启群内显示(方便与群友学习)
      查看所有帮助需要在发送帮助后面发送详细帮助

      帮助 详细帮助

      帮助里面有个本帖子的链接地址,但是默认不显示,可以到config里面开启。
      因为所有更新优先填写到这边,其他位置可能稍微慢点。

      有几个指令,只有console的主人才有权限使用

      /hy pu 对喷 /hy power <s> <qq> <power> 根据qq号进行权限更改,第一个参数就是+或者- 已知BUG和规划

      -规划:自定义定时回复 ->1.8.12
      -规划:实现消息分组设置 ->1.9.12
      -规划:自定义关键词禁言 -> 1.11.23
      -规划:多次发送消息类型学习方法(方便设置菜单) -> 在2.0实现
      -规划:更便捷的学习指令 -> 在2.0实现
      -规划:自定义戳一戳消息 -> 规划到 2.0后面
      -规划:重构2.0--完成

      意见与反馈

      如果你有更好的意见或者发现了某个bug,欢迎在下方评论

      交流

      壶言系列插件交流群 不是云的茶壶云(390444068)
      有任何疑问或者建议都可以来群里提!

      最新的插件动态也会在群里说明!

      推荐

      进了一个Mirai的交流群
      欢迎大家也进来玩啊~
      群里有一个打包好的了控制台版mcl包,供新手使用...

    • Moyuyanli

      已解决 关于以mirai-console为基础的java插件数据持久化
      开发交流 • • Moyuyanli

      7
      0
      赞同
      7
      帖子
      495
      浏览

      Moyuyanli

      问题:JavaAutoSavePluginData自动保存是没有按照我定义的类型存入变量

      ...

      图片.png

      图片.png

      结果:在不存在数据的时候,可以运行一次,当有数据存入的时候,结果就是报错,提示无法识别,然后插件启动失败

      ...

      图片.png

      请问一下这样的情况怎么解决,或者能不再指明一条在mirai-console的插件其他数据持久化的方法!

    • Moyuyanli

      linux上运行console报错
      BUG反馈 • • Moyuyanli

      8
      0
      赞同
      8
      帖子
      643
      浏览

      Moyuyanli

      我在我的服务器上运行mirai 启动失败,不加任何插件可以运行,但是加了command就会失败
      4372d9c2-6b9b-4e6f-9e6c-f1b7afd458fe-图片.png> ^fold

    • 1 / 1