mirror of
https://github.com/jie65535/mirai-console-jcf-plugin.git
synced 2025-06-02 17:39:15 +08:00
完善订阅工具
- 补充日志 - 添加 rmMod 函数 - set 函数改名 sub - 补充查看订阅数量的函数 - sub、unSub 函数改为私有
This commit is contained in:
parent
54f551c472
commit
4e3ea363e0
@ -2,6 +2,7 @@ package top.jie65535.jcf.util
|
|||||||
|
|
||||||
import net.mamoe.mirai.Bot
|
import net.mamoe.mirai.Bot
|
||||||
import net.mamoe.mirai.utils.MiraiLogger
|
import net.mamoe.mirai.utils.MiraiLogger
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订阅集
|
* 订阅集
|
||||||
@ -13,6 +14,12 @@ class SubscriptionSet(
|
|||||||
private val bot: Bot,
|
private val bot: Bot,
|
||||||
private val logger: MiraiLogger?
|
private val logger: MiraiLogger?
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订阅集名称
|
||||||
|
*/
|
||||||
|
private val name = "sub:${bot.id}:" + UUID.randomUUID().toString()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订阅表
|
* 订阅表
|
||||||
* { mod : group/qq }
|
* { mod : group/qq }
|
||||||
@ -24,8 +31,20 @@ class SubscriptionSet(
|
|||||||
*/
|
*/
|
||||||
private val receiverLock = LockUtil(receiverMap)
|
private val receiverLock = LockUtil(receiverMap)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订阅的mod数量
|
||||||
|
*/
|
||||||
|
val countMod = receiverMap.size
|
||||||
|
|
||||||
// region -- 参数
|
// region -- 参数
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mod被订阅的qq/群数量
|
||||||
|
*/
|
||||||
|
infix fun countSub(mod: Int): Int = receiverLock.withLock {
|
||||||
|
get(mod)?.size ?: 0
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清空订阅
|
* 清空订阅
|
||||||
*/
|
*/
|
||||||
@ -44,13 +63,16 @@ class SubscriptionSet(
|
|||||||
* @param mod 模组id
|
* @param mod 模组id
|
||||||
* @param id qq/群号(不等于0)
|
* @param id qq/群号(不等于0)
|
||||||
*/
|
*/
|
||||||
operator fun set(mod: Int, id: Long) {
|
private fun sub(mod: Int, id: Long) {
|
||||||
if (id == 0L) return
|
if (id == 0L) return
|
||||||
receiverLock.withLock {
|
receiverLock.withLock {
|
||||||
val set = get(mod) ?: mutableSetOf()
|
val set = get(mod) ?: mutableSetOf()
|
||||||
put(mod, set)
|
put(mod, set)
|
||||||
set += id
|
set += id
|
||||||
logger?.info("")// TODO 日志
|
logger?.apply {
|
||||||
|
val type = if (id < 0) "group" else "qq"
|
||||||
|
info("订阅集[$name]添加订阅{$mod:${type}_$id},mod总订阅量:${set.size}")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +82,7 @@ class SubscriptionSet(
|
|||||||
* @param mod 模组id
|
* @param mod 模组id
|
||||||
* @param qq q号(大于0)
|
* @param qq q号(大于0)
|
||||||
*/
|
*/
|
||||||
fun subQQ(mod: Int, qq: Long) = set(mod, qq)
|
fun subQQ(mod: Int, qq: Long) = sub(mod, qq)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 记录订阅
|
* 记录订阅
|
||||||
@ -68,7 +90,7 @@ class SubscriptionSet(
|
|||||||
* @param mod 模组id
|
* @param mod 模组id
|
||||||
* @param group 群号(大于0)
|
* @param group 群号(大于0)
|
||||||
*/
|
*/
|
||||||
fun subGroup(mod: Int, group: Long) = set(mod, 0 - group)
|
fun subGroup(mod: Int, group: Long) = sub(mod, 0 - group)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取消订阅
|
* 取消订阅
|
||||||
@ -81,12 +103,15 @@ class SubscriptionSet(
|
|||||||
* @param mod 模组id
|
* @param mod 模组id
|
||||||
* @param id qq/群号(不等于0)
|
* @param id qq/群号(不等于0)
|
||||||
*/
|
*/
|
||||||
fun unSub(mod: Int, id: Long) {
|
private fun unSub(mod: Int, id: Long) {
|
||||||
if (id == 0L) return
|
if (id == 0L) return
|
||||||
receiverLock.withLock {
|
receiverLock.withLock {
|
||||||
get(mod)?.let {
|
get(mod)?.let {
|
||||||
it -= id
|
it -= id
|
||||||
logger?.info("")// TODO 日志
|
logger?.apply {
|
||||||
|
val type = if (id < 0) "group" else "qq"
|
||||||
|
info("订阅集[$name]移除订阅{$mod:${type}_$id},mod总订阅量:${it.size}")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -94,8 +119,8 @@ class SubscriptionSet(
|
|||||||
/**
|
/**
|
||||||
* 撤销用户订阅
|
* 撤销用户订阅
|
||||||
*
|
*
|
||||||
* @param mod 模组id
|
* @param mod 模组id
|
||||||
* @param qq q号(大于0)
|
* @param qq q号(大于0)
|
||||||
*/
|
*/
|
||||||
fun unSubQQ(mod: Int, qq: Long) = unSub(mod, qq)
|
fun unSubQQ(mod: Int, qq: Long) = unSub(mod, qq)
|
||||||
|
|
||||||
@ -110,19 +135,22 @@ class SubscriptionSet(
|
|||||||
/**
|
/**
|
||||||
* 撤销mod订阅
|
* 撤销mod订阅
|
||||||
*
|
*
|
||||||
* TODO 日志
|
|
||||||
*
|
|
||||||
* @param mod 模组id
|
* @param mod 模组id
|
||||||
*/
|
*/
|
||||||
operator fun minusAssign(mod: Int) = receiverLock.withLock {
|
infix fun rmMod(mod: Int) = receiverLock.withLock {
|
||||||
if (mod < 0) {
|
remove(mod)?.let {
|
||||||
clear()
|
logger?.info("订阅集[$name]清除mod[$mod],总mod量:$size")
|
||||||
} else {
|
|
||||||
remove(mod)
|
|
||||||
}
|
}
|
||||||
Unit// return value
|
Unit// return value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 撤销mod订阅
|
||||||
|
*
|
||||||
|
* @param mod 模组id
|
||||||
|
*/
|
||||||
|
operator fun minusAssign(mod: Int) = rmMod(mod)
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region -- 消费
|
// region -- 消费
|
||||||
|
Loading…
Reference in New Issue
Block a user