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
ccec3e95
Commit
ccec3e95
authored
Feb 28, 2020
by
Him188
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add `OperableEvent`, close #95
parent
e2170175
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
39 deletions
+53
-39
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt
...mmonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt
+27
-39
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/types.kt
...c/commonMain/kotlin/net.mamoe.mirai/event/events/types.kt
+26
-0
No files found.
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt
View file @
ccec3e95
...
@@ -17,6 +17,8 @@ import net.mamoe.mirai.data.Packet
...
@@ -17,6 +17,8 @@ import net.mamoe.mirai.data.Packet
import
net.mamoe.mirai.event.AbstractCancellableEvent
import
net.mamoe.mirai.event.AbstractCancellableEvent
import
net.mamoe.mirai.event.BroadcastControllable
import
net.mamoe.mirai.event.BroadcastControllable
import
net.mamoe.mirai.event.CancellableEvent
import
net.mamoe.mirai.event.CancellableEvent
import
net.mamoe.mirai.event.events.ImageUploadEvent.Failed
import
net.mamoe.mirai.event.events.ImageUploadEvent.Succeed
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.utils.ExternalImage
import
net.mamoe.mirai.utils.ExternalImage
...
@@ -107,6 +109,9 @@ data class BeforeImageUploadEvent(
...
@@ -107,6 +109,9 @@ data class BeforeImageUploadEvent(
/**
/**
* 图片上传完成
* 图片上传完成
*
* @see Succeed
* @see Failed
*/
*/
sealed
class
ImageUploadEvent
:
BotEvent
,
BotActiveEvent
,
AbstractCancellableEvent
()
{
sealed
class
ImageUploadEvent
:
BotEvent
,
BotActiveEvent
,
AbstractCancellableEvent
()
{
abstract
val
target
:
Contact
abstract
val
target
:
Contact
...
@@ -195,9 +200,8 @@ interface GroupSettingChangeEvent<T> : GroupEvent, BotPassiveEvent, BroadcastCon
...
@@ -195,9 +200,8 @@ interface GroupSettingChangeEvent<T> : GroupEvent, BotPassiveEvent, BroadcastCon
data class
GroupNameChangeEvent
(
data class
GroupNameChangeEvent
(
override
val
origin
:
String
,
override
val
origin
:
String
,
override
val
new
:
String
,
override
val
new
:
String
,
override
val
group
:
Group
,
override
val
group
:
Group
val
isByBot
:
Boolean
// 无法获取 operator
)
:
GroupSettingChangeEvent
<
String
>,
Packet
// 无法获取操作人
)
:
GroupSettingChangeEvent
<
String
>,
Packet
/**
/**
* 入群公告改变. 此事件广播前修改就已经完成.
* 入群公告改变. 此事件广播前修改就已经完成.
...
@@ -209,10 +213,8 @@ data class GroupEntranceAnnouncementChangeEvent(
...
@@ -209,10 +213,8 @@ data class GroupEntranceAnnouncementChangeEvent(
/**
/**
* 操作人. 为 null 时则是机器人操作
* 操作人. 为 null 时则是机器人操作
*/
*/
val
operator
:
Member
?
override
val
operator
:
Member
?
)
:
GroupSettingChangeEvent
<
String
>,
Packet
)
:
GroupSettingChangeEvent
<
String
>,
Packet
,
OperableEvent
val
GroupEntranceAnnouncementChangeEvent
.
isByBot
:
Boolean
get
()
=
operator
!=
null
/**
/**
...
@@ -225,10 +227,9 @@ data class GroupMuteAllEvent(
...
@@ -225,10 +227,9 @@ data class GroupMuteAllEvent(
/**
/**
* 操作人. 为 null 时则是机器人操作
* 操作人. 为 null 时则是机器人操作
*/
*/
val
operator
:
Member
?
override
val
operator
:
Member
?
)
:
GroupSettingChangeEvent
<
Boolean
>,
Packet
)
:
GroupSettingChangeEvent
<
Boolean
>,
Packet
,
OperableEvent
val
GroupMuteAllEvent
.
isByBot
:
Boolean
get
()
=
operator
!=
null
/**
/**
* 群 "匿名聊天" 功能状态改变. 此事件广播前修改就已经完成.
* 群 "匿名聊天" 功能状态改变. 此事件广播前修改就已经完成.
...
@@ -240,10 +241,9 @@ data class GroupAllowAnonymousChatEvent(
...
@@ -240,10 +241,9 @@ data class GroupAllowAnonymousChatEvent(
/**
/**
* 操作人. 为 null 时则是机器人操作
* 操作人. 为 null 时则是机器人操作
*/
*/
val
operator
:
Member
?
override
val
operator
:
Member
?
)
:
GroupSettingChangeEvent
<
Boolean
>,
Packet
)
:
GroupSettingChangeEvent
<
Boolean
>,
Packet
,
OperableEvent
val
GroupAllowAnonymousChatEvent
.
isByBot
:
Boolean
get
()
=
operator
!=
null
/**
/**
* 群 "坦白说" 功能状态改变. 此事件广播前修改就已经完成.
* 群 "坦白说" 功能状态改变. 此事件广播前修改就已经完成.
...
@@ -251,9 +251,8 @@ val GroupAllowAnonymousChatEvent.isByBot: Boolean get() = operator != null
...
@@ -251,9 +251,8 @@ val GroupAllowAnonymousChatEvent.isByBot: Boolean get() = operator != null
data class
GroupAllowConfessTalkEvent
(
data class
GroupAllowConfessTalkEvent
(
override
val
origin
:
Boolean
,
override
val
origin
:
Boolean
,
override
val
new
:
Boolean
,
override
val
new
:
Boolean
,
override
val
group
:
Group
,
override
val
group
:
Group
val
isByBot
:
Boolean
)
:
GroupSettingChangeEvent
<
Boolean
>,
Packet
// 无法获取操作人
)
:
GroupSettingChangeEvent
<
Boolean
>,
Packet
/**
/**
* 群 "允许群员邀请好友加群" 功能状态改变. 此事件广播前修改就已经完成.
* 群 "允许群员邀请好友加群" 功能状态改变. 此事件广播前修改就已经完成.
...
@@ -265,10 +264,9 @@ data class GroupAllowMemberInviteEvent(
...
@@ -265,10 +264,9 @@ data class GroupAllowMemberInviteEvent(
/**
/**
* 操作人. 为 null 时则是机器人操作
* 操作人. 为 null 时则是机器人操作
*/
*/
val
operator
:
Member
?
override
val
operator
:
Member
?
)
:
GroupSettingChangeEvent
<
Boolean
>,
Packet
)
:
GroupSettingChangeEvent
<
Boolean
>,
Packet
,
OperableEvent
val
GroupAllowMemberInviteEvent
.
isByBot
:
Boolean
get
()
=
operator
!=
null
// endregion
// endregion
...
@@ -294,8 +292,8 @@ sealed class MemberLeaveEvent : GroupMemberEvent {
...
@@ -294,8 +292,8 @@ sealed class MemberLeaveEvent : GroupMemberEvent {
/**
/**
* 操作人. 为 null 则是机器人操作
* 操作人. 为 null 则是机器人操作
*/
*/
val
operator
:
Member
?
override
val
operator
:
Member
?
)
:
MemberLeaveEvent
(),
Packet
{
)
:
MemberLeaveEvent
(),
Packet
,
OperableEvent
{
override
fun
toString
():
String
{
override
fun
toString
():
String
{
return
"MemberLeaveEvent.Kick(member=$member, operator=$operator)"
return
"MemberLeaveEvent.Kick(member=$member, operator=$operator)"
}
}
...
@@ -311,8 +309,6 @@ sealed class MemberLeaveEvent : GroupMemberEvent {
...
@@ -311,8 +309,6 @@ sealed class MemberLeaveEvent : GroupMemberEvent {
}
}
}
}
val
MemberLeaveEvent
.
Kick
.
isByBot
:
Boolean
get
()
=
operator
!=
null
// endregion
// endregion
// region 名片和头衔
// region 名片和头衔
...
@@ -336,10 +332,8 @@ data class MemberCardChangeEvent(
...
@@ -336,10 +332,8 @@ data class MemberCardChangeEvent(
/**
/**
* 操作人. 为 null 时则是机器人操作. 可能与 [member] 引用相同, 此时为群员自己修改.
* 操作人. 为 null 时则是机器人操作. 可能与 [member] 引用相同, 此时为群员自己修改.
*/
*/
val
operator
:
Member
?
override
val
operator
:
Member
?
)
:
GroupMemberEvent
)
:
GroupMemberEvent
,
OperableEvent
val
MemberCardChangeEvent
.
isByBot
:
Boolean
get
()
=
operator
!=
null
/**
/**
* 群头衔改动. 一定为群主操作
* 群头衔改动. 一定为群主操作
...
@@ -362,10 +356,8 @@ data class MemberSpecialTitleChangeEvent(
...
@@ -362,10 +356,8 @@ data class MemberSpecialTitleChangeEvent(
* 不为 null 时一定为群主. 可能与 [member] 引用相同, 此时为群员自己修改.
* 不为 null 时一定为群主. 可能与 [member] 引用相同, 此时为群员自己修改.
* 为 null 时则是机器人操作.
* 为 null 时则是机器人操作.
*/
*/
val
operator
:
Member
?
override
val
operator
:
Member
?
)
:
GroupMemberEvent
)
:
GroupMemberEvent
,
OperableEvent
val
MemberSpecialTitleChangeEvent
.
isByBot
:
Boolean
get
()
=
operator
!=
null
// endregion
// endregion
...
@@ -395,10 +387,8 @@ data class MemberMuteEvent(
...
@@ -395,10 +387,8 @@ data class MemberMuteEvent(
/**
/**
* 操作人. 为 null 则为机器人操作
* 操作人. 为 null 则为机器人操作
*/
*/
val
operator
:
Member
?
override
val
operator
:
Member
?
)
:
GroupMemberEvent
,
Packet
)
:
GroupMemberEvent
,
Packet
,
OperableEvent
val
MemberMuteEvent
.
isByBot
:
Boolean
get
()
=
operator
!=
null
/**
/**
* 群成员被取消禁言事件. 被禁言的成员都不可能是机器人本人
* 群成员被取消禁言事件. 被禁言的成员都不可能是机器人本人
...
@@ -408,10 +398,8 @@ data class MemberUnmuteEvent(
...
@@ -408,10 +398,8 @@ data class MemberUnmuteEvent(
/**
/**
* 操作人. 为 null 则为机器人操作
* 操作人. 为 null 则为机器人操作
*/
*/
val
operator
:
Member
?
override
val
operator
:
Member
?
)
:
GroupMemberEvent
,
Packet
)
:
GroupMemberEvent
,
Packet
,
OperableEvent
val
MemberUnmuteEvent
.
isByBot
:
Boolean
get
()
=
operator
!=
null
// endregion
// endregion
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/types.kt
View file @
ccec3e95
...
@@ -14,6 +14,7 @@ import net.mamoe.mirai.contact.Group
...
@@ -14,6 +14,7 @@ import net.mamoe.mirai.contact.Group
import
net.mamoe.mirai.contact.Member
import
net.mamoe.mirai.contact.Member
import
net.mamoe.mirai.contact.QQ
import
net.mamoe.mirai.contact.QQ
import
net.mamoe.mirai.event.Event
import
net.mamoe.mirai.event.Event
import
net.mamoe.mirai.utils.MiraiExperimentalAPI
/**
/**
* 有关一个 [Bot] 的事件
* 有关一个 [Bot] 的事件
...
@@ -51,6 +52,31 @@ interface GroupMemberEvent : GroupEvent {
...
@@ -51,6 +52,31 @@ interface GroupMemberEvent : GroupEvent {
get
()
=
member
.
group
get
()
=
member
.
group
}
}
/**
* 可由 [Member] 或 [Bot] 操作的事件
* @see isByBot
* @see operatorOrBot
*/
interface
OperableEvent
:
GroupEvent
{
/**
* 操作人, 为 `null` 时为 [Bot] 操作
*/
val
operator
:
Member
?
}
/**
* 是否由 [Bot] 操作
*/
val
OperableEvent
.
isByBot
:
Boolean
get
()
=
operator
==
null
/**
* 当操作人为 [Member] 时获取这个 [Member],
* 当操作人为 [Bot] 时获取 [Group.botAsMember]
*/
@UseExperimental
(
MiraiExperimentalAPI
::
class
)
val
OperableEvent
.
operatorOrBot
:
Member
get
()
=
this
.
operator
?:
this
.
group
.
botAsMember
/**
/**
* 有关好友的事件
* 有关好友的事件
...
...
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