Skip to content

Commit 5c0a828

Browse files
committed
feat: add recalling img info option
1 parent 09523e1 commit 5c0a828

File tree

8 files changed

+92
-41
lines changed

8 files changed

+92
-41
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
# [3.4.0](https://github.com/Samarium150/mirai-console-lolicon/compare/3.3.1...3.4.0) (2021-05-08)
2+
3+
4+
### feat
5+
6+
* add recalling img info option ([a6f802c](https://github.com/Samarium150/mirai-console-lolicon/commit/a6f802cb7549833940e179e7ac7e97694dec84e4))
7+
8+
9+
110
## [3.3.1](https://github.com/Samarium150/mirai-console-lolicon/compare/3.3.0...3.3.1) (2021-05-01)
211

312

Module.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Social preview的图片来自 [AliceSoft](https://www.alicesoft.com) 制作的
55
<br>
66
在群内随机发送图片(默认30s自动撤回+60s冷却),支持关键词检索
77
<br>
8-
适配 [mirai-console](https://github.com/mamoe/mirai-console) [![Version](https://img.shields.io/badge/version-2.6.2-blue)](https://github.com/mamoe/mirai/releases/tag/v2.6.2)
8+
适配 [mirai-console](https://github.com/mamoe/mirai-console) [![Version](https://img.shields.io/badge/version-2.6.4-blue)](https://github.com/mamoe/mirai/releases/tag/v2.6.4)
99
<br>
1010
可以在 [Lolicon API](https://api.lolicon.app/#/setu) 申请apikey来增加调用额度
1111
<br>

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Social preview的图片来自 [AliceSoft](https://www.alicesoft.com) 制作的
1212
在群内随机发送图片(默认30s自动撤回+60s冷却),支持关键词检索
1313
<br>
1414
适配 [mirai-console](https://github.com/mamoe/mirai-console)
15-
[![Version](https://img.shields.io/badge/version-2.6.2-blue)](https://github.com/mamoe/mirai/releases/tag/v2.6.2)
15+
[![Version](https://img.shields.io/badge/version-2.6.4-blue)](https://github.com/mamoe/mirai/releases/tag/v2.6.4)
1616
<br>
1717
可以在 [Lolicon API](https://api.lolicon.app/#/setu) 申请apikey来增加调用额度
1818
<br>

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ plugins {
55
kotlin("jvm") version kotlinVersion
66
kotlin("plugin.serialization") version kotlinVersion
77

8-
id("net.mamoe.mirai-console") version "2.6.2"
8+
id("net.mamoe.mirai-console") version "2.6.4"
99
id("org.jetbrains.dokka") version "1.4.32"
1010
}
1111

1212
group = "com.github.samarium150"
13-
version = "3.3.1"
13+
version = "3.4.0"
1414

1515
repositories {
1616
mavenLocal()

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mirai-console-lolicon",
3-
"version": "3.3.1",
3+
"version": "3.4.0",
44
"description": "基于mirai-console的涩图机器人",
55
"scripts": {
66
"changelog": "conventional-changelog -p eslint -i CHANGELOG.md -s"

src/main/kotlin/Lolicon.kt

Lines changed: 61 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -96,54 +96,80 @@ object Lolicon: CompositeCommand(
9696
val (apikey, r18, recall, cooldown) = ExecutionConfig.create(subject)
9797
val parameters = RequestParams(apikey, keyword, r18, 1, PluginConfig.proxy, PluginConfig.size1200)
9898
Main.logger.info(parameters.toReadable())
99+
Main.logger.info("proxy: ${FuelManager.instance.proxy}")
100+
val response: Response?
101+
try {
102+
response = RequestHandler.get(parameters)
103+
} catch (fe: FuelError) {
104+
Main.logger.warning(fe.toString())
105+
sendMessage(ReplyConfig.fuelError)
106+
return
107+
} catch (ae: APIException) {
108+
Main.logger.warning(ae.toString())
109+
sendMessage(ae.toReadable())
110+
return
111+
} catch (e: Exception) {
112+
Main.logger.error(e)
113+
return
114+
}
115+
Main.logger.info(response.toReadable())
99116
try {
100-
Main.logger.info("proxy: ${FuelManager.instance.proxy}")
101-
val response: Response = RequestHandler.get(parameters)
102-
Main.logger.info(response.toReadable())
103117
for (imageData in response.data) {
104118
Main.logger.info("url: ${imageData.url}")
105-
sendMessage(imageData.toReadable())
106-
val stream: InputStream = if (PluginConfig.save && PluginConfig.cache) {
107-
try {
108-
val paths = imageData.url.split("/")
109-
val path = "/data/mirai-console-lolicon/download/${paths[paths.lastIndex]}"
110-
val cache = File(System.getProperty("user.dir") + path)
111-
if (cache.exists()) cache.inputStream() else RequestHandler.download(imageData.url)
112-
} catch (e: Exception) {
113-
RequestHandler.download(imageData.url)
114-
}
115-
} else RequestHandler.download(imageData.url)
116-
val img = subject?.uploadImage(stream)
117-
if (img != null) {
118-
val receipt = (if (PluginConfig.flash) sendMessage(FlashImage(img)) else sendMessage(img)) ?: return
119-
if (recall > 0) {
120-
GlobalScope.launch {
121-
val result = receipt.recallIn((recall * 1000).toLong()).awaitIsSuccess()
122-
withContext(Dispatchers.Default) {
123-
if (!result) Main.logger.warning(receipt.target.toString() + "撤回失败")
124-
else Main.logger.info(receipt.target.toString() + "图片已撤回")
119+
val imgInfoReceipt = sendMessage(imageData.toReadable()) ?: continue
120+
var stream: InputStream? = null
121+
try {
122+
stream = if (PluginConfig.save && PluginConfig.cache) {
123+
try {
124+
val paths = imageData.url.split("/")
125+
val path = "/data/mirai-console-lolicon/download/${paths[paths.lastIndex]}"
126+
val cache = File(System.getProperty("user.dir") + path)
127+
if (cache.exists()) cache.inputStream() else RequestHandler.download(imageData.url)
128+
} catch (e: Exception) {
129+
RequestHandler.download(imageData.url)
130+
}
131+
} else RequestHandler.download(imageData.url)
132+
val img = subject?.uploadImage(stream)
133+
if (img != null) {
134+
val imgReceipt = (if (PluginConfig.flash) sendMessage(FlashImage(img)) else sendMessage(img)) ?: return
135+
if (recall > 0 && PluginConfig.recallImg) {
136+
GlobalScope.launch {
137+
val result = imgReceipt.recallIn((recall * 1000).toLong()).awaitIsSuccess()
138+
withContext(Dispatchers.Default) {
139+
if (!result) Main.logger.warning(imgReceipt.target.toString() + "图片撤回失败")
140+
else Main.logger.info(imgReceipt.target.toString() + "图片已撤回")
141+
}
142+
}
143+
}
144+
if (cooldown > 0) {
145+
Timer.setCooldown(subject)
146+
GlobalScope.launch {
147+
Timer.cooldown(subject, cooldown)
148+
withContext(Dispatchers.Default) {
149+
Main.logger.info(imgReceipt.target.toString()+"命令已冷却")
150+
}
125151
}
126152
}
127153
}
128-
if (cooldown > 0) {
129-
Timer.setCooldown(subject)
154+
} catch (fe: FuelError) {
155+
Main.logger.warning(fe.toString())
156+
sendMessage(ReplyConfig.fuelError)
157+
} catch (e: Exception) {
158+
Main.logger.error(e)
159+
} finally {
160+
@Suppress("BlockingMethodInNonBlockingContext")
161+
stream?.close()
162+
if (recall > 0 && PluginConfig.recallImgInfo) {
130163
GlobalScope.launch {
131-
Timer.cooldown(subject, cooldown)
164+
val result = imgInfoReceipt.recallIn((recall * 1000).toLong()).awaitIsSuccess()
132165
withContext(Dispatchers.Default) {
133-
Main.logger.info(receipt.target.toString()+"命令已冷却")
166+
if (!result) Main.logger.warning(imgInfoReceipt.target.toString() + "图片信息撤回失败")
167+
else Main.logger.info(imgInfoReceipt.target.toString() + "图片信息已撤回")
134168
}
135169
}
136170
}
137171
}
138-
@Suppress("BlockingMethodInNonBlockingContext")
139-
stream.close()
140172
}
141-
} catch (fe: FuelError) {
142-
Main.logger.warning(fe.toString())
143-
sendMessage(ReplyConfig.fuelError)
144-
} catch (ae: APIException) {
145-
Main.logger.warning(ae.toString())
146-
sendMessage(ae.toReadable())
147173
} catch (e: Exception) {
148174
Main.logger.error(e)
149175
}

src/main/kotlin/Main.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import java.net.Proxy
4040
object Main: KotlinPlugin(
4141
JvmPluginDescription(
4242
id = "com.github.samarium150.mirai-console-lolicon",
43-
version = "3.3.1",
43+
version = "3.4.0",
4444
name = "mirai-console-lolicon"
4545
)
4646
) {

src/main/kotlin/PluginConfig.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,22 @@ object PluginConfig : AutoSavePluginConfig("Config") {
9494
@ValueDescription("默认的撤回时间(单位:s)")
9595
var recall: Int by value(30)
9696

97+
/**
98+
* Enable recalling image information
99+
* <br>
100+
* 是否撤回图片信息
101+
*/
102+
@ValueDescription("是否撤回图片信息")
103+
var recallImgInfo: Boolean by value(false)
104+
105+
/**
106+
* Enable recalling image
107+
* <br>
108+
* 是否撤回图片
109+
*/
110+
@ValueDescription("是否撤回图片")
111+
var recallImg: Boolean by value(true)
112+
97113
/**
98114
* Default cooldown time
99115
* <br>

0 commit comments

Comments
 (0)