Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Mirai
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
Mirai
Commits
1f2d7e22
Commit
1f2d7e22
authored
Jan 18, 2020
by
Him188
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add BlockingBot
parent
aa427c20
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
164 additions
and
0 deletions
+164
-0
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingBot.java
...-japt/src/main/java/net/mamoe/mirai/japt/BlockingBot.java
+123
-0
mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/BlockingBotImpl.kt
...t/src/main/kotlin/net/mamoe/mirai/japt/BlockingBotImpl.kt
+41
-0
No files found.
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingBot.java
View file @
1f2d7e22
package
net.mamoe.mirai.japt
;
import
kotlinx.io.core.ByteReadPacket
;
import
net.mamoe.mirai.BotAccount
;
import
net.mamoe.mirai.contact.GroupId
;
import
net.mamoe.mirai.contact.GroupInternalId
;
import
net.mamoe.mirai.data.AddFriendResult
;
import
net.mamoe.mirai.data.ImageLink
;
import
net.mamoe.mirai.message.data.Image
;
import
net.mamoe.mirai.network.BotNetworkHandler
;
import
net.mamoe.mirai.utils.GroupNotFoundException
;
import
net.mamoe.mirai.utils.MiraiInternalAPI
;
import
net.mamoe.mirai.utils.MiraiLogger
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
import
java.util.List
;
public
interface
BlockingBot
{
/**
* 账号信息
*/
@MiraiInternalAPI
@NotNull
BotAccount
getAccount
();
/**
* QQ 号码. 实际类型为 uint
*/
long
getUin
();
/**
* 日志记录器
*/
@NotNull
MiraiLogger
getLogger
();
// region contacts
/**
* 与这个机器人相关的 QQ 列表. 机器人与 QQ 不一定是好友
*/
@NotNull
List
<
BlockingQQ
>
getQQs
();
/**
* 获取缓存的 QQ 对象. 若没有对应的缓存, 则会线程安全地创建一个.
*/
BlockingQQ
getQQ
(
long
id
);
/**
* 与这个机器人相关的群列表. 机器人不一定是群成员.
*/
@NotNull
List
<
BlockingGroup
>
getGroups
();
/**
* 获取缓存的群对象. 若没有对应的缓存, 则会线程安全地创建一个.
* 若 {@code id} 无效, 将会抛出 {@link GroupNotFoundException}
*/
@NotNull
BlockingGroup
getGroup
(
long
id
);
/**
* 获取缓存的群对象. 若没有对应的缓存, 则会线程安全地创建一个.
* 若 {@code id} 无效, 将会抛出 {@link GroupNotFoundException}
*/
@NotNull
BlockingGroup
getGroup
(
@NotNull
GroupId
id
);
/**
* 获取缓存的群对象. 若没有对应的缓存, 则会线程安全地创建一个.
* 若 {@code internalId} 无效, 将会抛出 {@link GroupNotFoundException}
*/
@NotNull
BlockingGroup
getGroup
(
@NotNull
GroupInternalId
internalId
);
// endregion
// region network
/**
* 网络模块
*/
@NotNull
BotNetworkHandler
getNetwork
();
/**
* 登录.
* <p>
* 最终调用 [net.mamoe.mirai.network.BotNetworkHandler.login]
*
* @throws net.mamoe.mirai.utils.LoginFailedException
*/
@SuppressWarnings
(
"JavaDoc"
)
void
login
();
// endregion
// region actions
@NotNull
ImageLink
getLink
(
@NotNull
Image
image
);
byte
[]
downloadAsByteArray
(
@NotNull
Image
image
);
@NotNull
ByteReadPacket
download
(
@NotNull
Image
image
);
/**
* 添加一个好友
*
* @param message 若需要验证请求时的验证消息.
* @param remark 好友备注
*/
@NotNull
AddFriendResult
addFriend
(
long
id
,
@Nullable
String
message
,
@Nullable
String
remark
);
/**
* 同意来自陌生人的加好友请求
*/
void
approveFriendAddRequest
(
long
id
,
@Nullable
String
remark
);
// endregion
/**
* 关闭这个 [Bot], 停止一切相关活动. 不可重新登录.
*/
void
dispose
(
@Nullable
Throwable
throwable
);
}
mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/BlockingBotImpl.kt
0 → 100644
View file @
1f2d7e22
package
net.mamoe.mirai.japt
import
kotlinx.coroutines.runBlocking
import
kotlinx.io.core.ByteReadPacket
import
net.mamoe.mirai.Bot
import
net.mamoe.mirai.BotAccount
import
net.mamoe.mirai.contact.GroupId
import
net.mamoe.mirai.contact.GroupInternalId
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.data.ImageLink
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.network.BotNetworkHandler
import
net.mamoe.mirai.utils.MiraiInternalAPI
import
net.mamoe.mirai.utils.MiraiLogger
import
net.mamoe.mirai.utils.toList
internal
class
BlockingBotImpl
(
private
val
bot
:
Bot
)
:
BlockingBot
{
@MiraiInternalAPI
override
fun
getAccount
():
BotAccount
=
bot
.
account
override
fun
getUin
():
Long
=
bot
.
uin
override
fun
getLogger
():
MiraiLogger
=
bot
.
logger
@UseExperimental
(
MiraiInternalAPI
::
class
)
override
fun
getQQs
():
List
<
BlockingQQ
>
=
bot
.
qqs
.
delegate
.
toList
().
map
{
it
.
blocking
()
}
override
fun
getQQ
(
id
:
Long
):
BlockingQQ
=
bot
.
getQQ
(
id
).
blocking
()
@UseExperimental
(
MiraiInternalAPI
::
class
)
override
fun
getGroups
():
List
<
BlockingGroup
>
=
bot
.
groups
.
delegate
.
toList
().
map
{
it
.
blocking
()
}
override
fun
getGroup
(
id
:
Long
):
BlockingGroup
=
runBlocking
{
bot
.
getGroup
(
id
)
}.
blocking
()
override
fun
getGroup
(
id
:
GroupId
):
BlockingGroup
=
runBlocking
{
bot
.
getGroup
(
id
)
}.
blocking
()
override
fun
getGroup
(
internalId
:
GroupInternalId
):
BlockingGroup
=
runBlocking
{
bot
.
getGroup
(
internalId
)
}.
blocking
()
override
fun
getNetwork
():
BotNetworkHandler
=
bot
.
network
override
fun
login
()
=
runBlocking
{
bot
.
login
()
}
override
fun
getLink
(
image
:
Image
):
ImageLink
=
bot
.
run
{
runBlocking
{
image
.
getLink
()
}
}
override
fun
downloadAsByteArray
(
image
:
Image
):
ByteArray
=
bot
.
run
{
runBlocking
{
image
.
downloadAsByteArray
()
}
}
override
fun
download
(
image
:
Image
):
ByteReadPacket
=
bot
.
run
{
runBlocking
{
image
.
download
()
}
}
override
fun
addFriend
(
id
:
Long
,
message
:
String
?,
remark
:
String
?):
AddFriendResult
=
runBlocking
{
bot
.
addFriend
(
id
,
message
,
remark
)
}
override
fun
approveFriendAddRequest
(
id
:
Long
,
remark
:
String
?)
=
runBlocking
{
bot
.
approveFriendAddRequest
(
id
,
remark
)
}
override
fun
dispose
(
throwable
:
Throwable
?)
=
bot
.
dispose
(
throwable
)
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment