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
114604f2
Commit
114604f2
authored
Sep 08, 2019
by
Him188moe
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Renamed `robot` to `bot`
parent
1184de5b
Changes
29
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
227 additions
and
184 deletions
+227
-184
README.md
README.md
+2
-2
mirai-core/src/main/java/net/mamoe/mirai/Bot.java
mirai-core/src/main/java/net/mamoe/mirai/Bot.java
+26
-22
mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java
mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java
+16
-16
mirai-core/src/main/java/net/mamoe/mirai/contact/Contact.kt
mirai-core/src/main/java/net/mamoe/mirai/contact/Contact.kt
+4
-4
mirai-core/src/main/java/net/mamoe/mirai/contact/Group.kt
mirai-core/src/main/java/net/mamoe/mirai/contact/Group.kt
+4
-4
mirai-core/src/main/java/net/mamoe/mirai/contact/QQ.kt
mirai-core/src/main/java/net/mamoe/mirai/contact/QQ.kt
+6
-6
mirai-core/src/main/java/net/mamoe/mirai/event/events/bot/BotEvent.java
.../main/java/net/mamoe/mirai/event/events/bot/BotEvent.java
+21
-0
mirai-core/src/main/java/net/mamoe/mirai/event/events/bot/BotEvents.kt
...c/main/java/net/mamoe/mirai/event/events/bot/BotEvents.kt
+18
-0
mirai-core/src/main/java/net/mamoe/mirai/event/events/bot/BotLoginSucceedEvent.java
...et/mamoe/mirai/event/events/bot/BotLoginSucceedEvent.java
+10
-0
mirai-core/src/main/java/net/mamoe/mirai/event/events/group/GroupEvent.java
...n/java/net/mamoe/mirai/event/events/group/GroupEvent.java
+5
-5
mirai-core/src/main/java/net/mamoe/mirai/event/events/group/GroupMessageEvent.java
...net/mamoe/mirai/event/events/group/GroupMessageEvent.java
+3
-3
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/BeforePacketSendEvent.java
...moe/mirai/event/events/network/BeforePacketSendEvent.java
+3
-3
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/ClientPacketEvent.java
...t/mamoe/mirai/event/events/network/ClientPacketEvent.java
+3
-3
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/PacketEvent.java
...ava/net/mamoe/mirai/event/events/network/PacketEvent.java
+5
-5
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/PacketSentEvent.java
...net/mamoe/mirai/event/events/network/PacketSentEvent.java
+3
-3
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/ServerPacketEvent.java
...t/mamoe/mirai/event/events/network/ServerPacketEvent.java
+3
-3
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/ServerPacketReceivedEvent.java
...mirai/event/events/network/ServerPacketReceivedEvent.java
+3
-3
mirai-core/src/main/java/net/mamoe/mirai/event/events/qq/FriendEvent.java
...ain/java/net/mamoe/mirai/event/events/qq/FriendEvent.java
+5
-5
mirai-core/src/main/java/net/mamoe/mirai/event/events/qq/FriendMessageEvent.java
...a/net/mamoe/mirai/event/events/qq/FriendMessageEvent.java
+3
-3
mirai-core/src/main/java/net/mamoe/mirai/event/events/robot/RobotLoginSucceedEvent.java
...amoe/mirai/event/events/robot/RobotLoginSucceedEvent.java
+0
-10
mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt
.../main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt
+50
-50
mirai-core/src/main/java/net/mamoe/mirai/network/packet/action/AddContact.kt
.../java/net/mamoe/mirai/network/packet/action/AddContact.kt
+4
-4
mirai-core/src/main/java/net/mamoe/mirai/network/packet/action/ClientSendFriendMessagePacket.kt
...ai/network/packet/action/ClientSendFriendMessagePacket.kt
+4
-4
mirai-core/src/main/java/net/mamoe/mirai/network/packet/action/ClientSendGroupMessagePacket.kt
...rai/network/packet/action/ClientSendGroupMessagePacket.kt
+2
-2
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseKeyExchangePacket.kt
...work/packet/login/ServerLoginResponseKeyExchangePacket.kt
+1
-1
mirai-core/src/main/java/net/mamoe/mirai/plugin/MiraiPluginBase.java
...src/main/java/net/mamoe/mirai/plugin/MiraiPluginBase.java
+2
-2
mirai-core/src/main/java/net/mamoe/mirai/utils/MiraiLogger.kt
...i-core/src/main/java/net/mamoe/mirai/utils/MiraiLogger.kt
+12
-12
mirai-core/src/main/java/net/mamoe/mirai/utils/RobotAccount.java
...ore/src/main/java/net/mamoe/mirai/utils/RobotAccount.java
+2
-2
mirai-core/src/test/java/BadQQFilter.kt
mirai-core/src/test/java/BadQQFilter.kt
+7
-7
No files found.
README.md
View file @
114604f2
...
@@ -40,8 +40,8 @@ Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持).
...
@@ -40,8 +40,8 @@ Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持).
-
[X] Network - Message Receiving
-
[X] Network - Message Receiving
-
[X] Network - Message Sending
-
[X] Network - Message Sending
-
[ ] Network - Events
**(Working on)**
-
[ ] Network - Events
**(Working on)**
-
[ ]
Robot - Friend/group list
-
[ ]
Bot - Friend/group list
-
[ ]
Rob
ot - Actions(joining group, adding friend, etc.)
-
[ ]
B
ot - Actions(joining group, adding friend, etc.)
-
[ ] Message Section
**(Working on)**
-
[ ] Message Section
**(Working on)**
-
[ ] Contact
-
[ ] Contact
-
[ ] UI
-
[ ] UI
...
...
mirai-core/src/main/java/net/mamoe/mirai/
Rob
ot.java
→
mirai-core/src/main/java/net/mamoe/mirai/
B
ot.java
View file @
114604f2
...
@@ -3,9 +3,9 @@ package net.mamoe.mirai;
...
@@ -3,9 +3,9 @@ package net.mamoe.mirai;
import
lombok.Getter
;
import
lombok.Getter
;
import
net.mamoe.mirai.contact.Group
;
import
net.mamoe.mirai.contact.Group
;
import
net.mamoe.mirai.contact.QQ
;
import
net.mamoe.mirai.contact.QQ
;
import
net.mamoe.mirai.network.RobotNetworkHandler
;
import
net.mamoe.mirai.network.BotNetworkHandler
;
import
net.mamoe.mirai.utils.BotAccount
;
import
net.mamoe.mirai.utils.ContactList
;
import
net.mamoe.mirai.utils.ContactList
;
import
net.mamoe.mirai.utils.RobotAccount
;
import
net.mamoe.mirai.utils.config.MiraiConfigSection
;
import
net.mamoe.mirai.utils.config.MiraiConfigSection
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
...
@@ -15,43 +15,47 @@ import java.util.concurrent.atomic.AtomicInteger;
...
@@ -15,43 +15,47 @@ import java.util.concurrent.atomic.AtomicInteger;
/**
/**
* Mirai 的机器人. 一个机器人实例登录一个 QQ 账号.
* Mirai 的机器人. 一个机器人实例登录一个 QQ 账号.
* Mirai 为多账号设计, 可同时维护多个机器人
账号
.
* Mirai 为多账号设计, 可同时维护多个机器人.
* <br>
* <br>
* {@link
Rob
ot} 由 2 个模块组成.
* {@link
B
ot} 由 2 个模块组成.
* {@linkplain ContactSystem 联系人管理}: 可通过 {@link
Rob
ot#contacts} 访问
* {@linkplain ContactSystem 联系人管理}: 可通过 {@link
B
ot#contacts} 访问
* {@linkplain
RobotNetworkHandler 网络处理器}: 可通过 {@link Rob
ot#network} 访问
* {@linkplain
BotNetworkHandler 网络处理器}: 可通过 {@link B
ot#network} 访问
* <br>
* <br>
*
另外地, 若你需要得到机器人的 QQ 账号, 请访问 {@link Rob
ot#account}
*
若你需要得到机器人的 QQ 账号, 请访问 {@link B
ot#account}
* 若你需要得到服务器上所有机器人列表, 请访问 {@link
Rob
ot#instances}
* 若你需要得到服务器上所有机器人列表, 请访问 {@link
B
ot#instances}
*
*
* @author Him188moe
* @author Him188moe
* @author NatrualHG
* @author NatrualHG
* @see net.mamoe.mirai.contact.Contact
* @see net.mamoe.mirai.contact.Contact
*
*
* <p>
* <p>
*
Rob
ot that is the base of the whole program.
*
B
ot that is the base of the whole program.
* It contains a {@link ContactSystem}, which manage contacts such as {@link QQ} and {@link Group}.
* It contains a {@link ContactSystem}, which manage contacts such as {@link QQ} and {@link Group}.
*/
*/
public
final
class
Robot
implements
Closeable
{
public
final
class
Bot
implements
Closeable
{
public
static
final
List
<
Robot
>
instances
=
Collections
.
synchronizedList
(
new
LinkedList
<>());
public
static
final
List
<
Bot
>
instances
=
Collections
.
synchronizedList
(
new
LinkedList
<>());
{
instances
.
add
(
this
);
}
public
final
int
id
=
_id
.
getAndAdd
(
1
);
public
final
int
id
=
_id
.
getAndAdd
(
1
);
public
final
Rob
otAccount
account
;
public
final
B
otAccount
account
;
public
final
ContactSystem
contacts
=
new
ContactSystem
();
public
final
ContactSystem
contacts
=
new
ContactSystem
();
public
final
Rob
otNetworkHandler
network
;
public
final
B
otNetworkHandler
network
;
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
return
String
.
format
(
"
Rob
ot{id=%d,qq=%d}"
,
id
,
this
.
account
.
qqNumber
);
return
String
.
format
(
"
B
ot{id=%d,qq=%d}"
,
id
,
this
.
account
.
qqNumber
);
}
}
/**
/**
*
Rob
ot 联系人管理.
*
B
ot 联系人管理.
*
*
* @see
Rob
ot#contacts
* @see
B
ot#contacts
*/
*/
public
final
class
ContactSystem
{
public
final
class
ContactSystem
{
private
final
ContactList
<
Group
>
groups
=
new
ContactList
<>();
private
final
ContactList
<
Group
>
groups
=
new
ContactList
<>();
...
@@ -63,14 +67,14 @@ public final class Robot implements Closeable {
...
@@ -63,14 +67,14 @@ public final class Robot implements Closeable {
public
QQ
getQQ
(
long
qqNumber
)
{
public
QQ
getQQ
(
long
qqNumber
)
{
if
(!
this
.
qqs
.
containsKey
(
qqNumber
))
{
if
(!
this
.
qqs
.
containsKey
(
qqNumber
))
{
this
.
qqs
.
put
(
qqNumber
,
new
QQ
(
Rob
ot
.
this
,
qqNumber
));
this
.
qqs
.
put
(
qqNumber
,
new
QQ
(
B
ot
.
this
,
qqNumber
));
}
}
return
this
.
qqs
.
get
(
qqNumber
);
return
this
.
qqs
.
get
(
qqNumber
);
}
}
public
Group
getGroupByNumber
(
long
groupNumber
)
{
public
Group
getGroupByNumber
(
long
groupNumber
)
{
if
(!
this
.
groups
.
containsKey
(
groupNumber
))
{
if
(!
this
.
groups
.
containsKey
(
groupNumber
))
{
this
.
groups
.
put
(
groupNumber
,
new
Group
(
Rob
ot
.
this
,
groupNumber
));
this
.
groups
.
put
(
groupNumber
,
new
Group
(
B
ot
.
this
,
groupNumber
));
}
}
return
groups
.
get
(
groupNumber
);
return
groups
.
get
(
groupNumber
);
}
}
...
@@ -91,9 +95,9 @@ public final class Robot implements Closeable {
...
@@ -91,9 +95,9 @@ public final class Robot implements Closeable {
return
owners
.
contains
(
ownerName
);
return
owners
.
contains
(
ownerName
);
}
}
public
Rob
ot
(
MiraiConfigSection
<
Object
>
data
)
throws
Throwable
{
public
B
ot
(
MiraiConfigSection
<
Object
>
data
)
throws
Throwable
{
this
(
this
(
new
Rob
otAccount
(
new
B
otAccount
(
data
.
getLongOrThrow
(
"account"
,
()
->
new
IllegalArgumentException
(
"account"
)),
data
.
getLongOrThrow
(
"account"
,
()
->
new
IllegalArgumentException
(
"account"
)),
data
.
getStringOrThrow
(
"password"
,
()
->
new
IllegalArgumentException
(
"password"
))
data
.
getStringOrThrow
(
"password"
,
()
->
new
IllegalArgumentException
(
"password"
))
),
),
...
@@ -101,12 +105,12 @@ public final class Robot implements Closeable {
...
@@ -101,12 +105,12 @@ public final class Robot implements Closeable {
);
);
}
}
public
Robot
(
@NotNull
Rob
otAccount
account
,
@NotNull
List
<
String
>
owners
)
{
public
Bot
(
@NotNull
B
otAccount
account
,
@NotNull
List
<
String
>
owners
)
{
Objects
.
requireNonNull
(
account
);
Objects
.
requireNonNull
(
account
);
Objects
.
requireNonNull
(
owners
);
Objects
.
requireNonNull
(
owners
);
this
.
account
=
account
;
this
.
account
=
account
;
this
.
owners
=
Collections
.
unmodifiableList
(
owners
);
this
.
owners
=
Collections
.
unmodifiableList
(
owners
);
this
.
network
=
new
Rob
otNetworkHandler
(
this
);
this
.
network
=
new
B
otNetworkHandler
(
this
);
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java
View file @
114604f2
...
@@ -6,10 +6,10 @@ import net.mamoe.mirai.event.events.server.ServerDisabledEvent;
...
@@ -6,10 +6,10 @@ import net.mamoe.mirai.event.events.server.ServerDisabledEvent;
import
net.mamoe.mirai.event.events.server.ServerEnabledEvent
;
import
net.mamoe.mirai.event.events.server.ServerEnabledEvent
;
import
net.mamoe.mirai.network.packet.login.LoginState
;
import
net.mamoe.mirai.network.packet.login.LoginState
;
import
net.mamoe.mirai.task.MiraiTaskManager
;
import
net.mamoe.mirai.task.MiraiTaskManager
;
import
net.mamoe.mirai.utils.BotAccount
;
import
net.mamoe.mirai.utils.LoggerTextFormat
;
import
net.mamoe.mirai.utils.LoggerTextFormat
;
import
net.mamoe.mirai.utils.MiraiLogger
;
import
net.mamoe.mirai.utils.MiraiLogger
;
import
net.mamoe.mirai.utils.MiraiLoggerKt
;
import
net.mamoe.mirai.utils.MiraiLoggerKt
;
import
net.mamoe.mirai.utils.RobotAccount
;
import
net.mamoe.mirai.utils.config.MiraiConfig
;
import
net.mamoe.mirai.utils.config.MiraiConfig
;
import
net.mamoe.mirai.utils.config.MiraiConfigSection
;
import
net.mamoe.mirai.utils.config.MiraiConfigSection
;
import
net.mamoe.mirai.utils.setting.MiraiSettingListSection
;
import
net.mamoe.mirai.utils.setting.MiraiSettingListSection
;
...
@@ -155,7 +155,7 @@ public class MiraiServer {
...
@@ -155,7 +155,7 @@ public class MiraiServer {
MiraiConfigSection
<
Object
>
section
=
new
MiraiConfigSection
<>();
MiraiConfigSection
<
Object
>
section
=
new
MiraiConfigSection
<>();
Scanner
scanner
=
new
Scanner
(
System
.
in
);
Scanner
scanner
=
new
Scanner
(
System
.
in
);
getLogger
().
info
(
"Input a "
+
LoggerTextFormat
.
RED
+
" QQ number "
+
LoggerTextFormat
.
GREEN
+
"for default
ro
botNetworkHandler"
);
getLogger
().
info
(
"Input a "
+
LoggerTextFormat
.
RED
+
" QQ number "
+
LoggerTextFormat
.
GREEN
+
"for default botNetworkHandler"
);
getLogger
().
info
(
"输入用于默认机器人的QQ号"
);
getLogger
().
info
(
"输入用于默认机器人的QQ号"
);
long
qqNumber
=
scanner
.
nextLong
();
long
qqNumber
=
scanner
.
nextLong
();
getLogger
().
info
(
"Input the password for that QQ account"
);
getLogger
().
info
(
"Input the password for that QQ account"
);
...
@@ -176,33 +176,33 @@ public class MiraiServer {
...
@@ -176,33 +176,33 @@ public class MiraiServer {
getLogger
().
info
(
LoggerTextFormat
.
GREEN
+
"Server enabled; Welcome to Mirai"
);
getLogger
().
info
(
LoggerTextFormat
.
GREEN
+
"Server enabled; Welcome to Mirai"
);
getLogger
().
info
(
"Mirai Version="
+
MiraiServer
.
MIRAI_VERSION
+
" QQ Version="
+
MiraiServer
.
QQ_VERSION
);
getLogger
().
info
(
"Mirai Version="
+
MiraiServer
.
MIRAI_VERSION
+
" QQ Version="
+
MiraiServer
.
QQ_VERSION
);
getLogger
().
info
(
"Initializing [
Rob
ot]s"
);
getLogger
().
info
(
"Initializing [
B
ot]s"
);
try
{
try
{
getAvailable
Rob
ot
();
getAvailable
B
ot
();
}
catch
(
ExecutionException
|
InterruptedException
e
)
{
}
catch
(
ExecutionException
|
InterruptedException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
/*
/*
this.qqs.keySet().stream().map(key -> this.qqs.getSection(key)).forEach(section -> {
this.qqs.keySet().stream().map(key -> this.qqs.getSection(key)).forEach(section -> {
getLogger().info("Initializing [
Rob
ot] " + section.getString("account"));
getLogger().info("Initializing [
B
ot] " + section.getString("account"));
try {
try {
Robot robot = new Rob
ot(section);
Bot bot = new B
ot(section);
var state =
ro
bot.network.tryLogin$mirai_core().get();
var state = bot.network.tryLogin$mirai_core().get();
//
ro
bot.network.tryLogin$mirai_core().whenComplete((state, e) -> {
//bot.network.tryLogin$mirai_core().whenComplete((state, e) -> {
if (state == LoginState.SUCCESS) {
if (state == LoginState.SUCCESS) {
Robot.instances.add(ro
bot);
Bot.instances.add(
bot);
getLogger().success(" Login Succeed");
getLogger().success(" Login Succeed");
} else {
} else {
getLogger().error(" Login Failed with error " + state);
getLogger().error(" Login Failed with error " + state);
ro
bot.close();
bot.close();
}
}
// }).get();
// }).get();
} catch (Throwable e) {
} catch (Throwable e) {
e.printStackTrace();
e.printStackTrace();
getLogger().error("Could not load QQ
ro
bots config!");
getLogger().error("Could not load QQ bots config!");
System.exit(1);
System.exit(1);
}
}
});*/
});*/
...
@@ -219,14 +219,14 @@ public class MiraiServer {
...
@@ -219,14 +219,14 @@ public class MiraiServer {
"1515419818----1234567890\n"
+
"1515419818----1234567890\n"
+
"3107367848----987654321\n"
;
"3107367848----987654321\n"
;
private
Robot
getAvailableRob
ot
()
throws
ExecutionException
,
InterruptedException
{
private
Bot
getAvailableB
ot
()
throws
ExecutionException
,
InterruptedException
{
for
(
String
it
:
qqList
.
split
(
"\n"
))
{
for
(
String
it
:
qqList
.
split
(
"\n"
))
{
var
strings
=
it
.
split
(
"----"
);
var
strings
=
it
.
split
(
"----"
);
var
robot
=
new
Robot
(
new
Rob
otAccount
(
Long
.
parseLong
(
strings
[
0
]),
strings
[
1
]),
List
.
of
());
var
bot
=
new
Bot
(
new
B
otAccount
(
Long
.
parseLong
(
strings
[
0
]),
strings
[
1
]),
List
.
of
());
if
(
ro
bot
.
network
.
tryLogin
$mirai_core
().
get
()
==
LoginState
.
SUCCESS
)
{
if
(
bot
.
network
.
tryLogin
$mirai_core
().
get
()
==
LoginState
.
SUCCESS
)
{
MiraiLoggerKt
.
success
(
ro
bot
,
"Login succeed"
);
MiraiLoggerKt
.
success
(
bot
,
"Login succeed"
);
return
ro
bot
;
return
bot
;
}
}
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/contact/Contact.kt
View file @
114604f2
package
net.mamoe.mirai.contact
package
net.mamoe.mirai.contact
import
net.mamoe.mirai.
Rob
ot
import
net.mamoe.mirai.
B
ot
import
net.mamoe.mirai.message.Message
import
net.mamoe.mirai.message.Message
import
net.mamoe.mirai.message.defaults.MessageChain
import
net.mamoe.mirai.message.defaults.MessageChain
import
net.mamoe.mirai.message.defaults.PlainText
import
net.mamoe.mirai.message.defaults.PlainText
/**
/**
* A contact is a [QQ] or a [Group] for one particular [
Rob
ot] instance only.
* A contact is a [QQ] or a [Group] for one particular [
B
ot] instance only.
*
*
* @param
robot Owner [Rob
ot]
* @param
bot Owner [B
ot]
* @author Him188moe
* @author Him188moe
*/
*/
abstract
class
Contact
internal
constructor
(
val
robot
:
Rob
ot
,
val
number
:
Long
)
{
abstract
class
Contact
internal
constructor
(
val
bot
:
B
ot
,
val
number
:
Long
)
{
/**
/**
* Async
* Async
*/
*/
...
...
mirai-core/src/main/java/net/mamoe/mirai/contact/Group.kt
View file @
114604f2
package
net.mamoe.mirai.contact
package
net.mamoe.mirai.contact
import
net.mamoe.mirai.
Rob
ot
import
net.mamoe.mirai.
B
ot
import
net.mamoe.mirai.contact.Group.Companion.groupNumberToId
import
net.mamoe.mirai.contact.Group.Companion.groupNumberToId
import
net.mamoe.mirai.message.defaults.MessageChain
import
net.mamoe.mirai.message.defaults.MessageChain
import
net.mamoe.mirai.utils.ContactList
import
net.mamoe.mirai.utils.ContactList
...
@@ -10,18 +10,18 @@ import java.io.Closeable
...
@@ -10,18 +10,18 @@ import java.io.Closeable
* 群
* 群
*
*
* Java 获取 groupNumber: `group.getNumber()`
* Java 获取 groupNumber: `group.getNumber()`
* Java 获取所属
robot: `group.getRob
ot()`
* Java 获取所属
bot: `group.getB
ot()`
* Java 获取群成员列表: `group.getMembers()`
* Java 获取群成员列表: `group.getMembers()`
* Java 获取 groupId: `group.getGroupId()`
* Java 获取 groupId: `group.getGroupId()`
*
*
* Java 调用 [groupNumberToId] : `Group.groupNumberToId(number)`
* Java 调用 [groupNumberToId] : `Group.groupNumberToId(number)`
*/
*/
class
Group
(
robot
:
Robot
,
number
:
Long
)
:
Contact
(
ro
bot
,
number
),
Closeable
{
class
Group
(
bot
:
Bot
,
number
:
Long
)
:
Contact
(
bot
,
number
),
Closeable
{
val
groupId
=
groupNumberToId
(
number
)
val
groupId
=
groupNumberToId
(
number
)
val
members
=
ContactList
<
QQ
>()
val
members
=
ContactList
<
QQ
>()
override
fun
sendMessage
(
message
:
MessageChain
)
{
override
fun
sendMessage
(
message
:
MessageChain
)
{
ro
bot
.
network
.
messageHandler
.
sendGroupMessage
(
this
,
message
)
bot
.
network
.
messageHandler
.
sendGroupMessage
(
this
,
message
)
}
}
override
fun
sendXMLMessage
(
message
:
String
)
{
override
fun
sendXMLMessage
(
message
:
String
)
{
...
...
mirai-core/src/main/java/net/mamoe/mirai/contact/QQ.kt
View file @
114604f2
package
net.mamoe.mirai.contact
package
net.mamoe.mirai.contact
import
net.mamoe.mirai.
Rob
ot
import
net.mamoe.mirai.
B
ot
import
net.mamoe.mirai.message.Message
import
net.mamoe.mirai.message.Message
import
net.mamoe.mirai.message.defaults.At
import
net.mamoe.mirai.message.defaults.At
import
net.mamoe.mirai.message.defaults.MessageChain
import
net.mamoe.mirai.message.defaults.MessageChain
/**
/**
* QQ 账号.
* QQ 账号.
* 注意: 一个 [QQ] 实例并不是独立的, 它属于一个 [
Rob
ot].
* 注意: 一个 [QQ] 实例并不是独立的, 它属于一个 [
B
ot].
*
*
* Java 获取 qq 号: `qq.getNumber()`
* Java 获取 qq 号: `qq.getNumber()`
* Java 获取所属
robot: `qq.getRob
ot()`
* Java 获取所属
bot: `qq.getB
ot()`
*
*
* A QQ instance helps you to receive message from or send message to.
* A QQ instance helps you to receive message from or send message to.
* Notice that, one QQ instance belong to one [
Robot], that is, QQ instances from different [Rob
ot] are NOT the same.
* Notice that, one QQ instance belong to one [
Bot], that is, QQ instances from different [B
ot] are NOT the same.
*
*
* @author Him188moe
* @author Him188moe
*/
*/
class
QQ
(
robot
:
Robot
,
number
:
Long
)
:
Contact
(
ro
bot
,
number
)
{
class
QQ
(
bot
:
Bot
,
number
:
Long
)
:
Contact
(
bot
,
number
)
{
override
fun
sendMessage
(
message
:
MessageChain
)
{
override
fun
sendMessage
(
message
:
MessageChain
)
{
ro
bot
.
network
.
messageHandler
.
sendFriendMessage
(
this
,
message
)
bot
.
network
.
messageHandler
.
sendFriendMessage
(
this
,
message
)
}
}
override
fun
sendXMLMessage
(
message
:
String
)
{
override
fun
sendXMLMessage
(
message
:
String
)
{
...
...
mirai-core/src/main/java/net/mamoe/mirai/event/events/
robot/Rob
otEvent.java
→
mirai-core/src/main/java/net/mamoe/mirai/event/events/
bot/B
otEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.
ro
bot
;
package
net.mamoe.mirai.event.events.bot
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.event.MiraiEvent
;
import
net.mamoe.mirai.event.MiraiEvent
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
import
java.util.Objects
;
import
java.util.Objects
;
public
abstract
class
Rob
otEvent
extends
MiraiEvent
{
public
abstract
class
B
otEvent
extends
MiraiEvent
{
private
final
Robot
ro
bot
;
private
final
Bot
bot
;
public
RobotEvent
(
@NotNull
Robot
ro
bot
)
{
public
BotEvent
(
@NotNull
Bot
bot
)
{
this
.
robot
=
Objects
.
requireNonNull
(
ro
bot
);
this
.
bot
=
Objects
.
requireNonNull
(
bot
);
}
}
@NotNull
@NotNull
public
Robot
getRob
ot
()
{
public
Bot
getB
ot
()
{
return
ro
bot
;
return
bot
;
}
}
}
}
mirai-core/src/main/java/net/mamoe/mirai/event/events/
robot/Rob
otEvents.kt
→
mirai-core/src/main/java/net/mamoe/mirai/event/events/
bot/B
otEvents.kt
View file @
114604f2
package
net.mamoe.mirai.event.events.
ro
bot
package
net.mamoe.mirai.event.events.bot
import
net.mamoe.mirai.
Rob
ot
import
net.mamoe.mirai.
B
ot
import
net.mamoe.mirai.event.MiraiEvent
import
net.mamoe.mirai.event.MiraiEvent
/**
/**
* @author Him188moe
* @author Him188moe
*/
*/
class
RobotLoginEvent
(
val
robot
:
Rob
ot
)
:
MiraiEvent
()
class
BotLoginEvent
(
val
bot
:
B
ot
)
:
MiraiEvent
()
class
RobotLogoutEvent
(
val
robot
:
Rob
ot
)
:
MiraiEvent
()
class
BotLogoutEvent
(
val
bot
:
B
ot
)
:
MiraiEvent
()
class
RobotMessageReceivedEvent
(
val
robot
:
Rob
ot
,
val
type
:
Type
,
val
message
:
String
)
:
MiraiEvent
()
{
class
BotMessageReceivedEvent
(
val
bot
:
B
ot
,
val
type
:
Type
,
val
message
:
String
)
:
MiraiEvent
()
{
enum
class
Type
{
enum
class
Type
{
FRIEND
,
FRIEND
,
GROUP
GROUP
...
...
mirai-core/src/main/java/net/mamoe/mirai/event/events/bot/BotLoginSucceedEvent.java
0 → 100644
View file @
114604f2
package
net.mamoe.mirai.event.events.bot
;
import
net.mamoe.mirai.Bot
;
public
final
class
BotLoginSucceedEvent
extends
BotEvent
{
public
BotLoginSucceedEvent
(
Bot
bot
)
{
super
(
bot
);
}
}
mirai-core/src/main/java/net/mamoe/mirai/event/events/group/GroupEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.group
;
package
net.mamoe.mirai.event.events.group
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.contact.Group
;
import
net.mamoe.mirai.contact.Group
;
import
net.mamoe.mirai.event.events.
robot.Rob
otEvent
;
import
net.mamoe.mirai.event.events.
bot.B
otEvent
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
/**
/**
* @author Him188moe
* @author Him188moe
*/
*/
public
abstract
class
GroupEvent
extends
Rob
otEvent
{
public
abstract
class
GroupEvent
extends
B
otEvent
{
private
final
Group
group
;
private
final
Group
group
;
public
GroupEvent
(
Robot
ro
bot
,
Group
group
)
{
public
GroupEvent
(
Bot
bot
,
Group
group
)
{
super
(
ro
bot
);
super
(
bot
);
this
.
group
=
group
;
this
.
group
=
group
;
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/event/events/group/GroupMessageEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.group
;
package
net.mamoe.mirai.event.events.group
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.contact.Group
;
import
net.mamoe.mirai.contact.Group
;
import
net.mamoe.mirai.contact.QQ
;
import
net.mamoe.mirai.contact.QQ
;
import
net.mamoe.mirai.message.defaults.MessageChain
;
import
net.mamoe.mirai.message.defaults.MessageChain
;
...
@@ -14,8 +14,8 @@ public final class GroupMessageEvent extends GroupEvent {
...
@@ -14,8 +14,8 @@ public final class GroupMessageEvent extends GroupEvent {
private
final
MessageChain
messageChain
;
private
final
MessageChain
messageChain
;
private
final
String
messageString
;
private
final
String
messageString
;
public
GroupMessageEvent
(
@NotNull
Robot
ro
bot
,
@NotNull
Group
group
,
@NotNull
QQ
sender
,
@NotNull
MessageChain
messageChain
)
{
public
GroupMessageEvent
(
@NotNull
Bot
bot
,
@NotNull
Group
group
,
@NotNull
QQ
sender
,
@NotNull
MessageChain
messageChain
)
{
super
(
ro
bot
,
group
);
super
(
bot
,
group
);
this
.
sender
=
sender
;
this
.
sender
=
sender
;
this
.
messageChain
=
messageChain
;
this
.
messageChain
=
messageChain
;
this
.
messageString
=
messageChain
.
toString
();
this
.
messageString
=
messageChain
.
toString
();
...
...
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/BeforePacketSendEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.network
;
package
net.mamoe.mirai.event.events.network
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.event.Cancellable
;
import
net.mamoe.mirai.event.Cancellable
;
import
net.mamoe.mirai.network.packet.ClientPacket
;
import
net.mamoe.mirai.network.packet.ClientPacket
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
...
@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
...
@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
* @author Him188moe
* @author Him188moe
*/
*/
public
final
class
BeforePacketSendEvent
extends
ClientPacketEvent
implements
Cancellable
{
public
final
class
BeforePacketSendEvent
extends
ClientPacketEvent
implements
Cancellable
{
public
BeforePacketSendEvent
(
@NotNull
Robot
ro
bot
,
@NotNull
ClientPacket
packet
)
{
public
BeforePacketSendEvent
(
@NotNull
Bot
bot
,
@NotNull
ClientPacket
packet
)
{
super
(
ro
bot
,
packet
);
super
(
bot
,
packet
);
}
}
}
}
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/ClientPacketEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.network
;
package
net.mamoe.mirai.event.events.network
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.network.packet.ClientPacket
;
import
net.mamoe.mirai.network.packet.ClientPacket
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
...
@@ -8,8 +8,8 @@ import org.jetbrains.annotations.NotNull;
...
@@ -8,8 +8,8 @@ import org.jetbrains.annotations.NotNull;
* @author Him188moe
* @author Him188moe
*/
*/
public
abstract
class
ClientPacketEvent
extends
PacketEvent
{
public
abstract
class
ClientPacketEvent
extends
PacketEvent
{
public
ClientPacketEvent
(
@NotNull
Robot
ro
bot
,
@NotNull
ClientPacket
packet
)
{
public
ClientPacketEvent
(
@NotNull
Bot
bot
,
@NotNull
ClientPacket
packet
)
{
super
(
ro
bot
,
packet
);
super
(
bot
,
packet
);
}
}
@Override
@Override
...
...
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/PacketEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.network
;
package
net.mamoe.mirai.event.events.network
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.event.events.
robot.Rob
otEvent
;
import
net.mamoe.mirai.event.events.
bot.B
otEvent
;
import
net.mamoe.mirai.network.packet.Packet
;
import
net.mamoe.mirai.network.packet.Packet
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
...
@@ -10,11 +10,11 @@ import java.util.Objects;
...
@@ -10,11 +10,11 @@ import java.util.Objects;
/**
/**
* @author Him188moe
* @author Him188moe
*/
*/
public
abstract
class
PacketEvent
extends
Rob
otEvent
{
public
abstract
class
PacketEvent
extends
B
otEvent
{
private
final
Packet
packet
;
private
final
Packet
packet
;
public
PacketEvent
(
@NotNull
Robot
ro
bot
,
@NotNull
Packet
packet
)
{
public
PacketEvent
(
@NotNull
Bot
bot
,
@NotNull
Packet
packet
)
{
super
(
ro
bot
);
super
(
bot
);
this
.
packet
=
Objects
.
requireNonNull
(
packet
);
this
.
packet
=
Objects
.
requireNonNull
(
packet
);
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/PacketSentEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.network
;
package
net.mamoe.mirai.event.events.network
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.network.packet.ClientPacket
;
import
net.mamoe.mirai.network.packet.ClientPacket
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
...
@@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull;
...
@@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull;
* @author Him188moe
* @author Him188moe
*/
*/
public
final
class
PacketSentEvent
extends
ClientPacketEvent
{
public
final
class
PacketSentEvent
extends
ClientPacketEvent
{
public
PacketSentEvent
(
@NotNull
Robot
ro
bot
,
@NotNull
ClientPacket
packet
)
{
public
PacketSentEvent
(
@NotNull
Bot
bot
,
@NotNull
ClientPacket
packet
)
{
super
(
ro
bot
,
packet
);
super
(
bot
,
packet
);
}
}
}
}
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/ServerPacketEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.network
;
package
net.mamoe.mirai.event.events.network
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.network.packet.ServerPacket
;
import
net.mamoe.mirai.network.packet.ServerPacket
;
/**
/**
* @author Him188moe
* @author Him188moe
*/
*/
public
abstract
class
ServerPacketEvent
extends
PacketEvent
{
public
abstract
class
ServerPacketEvent
extends
PacketEvent
{
public
ServerPacketEvent
(
Robot
ro
bot
,
ServerPacket
packet
)
{
public
ServerPacketEvent
(
Bot
bot
,
ServerPacket
packet
)
{
super
(
ro
bot
,
packet
);
super
(
bot
,
packet
);
}
}
@Override
@Override
...
...
mirai-core/src/main/java/net/mamoe/mirai/event/events/network/ServerPacketReceivedEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.network
;
package
net.mamoe.mirai.event.events.network
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.event.Cancellable
;
import
net.mamoe.mirai.event.Cancellable
;
import
net.mamoe.mirai.network.packet.ServerPacket
;
import
net.mamoe.mirai.network.packet.ServerPacket
;
import
net.mamoe.mirai.network.packet.ServerVerificationCodePacket
;
import
net.mamoe.mirai.network.packet.ServerVerificationCodePacket
;
...
@@ -12,7 +12,7 @@ import net.mamoe.mirai.network.packet.ServerVerificationCodePacket;
...
@@ -12,7 +12,7 @@ import net.mamoe.mirai.network.packet.ServerVerificationCodePacket;
* @author Him188moe
* @author Him188moe
*/
*/
public
final
class
ServerPacketReceivedEvent
extends
ServerPacketEvent
implements
Cancellable
{
public
final
class
ServerPacketReceivedEvent
extends
ServerPacketEvent
implements
Cancellable
{
public
ServerPacketReceivedEvent
(
Robot
ro
bot
,
ServerPacket
packet
)
{
public
ServerPacketReceivedEvent
(
Bot
bot
,
ServerPacket
packet
)
{
super
(
ro
bot
,
packet
);
super
(
bot
,
packet
);
}
}
}
}
mirai-core/src/main/java/net/mamoe/mirai/event/events/qq/FriendEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.qq
;
package
net.mamoe.mirai.event.events.qq
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.contact.QQ
;
import
net.mamoe.mirai.contact.QQ
;
import
net.mamoe.mirai.event.events.
robot.Rob
otEvent
;
import
net.mamoe.mirai.event.events.
bot.B
otEvent
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
import
java.util.Objects
;
import
java.util.Objects
;
...
@@ -10,11 +10,11 @@ import java.util.Objects;
...
@@ -10,11 +10,11 @@ import java.util.Objects;
/**
/**
* @author Him188moe
* @author Him188moe
*/
*/
public
abstract
class
FriendEvent
extends
Rob
otEvent
{
public
abstract
class
FriendEvent
extends
B
otEvent
{
private
final
QQ
qq
;
private
final
QQ
qq
;
public
FriendEvent
(
@NotNull
Robot
ro
bot
,
@NotNull
QQ
qq
)
{
public
FriendEvent
(
@NotNull
Bot
bot
,
@NotNull
QQ
qq
)
{
super
(
ro
bot
);
super
(
bot
);
this
.
qq
=
Objects
.
requireNonNull
(
qq
);
this
.
qq
=
Objects
.
requireNonNull
(
qq
);
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/event/events/qq/FriendMessageEvent.java
View file @
114604f2
package
net.mamoe.mirai.event.events.qq
;
package
net.mamoe.mirai.event.events.qq
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
import
net.mamoe.mirai.contact.QQ
;
import
net.mamoe.mirai.contact.QQ
;
import
net.mamoe.mirai.message.defaults.MessageChain
;
import
net.mamoe.mirai.message.defaults.MessageChain
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.NotNull
;
...
@@ -13,8 +13,8 @@ import java.util.Objects;
...
@@ -13,8 +13,8 @@ import java.util.Objects;
public
final
class
FriendMessageEvent
extends
FriendEvent
{
public
final
class
FriendMessageEvent
extends
FriendEvent
{
private
final
MessageChain
messageChain
;
private
final
MessageChain
messageChain
;
public
FriendMessageEvent
(
@NotNull
Robot
ro
bot
,
@NotNull
QQ
sender
,
@NotNull
MessageChain
messageChain
)
{
public
FriendMessageEvent
(
@NotNull
Bot
bot
,
@NotNull
QQ
sender
,
@NotNull
MessageChain
messageChain
)
{
super
(
ro
bot
,
sender
);
super
(
bot
,
sender
);
this
.
messageChain
=
Objects
.
requireNonNull
(
messageChain
);
this
.
messageChain
=
Objects
.
requireNonNull
(
messageChain
);
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/event/events/robot/RobotLoginSucceedEvent.java
deleted
100644 → 0
View file @
1184de5b
package
net.mamoe.mirai.event.events.robot
;
import
net.mamoe.mirai.Robot
;
public
final
class
RobotLoginSucceedEvent
extends
RobotEvent
{
public
RobotLoginSucceedEvent
(
Robot
robot
)
{
super
(
robot
);
}
}
mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt
View file @
114604f2
This diff is collapsed.
Click to expand it.
mirai-core/src/main/java/net/mamoe/mirai/network/packet/action/AddContact.kt
View file @
114604f2
...
@@ -15,7 +15,7 @@ import java.util.*
...
@@ -15,7 +15,7 @@ import java.util.*
@PacketId
(
"00 A7"
)
@PacketId
(
"00 A7"
)
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
class
ClientCanAddFriendPacket
(
class
ClientCanAddFriendPacket
(
val
ro
bot
:
Long
,
val
bot
:
Long
,
val
qq
:
Long
,
val
qq
:
Long
,
val
sessionKey
:
ByteArray
val
sessionKey
:
ByteArray
)
:
ClientPacket
()
{
)
:
ClientPacket
()
{
...
@@ -28,7 +28,7 @@ class ClientCanAddFriendPacket(
...
@@ -28,7 +28,7 @@ class ClientCanAddFriendPacket(
override
fun
encode
()
{
override
fun
encode
()
{
this
.
write
(
packetIdLast
)
//id, 2bytes
this
.
write
(
packetIdLast
)
//id, 2bytes
this
.
writeQQ
(
ro
bot
)
this
.
writeQQ
(
bot
)
this
.
writeHex
(
Protocol
.
fixVer2
)
this
.
writeHex
(
Protocol
.
fixVer2
)
this
.
encryptAndWrite
(
sessionKey
)
{
this
.
encryptAndWrite
(
sessionKey
)
{
it
.
writeQQ
(
qq
)
it
.
writeQQ
(
qq
)
...
@@ -79,7 +79,7 @@ class ServerCanAddFriendResponsePacket(input: DataInputStream) : ServerPacket(in
...
@@ -79,7 +79,7 @@ class ServerCanAddFriendResponsePacket(input: DataInputStream) : ServerPacket(in
@PacketId
(
"00 AE"
)
@PacketId
(
"00 AE"
)
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
class
ClientAddFriendPacket
(
class
ClientAddFriendPacket
(
val
ro
bot
:
Long
,
val
bot
:
Long
,
val
qq
:
Long
,
val
qq
:
Long
,
val
sessionKey
:
ByteArray
val
sessionKey
:
ByteArray
)
:
ClientPacket
()
{
)
:
ClientPacket
()
{
...
@@ -92,7 +92,7 @@ class ClientAddFriendPacket(
...
@@ -92,7 +92,7 @@ class ClientAddFriendPacket(
override
fun
encode
()
{
override
fun
encode
()
{
this
.
write
(
packetIdLast
)
//id, 2bytes
this
.
write
(
packetIdLast
)
//id, 2bytes
this
.
writeQQ
(
ro
bot
)
this
.
writeQQ
(
bot
)
this
.
writeHex
(
Protocol
.
fixVer2
)
this
.
writeHex
(
Protocol
.
fixVer2
)
this
.
encryptAndWrite
(
sessionKey
)
{
this
.
encryptAndWrite
(
sessionKey
)
{
it
.
writeHex
(
"01 00 01"
)
it
.
writeHex
(
"01 00 01"
)
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/action/ClientSendFriendMessagePacket.kt
View file @
114604f2
...
@@ -12,22 +12,22 @@ import java.io.DataInputStream
...
@@ -12,22 +12,22 @@ import java.io.DataInputStream
@PacketId
(
"00 CD"
)
@PacketId
(
"00 CD"
)
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
class
ClientSendFriendMessagePacket
(
class
ClientSendFriendMessagePacket
(
private
val
ro
botQQ
:
Long
,
private
val
botQQ
:
Long
,
private
val
targetQQ
:
Long
,
private
val
targetQQ
:
Long
,
private
val
sessionKey
:
ByteArray
,
private
val
sessionKey
:
ByteArray
,
private
val
message
:
MessageChain
private
val
message
:
MessageChain
)
:
ClientPacket
()
{
)
:
ClientPacket
()
{
override
fun
encode
()
{
override
fun
encode
()
{
this
.
writeRandom
(
2
)
//part of packet id
this
.
writeRandom
(
2
)
//part of packet id
this
.
writeQQ
(
ro
botQQ
)
this
.
writeQQ
(
botQQ
)
this
.
writeHex
(
Protocol
.
fixVer2
)
this
.
writeHex
(
Protocol
.
fixVer2
)
this
.
encryptAndWrite
(
sessionKey
)
{
this
.
encryptAndWrite
(
sessionKey
)
{
it
.
writeQQ
(
ro
botQQ
)
it
.
writeQQ
(
botQQ
)
it
.
writeQQ
(
targetQQ
)
it
.
writeQQ
(
targetQQ
)
it
.
writeHex
(
"00 00 00 08 00 01 00 04 00 00 00 00"
)
it
.
writeHex
(
"00 00 00 08 00 01 00 04 00 00 00 00"
)
it
.
writeHex
(
"37 0F"
)
it
.
writeHex
(
"37 0F"
)
it
.
writeQQ
(
ro
botQQ
)
it
.
writeQQ
(
botQQ
)
it
.
writeQQ
(
targetQQ
)
it
.
writeQQ
(
targetQQ
)
it
.
write
(
md5
(
lazyEncode
{
md5Key
->
md5Key
.
writeQQ
(
targetQQ
);
md5Key
.
write
(
sessionKey
)
}))
it
.
write
(
md5
(
lazyEncode
{
md5Key
->
md5Key
.
writeQQ
(
targetQQ
);
md5Key
.
write
(
sessionKey
)
}))
it
.
writeHex
(
"00 0B"
)
it
.
writeHex
(
"00 0B"
)
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/action/ClientSendGroupMessagePacket.kt
View file @
114604f2
...
@@ -12,13 +12,13 @@ import java.io.DataInputStream
...
@@ -12,13 +12,13 @@ import java.io.DataInputStream
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
class
ClientSendGroupMessagePacket
(
class
ClientSendGroupMessagePacket
(
private
val
groupId
:
Long
,
//不是 number
private
val
groupId
:
Long
,
//不是 number
private
val
ro
botQQ
:
Long
,
private
val
botQQ
:
Long
,
private
val
sessionKey
:
ByteArray
,
private
val
sessionKey
:
ByteArray
,
private
val
message
:
String
private
val
message
:
String
)
:
ClientPacket
()
{
)
:
ClientPacket
()
{
override
fun
encode
()
{
override
fun
encode
()
{
this
.
writeRandom
(
2
)
//part of packet id
this
.
writeRandom
(
2
)
//part of packet id
this
.
writeQQ
(
ro
botQQ
)
this
.
writeQQ
(
botQQ
)
this
.
writeHex
(
Protocol
.
fixVer2
)
this
.
writeHex
(
Protocol
.
fixVer2
)
this
.
encryptAndWrite
(
sessionKey
)
{
this
.
encryptAndWrite
(
sessionKey
)
{
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseKeyExchangePacket.kt
View file @
114604f2
...
@@ -39,7 +39,7 @@ class ServerLoginResponseKeyExchangePacket(input: DataInputStream, val flag: Fla
...
@@ -39,7 +39,7 @@ class ServerLoginResponseKeyExchangePacket(input: DataInputStream, val flag: Fla
Flag
.
OTHER
->
{
Flag
.
OTHER
->
{
//do nothing in this packet.
//do nothing in this packet.
//[this.token] will be set in [
Rob
otNetworkHandler]
//[this.token] will be set in [
B
otNetworkHandler]
//token
//token
}
}
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/plugin/MiraiPluginBase.java
View file @
114604f2
package
net.mamoe.mirai.plugin
;
package
net.mamoe.mirai.plugin
;
import
net.mamoe.mirai.
Rob
ot
;
import
net.mamoe.mirai.
B
ot
;
/**
/**
* 插件基类.
* 插件基类.
* <p>
* <p>
* 插件属于整个 Mirai, 而不是属于单个 {@link
Rob
ot}.
* 插件属于整个 Mirai, 而不是属于单个 {@link
B
ot}.
*
*
* @see net.mamoe.mirai.event.MiraiEventManager
* @see net.mamoe.mirai.event.MiraiEventManager
* @see net.mamoe.mirai.event.MiraiEventManagerKt
* @see net.mamoe.mirai.event.MiraiEventManagerKt
...
...
mirai-core/src/main/java/net/mamoe/mirai/utils/MiraiLogger.kt
View file @
114604f2
package
net.mamoe.mirai.utils
package
net.mamoe.mirai.utils
import
net.mamoe.mirai.
Rob
ot
import
net.mamoe.mirai.
B
ot
import
java.text.SimpleDateFormat
import
java.text.SimpleDateFormat
import
java.util.*
import
java.util.*
...
@@ -36,27 +36,27 @@ object MiraiLogger {
...
@@ -36,27 +36,27 @@ object MiraiLogger {
}
}
}
}
infix
fun
Rob
ot
.
log
(
o
:
Any
?)
=
info
(
o
)
infix
fun
B
ot
.
log
(
o
:
Any
?)
=
info
(
o
)
infix
fun
Rob
ot
.
println
(
o
:
Any
?)
=
info
(
o
)
infix
fun
B
ot
.
println
(
o
:
Any
?)
=
info
(
o
)
infix
fun
Rob
ot
.
info
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
RESET
)
infix
fun
B
ot
.
info
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
RESET
)
infix
fun
Rob
ot
.
error
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
RED
)
infix
fun
B
ot
.
error
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
RED
)
infix
fun
Rob
ot
.
notice
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
LIGHT_BLUE
)
infix
fun
B
ot
.
notice
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
LIGHT_BLUE
)
infix
fun
Rob
ot
.
purple
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
PURPLE
)
infix
fun
B
ot
.
purple
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
PURPLE
)
infix
fun
Rob
ot
.
cyanL
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
LIGHT_CYAN
)
infix
fun
B
ot
.
cyanL
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
LIGHT_CYAN
)
infix
fun
Rob
ot
.
success
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
GREEN
)
infix
fun
B
ot
.
success
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
GREEN
)
infix
fun
Rob
ot
.
debug
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
YELLOW
)
infix
fun
B
ot
.
debug
(
o
:
Any
?)
=
print
(
this
,
o
.
toString
(),
LoggerTextFormat
.
YELLOW
)
@Synchronized
@Synchronized
private
fun
print
(
robot
:
Rob
ot
,
value
:
String
?,
color
:
LoggerTextFormat
=
LoggerTextFormat
.
WHITE
)
{
private
fun
print
(
bot
:
B
ot
,
value
:
String
?,
color
:
LoggerTextFormat
=
LoggerTextFormat
.
WHITE
)
{
val
s
=
SimpleDateFormat
(
"MM-dd HH:mm:ss"
).
format
(
Date
())
val
s
=
SimpleDateFormat
(
"MM-dd HH:mm:ss"
).
format
(
Date
())
kotlin
.
io
.
println
(
"$color[Mirai] $s #R${
ro
bot.id}: $value"
)
kotlin
.
io
.
println
(
"$color[Mirai] $s #R${bot.id}: $value"
)
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/utils/RobotAccount.java
View file @
114604f2
...
@@ -6,11 +6,11 @@ import lombok.Data;
...
@@ -6,11 +6,11 @@ import lombok.Data;
* @author Him188moe
* @author Him188moe
*/
*/
@Data
@Data
public
final
class
Rob
otAccount
{
public
final
class
B
otAccount
{
public
final
long
qqNumber
;
public
final
long
qqNumber
;
public
final
String
password
;
public
final
String
password
;
public
Rob
otAccount
(
long
qqNumber
,
String
password
)
{
public
B
otAccount
(
long
qqNumber
,
String
password
)
{
this
.
qqNumber
=
qqNumber
;
this
.
qqNumber
=
qqNumber
;
this
.
password
=
password
;
this
.
password
=
password
;
}
}
...
...
mirai-core/src/test/java/BadQQFilter.kt
View file @
114604f2
import
kotlinx.coroutines.GlobalScope
import
kotlinx.coroutines.GlobalScope
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
net.mamoe.mirai.
Rob
ot
import
net.mamoe.mirai.
B
ot
import
net.mamoe.mirai.network.packet.login.LoginState
import
net.mamoe.mirai.network.packet.login.LoginState
import
net.mamoe.mirai.utils.
Rob
otAccount
import
net.mamoe.mirai.utils.
B
otAccount
import
java.util.*
import
java.util.*
/**
/**
...
@@ -64,21 +64,21 @@ val qqList = "2535777366----abc123456\n" +
...
@@ -64,21 +64,21 @@ val qqList = "2535777366----abc123456\n" +
fun
main
()
{
fun
main
()
{
val
good
RobotList
=
Collections
.
synchronizedList
(
mutableListOf
<
Rob
ot
>())
val
good
BotList
=
Collections
.
synchronizedList
(
mutableListOf
<
B
ot
>())
qqList
.
split
(
"\n"
).
forEach
{
qqList
.
split
(
"\n"
).
forEach
{
GlobalScope
.
launch
{
GlobalScope
.
launch
{
val
strings
=
it
.
split
(
"----"
)
val
strings
=
it
.
split
(
"----"
)
val
robot
=
Robot
(
Rob
otAccount
(
strings
[
0
].
toLong
(),
strings
[
1
].
let
{
password
->
val
bot
=
Bot
(
B
otAccount
(
strings
[
0
].
toLong
(),
strings
[
1
].
let
{
password
->
if
(
password
.
endsWith
(
"."
))
{
if
(
password
.
endsWith
(
"."
))
{
return
@
let
password
.
substring
(
0
,
password
.
length
-
1
)
return
@
let
password
.
substring
(
0
,
password
.
length
-
1
)
}
}
return
@
let
password
return
@
let
password
}),
listOf
())
}),
listOf
())
ro
bot
.
network
.
tryLogin
().
whenComplete
{
state
,
_
->
bot
.
network
.
tryLogin
().
whenComplete
{
state
,
_
->
if
(!(
state
==
LoginState
.
BLOCKED
||
state
==
LoginState
.
DEVICE_LOCK
||
state
==
LoginState
.
WRONG_PASSWORD
))
{
if
(!(
state
==
LoginState
.
BLOCKED
||
state
==
LoginState
.
DEVICE_LOCK
||
state
==
LoginState
.
WRONG_PASSWORD
))
{
good
RobotList
.
add
(
ro
bot
)
good
BotList
.
add
(
bot
)
}
}
}
}
}
}
...
@@ -86,5 +86,5 @@ fun main() {
...
@@ -86,5 +86,5 @@ fun main() {
Thread
.
sleep
(
9
*
3000
)
Thread
.
sleep
(
9
*
3000
)
println
(
good
Rob
otList
.
joinToString
(
"\n"
)
{
it
.
account
.
qqNumber
.
toString
()
+
" "
+
it
.
account
.
password
})
println
(
good
B
otList
.
joinToString
(
"\n"
)
{
it
.
account
.
qqNumber
.
toString
()
+
" "
+
it
.
account
.
password
})
}
}
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