yz-yuki-plugin 2.0.7-1 → 2.0.7-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# YUKI-PLUGIN
|
|
4
4
|
|
|
5
|
-
- 一个适用于 `Yunzai 系列机器人框架` 的B
|
|
5
|
+
- 一个适用于 `Yunzai 系列机器人框架` 的B站动态、B站视频链接解析和微博动态订阅推送的插件
|
|
6
6
|
|
|
7
7
|
- 支持 群聊/私聊 订阅B站动态和微博动态,支持定时推送,支持手动触发推送,支持简单查询B站/微博用户信息。
|
|
8
8
|
|
|
@@ -160,6 +160,7 @@ https://m.weibo.cn/u/7643376782 # 7643376782 为崩坏星穹铁道博主uid
|
|
|
160
160
|
请使用 `#优纪帮助`或 `/yuki帮助` 获取完整帮助
|
|
161
161
|
|
|
162
162
|
- [x] B站动态
|
|
163
|
+
- [x] B站视频链接解析
|
|
163
164
|
- [x] 微博动态
|
|
164
165
|
|
|
165
166
|
|
|
@@ -190,6 +191,7 @@ https://m.weibo.cn/u/7643376782 # 7643376782 为崩坏星穹铁道博主uid
|
|
|
190
191
|
| 删除B站ck | 删除手动获取的B站cookie,权限:Master | `#删除B站本地ck` |
|
|
191
192
|
| 查看B站ck | 查看当前启用的B站ck,仅限私聊 | `#我的B站ck` |
|
|
192
193
|
| 刷新B站临时ck | 重新获取并刷新redis缓存的未绑定自己的B站ck而自动获取的 临时B站cookie | `#刷新B站临时ck` |
|
|
194
|
+
| B站视频链接解析 | 解析B站视频链接,支持av号、BV号、app分享链接,官方短链 | `链接xxxx` |
|
|
193
195
|
||||
|
|
194
196
|
| **微博功能** | ------------------------- | ---------- |
|
|
195
197
|
| 添加微博推送 | 检测博主的微博动态进行推送,权限:Master。可选分类:视频、图文、文章、转发,不加分类则默认全部 | `#订阅微博推送uid` `#订阅微博推送 图文 uid` |
|
|
@@ -43,6 +43,15 @@ pushContentLineLimit: 5
|
|
|
43
43
|
# 是否展示定时任务的日志,0 不显示 1 显示
|
|
44
44
|
pushTaskLog: 1
|
|
45
45
|
|
|
46
|
+
# 白名单关键词,命中即推送,不在白名单则不推送。
|
|
47
|
+
# 白名单优先级高于黑名单,即命中白名单即推送,不在白名单则不推送。
|
|
48
|
+
# 白名单为空则不启用白名单功能。
|
|
49
|
+
# 配置示例:
|
|
50
|
+
# whiteWordslist:
|
|
51
|
+
# - 白名单关键词1
|
|
52
|
+
# - 白名单关键词2
|
|
53
|
+
whiteWordslist:
|
|
54
|
+
|
|
46
55
|
# 包含关键词不推送
|
|
47
56
|
banWords:
|
|
48
57
|
- 关键词1
|
|
@@ -38,6 +38,15 @@ pushContentLineLimit: 5
|
|
|
38
38
|
# 是否展示定时任务的日志,0 不显示 1 显示
|
|
39
39
|
pushTaskLog: 1
|
|
40
40
|
|
|
41
|
+
# 白名单关键词,命中即推送,不在白名单则不推送。
|
|
42
|
+
# 白名单优先级高于黑名单,即命中白名单即推送,不在白名单则不推送。
|
|
43
|
+
# 白名单为空则不启用白名单功能。
|
|
44
|
+
# 配置示例:
|
|
45
|
+
# whiteWordslist:
|
|
46
|
+
# - 白名单关键词1
|
|
47
|
+
# - 白名单关键词2
|
|
48
|
+
whiteWordslist:
|
|
49
|
+
|
|
41
50
|
# 包含关键词不推送
|
|
42
51
|
banWords:
|
|
43
52
|
- 关键词1
|
|
@@ -184,12 +184,23 @@ class BiliTask {
|
|
|
184
184
|
if (pushMsgMode === 'PIC') {
|
|
185
185
|
const { data, uid } = await BiliQuery.formatDynamicData(pushDynamicData); // 处理动态数据
|
|
186
186
|
const extentData = { ...data };
|
|
187
|
+
const getWhiteWords = biliConfigData?.whiteWordslist;
|
|
187
188
|
const getBanWords = biliConfigData?.banWords;
|
|
189
|
+
if (getWhiteWords && Array.isArray(getWhiteWords) && getWhiteWords.length > 0) {
|
|
190
|
+
// 构建白名单关键字正则表达式,转义特殊字符
|
|
191
|
+
const whiteWords = new RegExp(getWhiteWords.map(word => word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'), 'g');
|
|
192
|
+
if (!whiteWords.test(`${extentData?.title}${extentData?.content}`)) {
|
|
193
|
+
return; // 如果动态消息不在白名单中,则直接返回
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else if (getWhiteWords && !Array.isArray(getWhiteWords)) {
|
|
197
|
+
logger.error(`B站动态:Yaml配置文件中,whiteWordslist 字段格式不是数组格式,请检查!`);
|
|
198
|
+
}
|
|
188
199
|
if (getBanWords && Array.isArray(getBanWords) && getBanWords.length > 0) {
|
|
189
200
|
// 构建屏蔽关键字正则表达式,转义特殊字符
|
|
190
201
|
const banWords = new RegExp(getBanWords.map(word => word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'), 'g');
|
|
191
202
|
if (banWords.test(`${extentData?.title}${extentData?.content}`)) {
|
|
192
|
-
return
|
|
203
|
+
return; // 如果动态消息包含屏蔽关键字,则直接返回
|
|
193
204
|
}
|
|
194
205
|
}
|
|
195
206
|
else if (getBanWords && !Array.isArray(getBanWords)) {
|
|
@@ -223,7 +234,18 @@ class BiliTask {
|
|
|
223
234
|
if (dynamicMsg === undefined || dynamicMsg === 'continue') {
|
|
224
235
|
return 'return'; // 如果动态消息构建失败,则直接返回
|
|
225
236
|
}
|
|
237
|
+
const getWhiteWords = biliConfigData?.whiteWordslist;
|
|
226
238
|
const getBanWords = biliConfigData?.banWords;
|
|
239
|
+
if (getWhiteWords && Array.isArray(getWhiteWords) && getWhiteWords.length > 0) {
|
|
240
|
+
// 构建白名单关键字正则表达式,转义特殊字符
|
|
241
|
+
const whiteWords = new RegExp(getWhiteWords.map(word => word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'), 'g');
|
|
242
|
+
if (!whiteWords.test(dynamicMsg.msg.join(''))) {
|
|
243
|
+
return; // 如果动态消息不在白名单中,则直接返回
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
else if (getWhiteWords && !Array.isArray(getWhiteWords)) {
|
|
247
|
+
logger.error(`B站动态:Yaml配置文件中,whiteWordslist 字段格式不是数组格式,请检查!`);
|
|
248
|
+
}
|
|
227
249
|
if (getBanWords && Array.isArray(getBanWords) && getBanWords.length > 0) {
|
|
228
250
|
// 构建屏蔽关键字正则表达式,转义特殊字符
|
|
229
251
|
const banWords = new RegExp(getBanWords.map(word => word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'), 'g');
|
|
@@ -149,7 +149,18 @@ class WeiboTask {
|
|
|
149
149
|
return; // 如果已经发送过,则直接返回
|
|
150
150
|
if (!!weiboConfigData.pushMsgMode) {
|
|
151
151
|
const { data, uid } = await WeiboQuery.formatDynamicData(pushDynamicData); // 处理动态数据
|
|
152
|
+
const getWhiteWords = weiboConfigData?.whiteWordslist;
|
|
152
153
|
const getBanWords = weiboConfigData?.banWords;
|
|
154
|
+
if (getWhiteWords && Array.isArray(getWhiteWords) && getWhiteWords.length > 0) {
|
|
155
|
+
// 构建白名单关键字正则表达式,转义特殊字符
|
|
156
|
+
const whiteWords = new RegExp(getWhiteWords.map(word => word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'), 'g');
|
|
157
|
+
if (!whiteWords.test(`${data?.title}${data?.content}`)) {
|
|
158
|
+
return; // 如果动态消息不在白名单中,则直接返回
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (getWhiteWords && !Array.isArray(getWhiteWords)) {
|
|
162
|
+
logger.error(`微博动态:Yaml配置文件中,whiteWordslist 字段格式不是数组格式,请检查!`);
|
|
163
|
+
}
|
|
153
164
|
if (getBanWords && Array.isArray(getBanWords) && getBanWords.length > 0) {
|
|
154
165
|
// 构建屏蔽关键字正则表达式,转义特殊字符
|
|
155
166
|
const banWords = new RegExp(getBanWords.map(word => word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'), 'g');
|
|
@@ -189,7 +200,18 @@ class WeiboTask {
|
|
|
189
200
|
if (dynamicMsg === undefined || dynamicMsg === 'continue') {
|
|
190
201
|
return 'return'; // 如果动态消息构建失败或内部资源获取失败,则直接返回
|
|
191
202
|
}
|
|
203
|
+
const getWhiteWords = weiboConfigData?.whiteWordslist;
|
|
192
204
|
const getBanWords = weiboConfigData?.banWords;
|
|
205
|
+
if (getWhiteWords && Array.isArray(getWhiteWords) && getWhiteWords.length > 0) {
|
|
206
|
+
// 构建白名单关键字正则表达式,转义特殊字符
|
|
207
|
+
const whiteWords = new RegExp(getWhiteWords.map(word => word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'), 'g');
|
|
208
|
+
if (!whiteWords.test(dynamicMsg.msg.join(''))) {
|
|
209
|
+
return; // 如果动态消息不在白名单中,则直接返回
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
else if (getWhiteWords && !Array.isArray(getWhiteWords)) {
|
|
213
|
+
logger.error(`微博动态:Yaml配置文件中,whiteWordslist 字段格式不是数组格式,请检查!`);
|
|
214
|
+
}
|
|
193
215
|
if (getBanWords && Array.isArray(getBanWords) && getBanWords.length > 0) {
|
|
194
216
|
// 构建屏蔽关键字正则表达式,转义特殊字符
|
|
195
217
|
const banWords = new RegExp(getBanWords.map(word => word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'), 'g');
|