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
62a21c3a
Commit
62a21c3a
authored
Jan 12, 2020
by
Him188
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
da1d33ab
08851e87
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
361 additions
and
15 deletions
+361
-15
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt
.../src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt
+1
-1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt
...re/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt
+0
-2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/MessagePacket.kt
...ommonMain/kotlin/net.mamoe.mirai/message/MessagePacket.kt
+1
-2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt
...nMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt
+6
-9
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/PlainText.kt
...mmonMain/kotlin/net.mamoe.mirai/message/data/PlainText.kt
+1
-1
mirai-japt/README.md
mirai-japt/README.md
+9
-0
mirai-japt/build.gradle.kts
mirai-japt/build.gradle.kts
+44
-0
mirai-japt/mirai-japt.postfixTemplates
mirai-japt/mirai-japt.postfixTemplates
+5
-0
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingBot.java
...-japt/src/main/java/net/mamoe/mirai/japt/BlockingBot.java
+4
-0
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingContact.java
...t/src/main/java/net/mamoe/mirai/japt/BlockingContact.java
+35
-0
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingContacts.java
.../src/main/java/net/mamoe/mirai/japt/BlockingContacts.java
+22
-0
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingGroup.java
...apt/src/main/java/net/mamoe/mirai/japt/BlockingGroup.java
+57
-0
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingMember.java
...pt/src/main/java/net/mamoe/mirai/japt/BlockingMember.java
+29
-0
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingQQ.java
...i-japt/src/main/java/net/mamoe/mirai/japt/BlockingQQ.java
+31
-0
mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/BlockingContacts.kt
.../src/main/kotlin/net/mamoe/mirai/japt/BlockingContacts.kt
+11
-0
mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/BlockingContactsImpl.kt
.../main/kotlin/net/mamoe/mirai/japt/BlockingContactsImpl.kt
+59
-0
mirai-japt/src/test/kotlin/BlockingTest.java
mirai-japt/src/test/kotlin/BlockingTest.java
+14
-0
mirai-japt/src/test/kotlin/TestBlocking.kt
mirai-japt/src/test/kotlin/TestBlocking.kt
+31
-0
settings.gradle
settings.gradle
+1
-0
No files found.
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt
View file @
62a21c3a
...
@@ -39,7 +39,7 @@ interface Contact : CoroutineScope {
...
@@ -39,7 +39,7 @@ interface Contact : CoroutineScope {
suspend
fun
uploadImage
(
image
:
ExternalImage
):
ImageId
suspend
fun
uploadImage
(
image
:
ExternalImage
):
ImageId
}
}
suspend
inline
fun
Contact
.
sendMessage
(
message
:
Message
)
=
sendMessage
(
message
.
c
hain
())
suspend
inline
fun
Contact
.
sendMessage
(
message
:
Message
)
=
sendMessage
(
message
.
toC
hain
())
suspend
inline
fun
Contact
.
sendMessage
(
plain
:
String
)
=
sendMessage
(
plain
.
singleChain
())
suspend
inline
fun
Contact
.
sendMessage
(
plain
:
String
)
=
sendMessage
(
plain
.
singleChain
())
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt
View file @
62a21c3a
...
@@ -61,8 +61,6 @@ interface Group : Contact, CoroutineScope/*, Map<UInt, Member>*/ { // TODO: 2019
...
@@ -61,8 +61,6 @@ interface Group : Contact, CoroutineScope/*, Map<UInt, Member>*/ { // TODO: 2019
/**
/**
* 让机器人退出这个群. 机器人必须为非群主才能退出. 否则将会失败
* 让机器人退出这个群. 机器人必须为非群主才能退出. 否则将会失败
*
* @see QuitGroupResponse.isSuccess 判断是否成功
*/
*/
suspend
fun
quit
():
Boolean
suspend
fun
quit
():
Boolean
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/MessagePacket.kt
View file @
62a21c3a
...
@@ -10,7 +10,6 @@ import net.mamoe.mirai.data.ImageLink
...
@@ -10,7 +10,6 @@ import net.mamoe.mirai.data.ImageLink
import
net.mamoe.mirai.event.events.BotEvent
import
net.mamoe.mirai.event.events.BotEvent
import
net.mamoe.mirai.message.data.*
import
net.mamoe.mirai.message.data.*
import
net.mamoe.mirai.utils.*
import
net.mamoe.mirai.utils.*
import
net.mamoe.mirai.utils.coerceAtLeastOrFail
import
kotlin.jvm.JvmName
import
kotlin.jvm.JvmName
/**
/**
...
@@ -50,7 +49,7 @@ abstract class MessagePacketBase<TSender : QQ, TSubject : Contact>(_bot: Bot) :
...
@@ -50,7 +49,7 @@ abstract class MessagePacketBase<TSender : QQ, TSubject : Contact>(_bot: Bot) :
*/
*/
suspend
inline
fun
reply
(
message
:
MessageChain
)
=
subject
.
sendMessage
(
message
)
suspend
inline
fun
reply
(
message
:
MessageChain
)
=
subject
.
sendMessage
(
message
)
suspend
inline
fun
reply
(
message
:
Message
)
=
subject
.
sendMessage
(
message
.
c
hain
())
suspend
inline
fun
reply
(
message
:
Message
)
=
subject
.
sendMessage
(
message
.
toC
hain
())
suspend
inline
fun
reply
(
plain
:
String
)
=
subject
.
sendMessage
(
plain
.
toMessage
())
suspend
inline
fun
reply
(
plain
:
String
)
=
subject
.
sendMessage
(
plain
.
toMessage
())
@JvmName
(
"reply1"
)
@JvmName
(
"reply1"
)
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt
View file @
62a21c3a
...
@@ -63,7 +63,7 @@ fun MessageChain(initialCapacity: Int): MessageChain =
...
@@ -63,7 +63,7 @@ fun MessageChain(initialCapacity: Int): MessageChain =
/**
/**
* 构造 [MessageChain]
* 构造 [MessageChain]
* 若仅提供一个参数, 请考虑使用 [Message.
c
hain] 以优化性能
* 若仅提供一个参数, 请考虑使用 [Message.
toC
hain] 以优化性能
*/
*/
@Suppress
(
"FunctionName"
)
@Suppress
(
"FunctionName"
)
fun
MessageChain
(
vararg
messages
:
Message
):
MessageChain
=
fun
MessageChain
(
vararg
messages
:
Message
):
MessageChain
=
...
@@ -81,12 +81,12 @@ fun MessageChain(messages: Iterable<Message>): MessageChain =
...
@@ -81,12 +81,12 @@ fun MessageChain(messages: Iterable<Message>): MessageChain =
* 构造单元素的不可修改的 [MessageChain]. 内部类实现为 [SingleMessageChain]
* 构造单元素的不可修改的 [MessageChain]. 内部类实现为 [SingleMessageChain]
*
*
* 参数 [delegate] 不能为 [MessageChain] 的实例, 否则将会抛出异常.
* 参数 [delegate] 不能为 [MessageChain] 的实例, 否则将会抛出异常.
* 使用 [Message.
c
hain] 将帮助提前处理这个问题.
* 使用 [Message.
toC
hain] 将帮助提前处理这个问题.
*
*
* @param delegate 所构造的单元素 [MessageChain] 代表的 [Message]
* @param delegate 所构造的单元素 [MessageChain] 代表的 [Message]
* @throws IllegalArgumentException 当 [delegate] 为 [MessageChain] 的实例时
* @throws IllegalArgumentException 当 [delegate] 为 [MessageChain] 的实例时
*
*
* @see Message.
c
hain receiver 模式
* @see Message.
toC
hain receiver 模式
*/
*/
@MiraiExperimentalAPI
@MiraiExperimentalAPI
@UseExperimental
(
ExperimentalContracts
::
class
)
@UseExperimental
(
ExperimentalContracts
::
class
)
...
@@ -106,17 +106,13 @@ fun SingleMessageChain(delegate: Message): MessageChain {
...
@@ -106,17 +106,13 @@ fun SingleMessageChain(delegate: Message): MessageChain {
* 否则将调用 [MessageChain] 构造一个 [MessageChainImpl]
* 否则将调用 [MessageChain] 构造一个 [MessageChainImpl]
*/
*/
@Suppress
(
"NOTHING_TO_INLINE"
)
@Suppress
(
"NOTHING_TO_INLINE"
)
inline
fun
Message
.
chain
():
MessageChain
=
if
(
this
is
MessageChain
)
this
else
MessageChain
(
inline
fun
Message
.
toChain
():
MessageChain
=
if
(
this
is
MessageChain
)
this
else
MessageChain
(
this
)
this
)
/**
/**
* 构造 [MessageChain]
* 构造 [MessageChain]
*/
*/
@Suppress
(
"unused"
,
"NOTHING_TO_INLINE"
)
@Suppress
(
"unused"
,
"NOTHING_TO_INLINE"
)
inline
fun
List
<
Message
>.
messageChain
():
MessageChain
=
inline
fun
List
<
Message
>.
toMessageChain
():
MessageChain
=
MessageChain
(
this
)
MessageChain
(
this
)
/**
/**
* 获取第一个 [M] 类型的 [Message] 实例
* 获取第一个 [M] 类型的 [Message] 实例
...
@@ -327,6 +323,7 @@ internal inline class MessageChainImpl constructor(
...
@@ -327,6 +323,7 @@ internal inline class MessageChainImpl constructor(
*
*
* 在连接时将会把它当做一个普通 [Message] 看待, 但它不能被 [plusAssign]
* 在连接时将会把它当做一个普通 [Message] 看待, 但它不能被 [plusAssign]
*/
*/
@PublishedApi
internal
inline
class
SingleMessageChainImpl
(
internal
inline
class
SingleMessageChainImpl
(
private
val
delegate
:
Message
private
val
delegate
:
Message
)
:
Message
,
MutableList
<
Message
>,
)
:
Message
,
MutableList
<
Message
>,
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/PlainText.kt
View file @
62a21c3a
...
@@ -23,4 +23,4 @@ inline fun String.toMessage(): PlainText = PlainText(this)
...
@@ -23,4 +23,4 @@ inline fun String.toMessage(): PlainText = PlainText(this)
* @see SingleMessageChainImpl
* @see SingleMessageChainImpl
*/
*/
@Suppress
(
"NOTHING_TO_INLINE"
)
@Suppress
(
"NOTHING_TO_INLINE"
)
inline
fun
String
.
singleChain
():
MessageChain
=
this
.
toMessage
().
chain
()
inline
fun
String
.
singleChain
():
MessageChain
=
SingleMessageChainImpl
(
this
.
toMessage
())
\ No newline at end of file
\ No newline at end of file
mirai-japt/README.md
0 → 100644
View file @
62a21c3a
# mirai-japt
Mirai Java Apt
提供一些阻塞/异步/RxJava API 来让 Java 调用 Mirai 的挂起函数 API 更容易
提供 Utils 类来让 Java 调用 Mirai 的内联方法更容易
该模块暂未完成.
\ No newline at end of file
mirai-japt/build.gradle.kts
0 → 100644
View file @
62a21c3a
plugins
{
kotlin
(
"jvm"
)
java
}
val
kotlinVersion
:
String
by
rootProject
.
ext
val
atomicFuVersion
:
String
by
rootProject
.
ext
val
coroutinesVersion
:
String
by
rootProject
.
ext
val
kotlinXIoVersion
:
String
by
rootProject
.
ext
val
coroutinesIoVersion
:
String
by
rootProject
.
ext
val
serializationVersion
:
String
by
rootProject
.
ext
val
klockVersion
:
String
by
rootProject
.
ext
val
ktorVersion
:
String
by
rootProject
.
ext
kotlin
{
sourceSets
{
all
{
languageSettings
.
enableLanguageFeature
(
"InlineClasses"
)
languageSettings
.
useExperimentalAnnotation
(
"kotlin.Experimental"
)
}
}
}
fun
kotlinx
(
id
:
String
,
version
:
String
)
=
"org.jetbrains.kotlinx:kotlinx-$id:$version"
fun
ktor
(
id
:
String
,
version
:
String
)
=
"io.ktor:ktor-$id:$version"
dependencies
{
api
(
project
(
":mirai-core"
))
runtimeOnly
(
files
(
"../mirai-core/build/classes/kotlin/jvm/main"
))
// classpath is not added correctly by IDE
api
(
group
=
"org.jetbrains.kotlinx"
,
name
=
"kotlinx-coroutines-javafx"
,
version
=
"1.3.2"
)
api
(
kotlin
(
"stdlib"
,
kotlinVersion
))
api
(
kotlinx
(
"io-jvm"
,
kotlinXIoVersion
))
api
(
kotlinx
(
"io"
,
kotlinXIoVersion
))
api
(
kotlinx
(
"coroutines-io"
,
coroutinesIoVersion
))
api
(
kotlinx
(
"coroutines-core"
,
coroutinesVersion
))
}
tasks
.
withType
<
JavaCompile
>()
{
options
.
encoding
=
"UTF-8"
}
\ No newline at end of file
mirai-japt/mirai-japt.postfixTemplates
0 → 100644
View file @
62a21c3a
## Contact ##
.blocking : Blocking wrap
net.mamoe.mirai.contact.QQ → net.mamoe.mirai.japt.BlockingContacts.createBlocking($expr$)
net.mamoe.mirai.contact.QQ [net.mamoe.mirai.japt.BlockingContacts] → net.mamoe.mirai.japt.BlockingContacts.createBlocking($expr$)
net.mamoe.mirai.timpc.network.QQImpl [net.mamoe.mirai.japt.BlockingContacts] → net.mamoe.mirai.japt.BlockingContacts.createBlocking($expr$)
\ No newline at end of file
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingBot.java
0 → 100644
View file @
62a21c3a
package
net.mamoe.mirai.japt
;
public
interface
BlockingBot
{
}
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingContact.java
0 → 100644
View file @
62a21c3a
package
net.mamoe.mirai.japt
;
import
net.mamoe.mirai.Bot
;
import
net.mamoe.mirai.message.data.Message
;
import
net.mamoe.mirai.message.data.MessageChain
;
import
org.jetbrains.annotations.NotNull
;
@SuppressWarnings
(
"unused"
)
public
interface
BlockingContact
{
/**
* 这个联系人所属 [Bot]
*/
@NotNull
Bot
getBot
();
/**
* 可以是 QQ 号码或者群号码 [GroupId].
*/
long
getId
();
/**
* 向这个对象发送消息.
*/
void
sendMessage
(
@NotNull
MessageChain
messages
);
/**
* 向这个对象发送消息.
*/
void
sendMessage
(
@NotNull
String
message
);
/**
* 向这个对象发送消息.
*/
void
sendMessage
(
@NotNull
Message
message
);
}
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingContacts.java
0 → 100644
View file @
62a21c3a
package
net.mamoe.mirai.japt
;
import
net.mamoe.mirai.contact.Group
;
import
net.mamoe.mirai.contact.Member
;
import
net.mamoe.mirai.contact.QQ
;
/**
* 构造阻塞式的联系人.
*/
public
final
class
BlockingContacts
{
public
static
BlockingQQ
createBlocking
(
QQ
qq
)
{
return
new
BlockingQQImpl
(
qq
);
}
public
static
BlockingGroup
createBlocking
(
Group
group
)
{
return
new
BlockingGroupImpl
(
group
);
}
public
static
BlockingMember
createBlocking
(
Member
member
)
{
return
new
BlockingMemberImpl
(
member
);
}
}
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingGroup.java
0 → 100644
View file @
62a21c3a
package
net.mamoe.mirai.japt
;
import
net.mamoe.mirai.data.GroupInfo
;
import
java.util.Map
;
@SuppressWarnings
(
"unused"
)
public
interface
BlockingGroup
extends
BlockingContact
{
/**
* 内部 ID. 内部 ID 为 [GroupId] 的映射
*/
long
getInternalId
();
/**
* 群主 (同步事件更新)
* 进行 [updateGroupInfo] 时将会更新这个值.
*/
BlockingMember
getOwner
();
/**
* 群名称 (同步事件更新)
* 进行 [updateGroupInfo] 时将会更新这个值.
*/
String
getName
();
/**
* 入群公告, 没有时为空字符串. (同步事件更新)
* 进行 [updateGroupInfo] 时将会更新这个值.
*/
String
getAnnouncement
();
/**
* 在 [Group] 实例创建的时候查询一次. 并与事件同步事件更新
* <p>
* **注意**: 获得的列表仅为这一时刻的成员列表的镜像. 它将不会被更新
*/
Map
<
Long
,
BlockingMember
>
getMembers
();
/**
* 获取群成员. 若此 ID 的成员不存在, 则会抛出 [kotlin.NoSuchElementException]
*/
BlockingMember
getMember
(
long
id
);
/**
* 更新群资料. 群资料会与服务器事件同步事件更新, 一般情况下不需要手动更新.
*
* @return 这一时刻的群资料
*/
GroupInfo
updateGroupInfo
();
/**
* 让机器人退出这个群. 机器人必须为非群主才能退出. 否则将会失败
*/
boolean
quit
();
String
toFullString
();
}
\ No newline at end of file
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingMember.java
0 → 100644
View file @
62a21c3a
package
net.mamoe.mirai.japt
;
import
net.mamoe.mirai.contact.MemberPermission
;
@SuppressWarnings
(
"unused"
)
public
interface
BlockingMember
{
/**
* 所在的群
*/
BlockingGroup
getGroup
();
/**
* 权限
*/
MemberPermission
getPermission
();
/**
* 禁言
*
* @param durationSeconds 持续时间. 精确到秒. 范围区间表示为 `(0s, 30days]`. 超过范围则会抛出异常.
* @return 若机器人无权限禁言这个群成员, 返回 `false`
*/
Boolean
mute
(
int
durationSeconds
);
/**
* 解除禁言
*/
void
unmute
();
}
mirai-japt/src/main/java/net/mamoe/mirai/japt/BlockingQQ.java
0 → 100644
View file @
62a21c3a
package
net.mamoe.mirai.japt
;
import
net.mamoe.mirai.data.FriendNameRemark
;
import
net.mamoe.mirai.data.PreviousNameList
;
import
net.mamoe.mirai.data.Profile
;
import
org.jetbrains.annotations.NotNull
;
@SuppressWarnings
(
"unused"
)
public
interface
BlockingQQ
extends
BlockingContact
{
/**
* 查询用户资料
*/
@NotNull
Profile
queryProfile
();
/**
* 查询曾用名.
* <p>
* 曾用名可能是:
* - 昵称
* - 共同群内的群名片
*/
@NotNull
PreviousNameList
queryPreviousNameList
();
/**
* 查询机器人账号给这个人设置的备注
*/
@NotNull
FriendNameRemark
queryRemark
();
}
mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/BlockingContacts.kt
0 → 100644
View file @
62a21c3a
@
file
:
Suppress
(
"NOTHING_TO_INLINE"
,
"unused"
)
package
net.mamoe.mirai.japt
import
net.mamoe.mirai.contact.Group
import
net.mamoe.mirai.contact.Member
import
net.mamoe.mirai.contact.QQ
inline
fun
Group
.
blocking
():
BlockingGroup
=
BlockingContacts
.
createBlocking
(
this
)
inline
fun
QQ
.
blocking
():
BlockingQQ
=
BlockingContacts
.
createBlocking
(
this
)
inline
fun
Member
.
blocking
():
BlockingMember
=
BlockingContacts
.
createBlocking
(
this
)
\ No newline at end of file
mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/BlockingContactsImpl.kt
0 → 100644
View file @
62a21c3a
@
file
:
Suppress
(
"EXPERIMENTAL_API_USAGE"
)
package
net.mamoe.mirai.japt
import
kotlinx.coroutines.runBlocking
import
net.mamoe.mirai.Bot
import
net.mamoe.mirai.contact.Group
import
net.mamoe.mirai.contact.Member
import
net.mamoe.mirai.contact.MemberPermission
import
net.mamoe.mirai.contact.QQ
import
net.mamoe.mirai.data.FriendNameRemark
import
net.mamoe.mirai.data.GroupInfo
import
net.mamoe.mirai.data.PreviousNameList
import
net.mamoe.mirai.data.Profile
import
net.mamoe.mirai.message.data.Message
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.toChain
import
net.mamoe.mirai.message.data.toMessage
import
net.mamoe.mirai.utils.MiraiInternalAPI
import
net.mamoe.mirai.utils.toList
internal
class
BlockingQQImpl
(
private
val
delegate
:
QQ
)
:
BlockingQQ
{
override
fun
getBot
():
Bot
=
delegate
.
bot
override
fun
getId
():
Long
=
delegate
.
id
override
fun
sendMessage
(
messages
:
MessageChain
)
=
runBlocking
{
delegate
.
sendMessage
(
messages
)
}
override
fun
sendMessage
(
message
:
String
)
=
runBlocking
{
delegate
.
sendMessage
(
message
.
toMessage
().
toChain
())
}
override
fun
sendMessage
(
message
:
Message
)
=
runBlocking
{
delegate
.
sendMessage
(
message
.
toChain
())
}
override
fun
queryProfile
():
Profile
=
runBlocking
{
delegate
.
queryProfile
()
}
override
fun
queryPreviousNameList
():
PreviousNameList
=
runBlocking
{
delegate
.
queryPreviousNameList
()
}
override
fun
queryRemark
():
FriendNameRemark
=
runBlocking
{
delegate
.
queryRemark
()
}
}
internal
class
BlockingGroupImpl
(
private
val
delegate
:
Group
)
:
BlockingGroup
{
override
fun
sendMessage
(
messages
:
MessageChain
)
=
runBlocking
{
delegate
.
sendMessage
(
messages
)
}
override
fun
sendMessage
(
message
:
String
)
=
runBlocking
{
delegate
.
sendMessage
(
message
.
toMessage
().
toChain
())
}
override
fun
sendMessage
(
message
:
Message
)
=
runBlocking
{
delegate
.
sendMessage
(
message
.
toChain
())
}
override
fun
getOwner
():
BlockingMember
=
delegate
.
owner
.
blocking
()
override
fun
getName
():
String
=
delegate
.
name
override
fun
getId
():
Long
=
delegate
.
id
override
fun
updateGroupInfo
():
GroupInfo
=
runBlocking
{
delegate
.
updateGroupInfo
()
}
override
fun
toFullString
():
String
=
delegate
.
toFullString
()
override
fun
getMember
(
id
:
Long
):
BlockingMember
=
delegate
.
getMember
(
id
).
blocking
()
override
fun
getBot
():
Bot
=
delegate
.
bot
override
fun
getAnnouncement
():
String
=
delegate
.
announcement
@UseExperimental
(
MiraiInternalAPI
::
class
)
override
fun
getMembers
():
Map
<
Long
,
BlockingMember
>
=
delegate
.
members
.
delegate
.
toList
().
associateBy
{
it
.
id
}.
mapValues
{
it
.
value
.
blocking
()
}
override
fun
getInternalId
():
Long
=
delegate
.
internalId
.
value
override
fun
quit
():
Boolean
=
runBlocking
{
delegate
.
quit
()
}
}
internal
class
BlockingMemberImpl
(
private
val
delegate
:
Member
)
:
BlockingMember
{
override
fun
getGroup
():
BlockingGroup
=
delegate
.
group
.
blocking
()
override
fun
getPermission
():
MemberPermission
=
delegate
.
permission
override
fun
mute
(
durationSeconds
:
Int
):
Boolean
=
runBlocking
{
delegate
.
mute
(
durationSeconds
)
}
override
fun
unmute
()
=
runBlocking
{
delegate
.
unmute
()
}
}
\ No newline at end of file
mirai-japt/src/test/kotlin/BlockingTest.java
0 → 100644
View file @
62a21c3a
public
class
BlockingTest
{
public
static
void
main
(
String
[]
args
)
{
//Bot bot = new Bot(new BotAccount(123456, ""), EmptyCoroutineContext.INSTANCE);
//if (bot.getNetwork().login() != LoginResult.) {
// throw IllegalStateException("Login failed")
//}
//bot.getContacts().getGroups();
//var qq = BlockingContacts.createBlocking(bot.getContacts().getQQ(123L))
//println(createBlocking.queryRemark())
}
}
mirai-japt/src/test/kotlin/TestBlocking.kt
0 → 100644
View file @
62a21c3a
import
net.mamoe.mirai.Bot
import
net.mamoe.mirai.BotAccount
import
net.mamoe.mirai.japt.BlockingContacts
import
net.mamoe.mirai.network.protocol.tim.packet.login.LoginResult
import
java.io.File
@ExperimentalUnsignedTypes
private
fun
readTestAccount
():
BotAccount
?
{
val
file
=
File
(
"testAccount.txt"
)
if
(!
file
.
exists
()
||
!
file
.
canRead
())
{
return
null
}
val
lines
=
file
.
readLines
()
return
try
{
BotAccount
(
lines
[
0
].
toUInt
(),
lines
[
1
])
}
catch
(
e
:
Exception
)
{
null
}
}
@ExperimentalUnsignedTypes
suspend
fun
main
()
{
val
bot
=
Bot
(
readTestAccount
()
!!
)
if
(
bot
.
network
.
login
()
!=
LoginResult
.
SUCCESS
)
{
throw
IllegalStateException
(
"Login failed"
)
}
val
createBlocking
=
BlockingContacts
.
createBlocking
(
bot
.
contacts
.
getQQ
(
123L
))
println
(
createBlocking
.
queryRemark
())
}
\ No newline at end of file
settings.gradle
View file @
62a21c3a
...
@@ -36,6 +36,7 @@ include(':mirai-core')
...
@@ -36,6 +36,7 @@ include(':mirai-core')
include
(
':mirai-core-timpc'
)
include
(
':mirai-core-timpc'
)
include
(
':mirai-core-qqandroid'
)
include
(
':mirai-core-qqandroid'
)
include
(
':mirai-japt'
)
include
(
':mirai-console'
)
include
(
':mirai-console'
)
//include(':mirai-api')
//include(':mirai-api')
include
(
':mirai-api-http'
)
include
(
':mirai-api-http'
)
...
...
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