Commit 114604f2 authored by Him188moe's avatar Him188moe

Renamed `robot` to `bot`

parent 1184de5b
...@@ -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
- [ ] Robot - Actions(joining group, adding friend, etc.) - [ ] Bot - Actions(joining group, adding friend, etc.)
- [ ] Message Section **(Working on)** - [ ] Message Section **(Working on)**
- [ ] Contact - [ ] Contact
- [ ] UI - [ ] UI
......
...@@ -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 Robot} 由 2 个模块组成. * {@link Bot} 由 2 个模块组成.
* {@linkplain ContactSystem 联系人管理}: 可通过 {@link Robot#contacts} 访问 * {@linkplain ContactSystem 联系人管理}: 可通过 {@link Bot#contacts} 访问
* {@linkplain RobotNetworkHandler 网络处理器}: 可通过 {@link Robot#network} 访问 * {@linkplain BotNetworkHandler 网络处理器}: 可通过 {@link Bot#network} 访问
* <br> * <br>
* 另外地, 若你需要得到机器人的 QQ 账号, 请访问 {@link Robot#account} * 若你需要得到机器人的 QQ 账号, 请访问 {@link Bot#account}
* 若你需要得到服务器上所有机器人列表, 请访问 {@link Robot#instances} * 若你需要得到服务器上所有机器人列表, 请访问 {@link Bot#instances}
* *
* @author Him188moe * @author Him188moe
* @author NatrualHG * @author NatrualHG
* @see net.mamoe.mirai.contact.Contact * @see net.mamoe.mirai.contact.Contact
* *
* <p> * <p>
* Robot that is the base of the whole program. * Bot 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 RobotAccount account; public final BotAccount account;
public final ContactSystem contacts = new ContactSystem(); public final ContactSystem contacts = new ContactSystem();
public final RobotNetworkHandler network; public final BotNetworkHandler network;
@Override @Override
public String toString() { public String toString() {
return String.format("Robot{id=%d,qq=%d}", id, this.account.qqNumber); return String.format("Bot{id=%d,qq=%d}", id, this.account.qqNumber);
} }
/** /**
* Robot 联系人管理. * Bot 联系人管理.
* *
* @see Robot#contacts * @see Bot#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(Robot.this, qqNumber)); this.qqs.put(qqNumber, new QQ(Bot.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(Robot.this, groupNumber)); this.groups.put(groupNumber, new Group(Bot.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 Robot(MiraiConfigSection<Object> data) throws Throwable { public Bot(MiraiConfigSection<Object> data) throws Throwable {
this( this(
new RobotAccount( new BotAccount(
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 RobotAccount account, @NotNull List<String> owners) { public Bot(@NotNull BotAccount 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 RobotNetworkHandler(this); this.network = new BotNetworkHandler(this);
} }
......
...@@ -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 robotNetworkHandler"); 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 [Robot]s"); getLogger().info("Initializing [Bot]s");
try { try {
getAvailableRobot(); getAvailableBot();
} 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 [Robot] " + section.getString("account")); getLogger().info("Initializing [Bot] " + section.getString("account"));
try { try {
Robot robot = new Robot(section); Bot bot = new Bot(section);
var state = robot.network.tryLogin$mirai_core().get(); var state = bot.network.tryLogin$mirai_core().get();
//robot.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(robot); 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);
robot.close(); bot.close();
} }
// }).get(); // }).get();
} catch (Throwable e) { } catch (Throwable e) {
e.printStackTrace(); e.printStackTrace();
getLogger().error("Could not load QQ robots 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 getAvailableRobot() throws ExecutionException, InterruptedException { private Bot getAvailableBot() 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 RobotAccount(Long.parseLong(strings[0]), strings[1]), List.of()); var bot = new Bot(new BotAccount(Long.parseLong(strings[0]), strings[1]), List.of());
if (robot.network.tryLogin$mirai_core().get() == LoginState.SUCCESS) { if (bot.network.tryLogin$mirai_core().get() == LoginState.SUCCESS) {
MiraiLoggerKt.success(robot, "Login succeed"); MiraiLoggerKt.success(bot, "Login succeed");
return robot; return bot;
} }
} }
......
package net.mamoe.mirai.contact package net.mamoe.mirai.contact
import net.mamoe.mirai.Robot import net.mamoe.mirai.Bot
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 [Robot] instance only. * A contact is a [QQ] or a [Group] for one particular [Bot] instance only.
* *
* @param robot Owner [Robot] * @param bot Owner [Bot]
* @author Him188moe * @author Him188moe
*/ */
abstract class Contact internal constructor(val robot: Robot, val number: Long) { abstract class Contact internal constructor(val bot: Bot, val number: Long) {
/** /**
* Async * Async
*/ */
......
package net.mamoe.mirai.contact package net.mamoe.mirai.contact
import net.mamoe.mirai.Robot import net.mamoe.mirai.Bot
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.getRobot()` * Java 获取所属 bot: `group.getBot()`
* 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(robot, 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) {
robot.network.messageHandler.sendGroupMessage(this, message) bot.network.messageHandler.sendGroupMessage(this, message)
} }
override fun sendXMLMessage(message: String) { override fun sendXMLMessage(message: String) {
......
package net.mamoe.mirai.contact package net.mamoe.mirai.contact
import net.mamoe.mirai.Robot import net.mamoe.mirai.Bot
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] 实例并不是独立的, 它属于一个 [Robot]. * 注意: 一个 [QQ] 实例并不是独立的, 它属于一个 [Bot].
* *
* Java 获取 qq 号: `qq.getNumber()` * Java 获取 qq 号: `qq.getNumber()`
* Java 获取所属 robot: `qq.getRobot()` * Java 获取所属 bot: `qq.getBot()`
* *
* 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 [Robot] are NOT the same. * Notice that, one QQ instance belong to one [Bot], that is, QQ instances from different [Bot] are NOT the same.
* *
* @author Him188moe * @author Him188moe
*/ */
class QQ(robot: Robot, number: Long) : Contact(robot, number) { class QQ(bot: Bot, number: Long) : Contact(bot, number) {
override fun sendMessage(message: MessageChain) { override fun sendMessage(message: MessageChain) {
robot.network.messageHandler.sendFriendMessage(this, message) bot.network.messageHandler.sendFriendMessage(this, message)
} }
override fun sendXMLMessage(message: String) { override fun sendXMLMessage(message: String) {
......
package net.mamoe.mirai.event.events.robot; package net.mamoe.mirai.event.events.bot;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
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 RobotEvent extends MiraiEvent { public abstract class BotEvent extends MiraiEvent {
private final Robot robot; private final Bot bot;
public RobotEvent(@NotNull Robot robot) { public BotEvent(@NotNull Bot bot) {
this.robot = Objects.requireNonNull(robot); this.bot = Objects.requireNonNull(bot);
} }
@NotNull @NotNull
public Robot getRobot() { public Bot getBot() {
return robot; return bot;
} }
} }
package net.mamoe.mirai.event.events.robot package net.mamoe.mirai.event.events.bot
import net.mamoe.mirai.Robot import net.mamoe.mirai.Bot
import net.mamoe.mirai.event.MiraiEvent import net.mamoe.mirai.event.MiraiEvent
/** /**
* @author Him188moe * @author Him188moe
*/ */
class RobotLoginEvent(val robot: Robot) : MiraiEvent() class BotLoginEvent(val bot: Bot) : MiraiEvent()
class RobotLogoutEvent(val robot: Robot) : MiraiEvent() class BotLogoutEvent(val bot: Bot) : MiraiEvent()
class RobotMessageReceivedEvent(val robot: Robot, val type: Type, val message: String) : MiraiEvent() { class BotMessageReceivedEvent(val bot: Bot, val type: Type, val message: String) : MiraiEvent() {
enum class Type { enum class Type {
FRIEND, FRIEND,
GROUP GROUP
......
package net.mamoe.mirai.event.events.bot;
import net.mamoe.mirai.Bot;
public final class BotLoginSucceedEvent extends BotEvent {
public BotLoginSucceedEvent(Bot bot) {
super(bot);
}
}
package net.mamoe.mirai.event.events.group; package net.mamoe.mirai.event.events.group;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
import net.mamoe.mirai.contact.Group; import net.mamoe.mirai.contact.Group;
import net.mamoe.mirai.event.events.robot.RobotEvent; import net.mamoe.mirai.event.events.bot.BotEvent;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* @author Him188moe * @author Him188moe
*/ */
public abstract class GroupEvent extends RobotEvent { public abstract class GroupEvent extends BotEvent {
private final Group group; private final Group group;
public GroupEvent(Robot robot, Group group) { public GroupEvent(Bot bot, Group group) {
super(robot); super(bot);
this.group = group; this.group = group;
} }
......
package net.mamoe.mirai.event.events.group; package net.mamoe.mirai.event.events.group;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
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 robot, @NotNull Group group, @NotNull QQ sender, @NotNull MessageChain messageChain) { public GroupMessageEvent(@NotNull Bot bot, @NotNull Group group, @NotNull QQ sender, @NotNull MessageChain messageChain) {
super(robot, group); super(bot, group);
this.sender = sender; this.sender = sender;
this.messageChain = messageChain; this.messageChain = messageChain;
this.messageString = messageChain.toString(); this.messageString = messageChain.toString();
......
package net.mamoe.mirai.event.events.network; package net.mamoe.mirai.event.events.network;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
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 robot, @NotNull ClientPacket packet) { public BeforePacketSendEvent(@NotNull Bot bot, @NotNull ClientPacket packet) {
super(robot, packet); super(bot, packet);
} }
} }
package net.mamoe.mirai.event.events.network; package net.mamoe.mirai.event.events.network;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
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 robot, @NotNull ClientPacket packet) { public ClientPacketEvent(@NotNull Bot bot, @NotNull ClientPacket packet) {
super(robot, packet); super(bot, packet);
} }
@Override @Override
......
package net.mamoe.mirai.event.events.network; package net.mamoe.mirai.event.events.network;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
import net.mamoe.mirai.event.events.robot.RobotEvent; import net.mamoe.mirai.event.events.bot.BotEvent;
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 RobotEvent { public abstract class PacketEvent extends BotEvent {
private final Packet packet; private final Packet packet;
public PacketEvent(@NotNull Robot robot, @NotNull Packet packet) { public PacketEvent(@NotNull Bot bot, @NotNull Packet packet) {
super(robot); super(bot);
this.packet = Objects.requireNonNull(packet); this.packet = Objects.requireNonNull(packet);
} }
......
package net.mamoe.mirai.event.events.network; package net.mamoe.mirai.event.events.network;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
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 robot, @NotNull ClientPacket packet) { public PacketSentEvent(@NotNull Bot bot, @NotNull ClientPacket packet) {
super(robot, packet); super(bot, packet);
} }
} }
package net.mamoe.mirai.event.events.network; package net.mamoe.mirai.event.events.network;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
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 robot, ServerPacket packet) { public ServerPacketEvent(Bot bot, ServerPacket packet) {
super(robot, packet); super(bot, packet);
} }
@Override @Override
......
package net.mamoe.mirai.event.events.network; package net.mamoe.mirai.event.events.network;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
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 robot, ServerPacket packet) { public ServerPacketReceivedEvent(Bot bot, ServerPacket packet) {
super(robot, packet); super(bot, packet);
} }
} }
package net.mamoe.mirai.event.events.qq; package net.mamoe.mirai.event.events.qq;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
import net.mamoe.mirai.contact.QQ; import net.mamoe.mirai.contact.QQ;
import net.mamoe.mirai.event.events.robot.RobotEvent; import net.mamoe.mirai.event.events.bot.BotEvent;
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 RobotEvent { public abstract class FriendEvent extends BotEvent {
private final QQ qq; private final QQ qq;
public FriendEvent(@NotNull Robot robot, @NotNull QQ qq) { public FriendEvent(@NotNull Bot bot, @NotNull QQ qq) {
super(robot); super(bot);
this.qq = Objects.requireNonNull(qq); this.qq = Objects.requireNonNull(qq);
} }
......
package net.mamoe.mirai.event.events.qq; package net.mamoe.mirai.event.events.qq;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
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 robot, @NotNull QQ sender, @NotNull MessageChain messageChain) { public FriendMessageEvent(@NotNull Bot bot, @NotNull QQ sender, @NotNull MessageChain messageChain) {
super(robot, sender); super(bot, sender);
this.messageChain = Objects.requireNonNull(messageChain); this.messageChain = Objects.requireNonNull(messageChain);
} }
......
package net.mamoe.mirai.event.events.robot;
import net.mamoe.mirai.Robot;
public final class RobotLoginSucceedEvent extends RobotEvent {
public RobotLoginSucceedEvent(Robot robot) {
super(robot);
}
}
...@@ -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 robot: 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(robot) 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 robot: 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(robot) 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")
......
...@@ -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 robotQQ: 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(robotQQ) this.writeQQ(botQQ)
this.writeHex(Protocol.fixVer2) this.writeHex(Protocol.fixVer2)
this.encryptAndWrite(sessionKey) { this.encryptAndWrite(sessionKey) {
it.writeQQ(robotQQ) 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(robotQQ) 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")
......
...@@ -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 robotQQ: 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(robotQQ) this.writeQQ(botQQ)
this.writeHex(Protocol.fixVer2) this.writeHex(Protocol.fixVer2)
this.encryptAndWrite(sessionKey) { this.encryptAndWrite(sessionKey) {
......
...@@ -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 [RobotNetworkHandler] //[this.token] will be set in [BotNetworkHandler]
//token //token
} }
} }
......
package net.mamoe.mirai.plugin; package net.mamoe.mirai.plugin;
import net.mamoe.mirai.Robot; import net.mamoe.mirai.Bot;
/** /**
* 插件基类. * 插件基类.
* <p> * <p>
* 插件属于整个 Mirai, 而不是属于单个 {@link Robot}. * 插件属于整个 Mirai, 而不是属于单个 {@link Bot}.
* *
* @see net.mamoe.mirai.event.MiraiEventManager * @see net.mamoe.mirai.event.MiraiEventManager
* @see net.mamoe.mirai.event.MiraiEventManagerKt * @see net.mamoe.mirai.event.MiraiEventManagerKt
......
package net.mamoe.mirai.utils package net.mamoe.mirai.utils
import net.mamoe.mirai.Robot import net.mamoe.mirai.Bot
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 Robot.log(o: Any?) = info(o) infix fun Bot.log(o: Any?) = info(o)
infix fun Robot.println(o: Any?) = info(o) infix fun Bot.println(o: Any?) = info(o)
infix fun Robot.info(o: Any?) = print(this, o.toString(), LoggerTextFormat.RESET) infix fun Bot.info(o: Any?) = print(this, o.toString(), LoggerTextFormat.RESET)
infix fun Robot.error(o: Any?) = print(this, o.toString(), LoggerTextFormat.RED) infix fun Bot.error(o: Any?) = print(this, o.toString(), LoggerTextFormat.RED)
infix fun Robot.notice(o: Any?) = print(this, o.toString(), LoggerTextFormat.LIGHT_BLUE) infix fun Bot.notice(o: Any?) = print(this, o.toString(), LoggerTextFormat.LIGHT_BLUE)
infix fun Robot.purple(o: Any?) = print(this, o.toString(), LoggerTextFormat.PURPLE) infix fun Bot.purple(o: Any?) = print(this, o.toString(), LoggerTextFormat.PURPLE)
infix fun Robot.cyanL(o: Any?) = print(this, o.toString(), LoggerTextFormat.LIGHT_CYAN) infix fun Bot.cyanL(o: Any?) = print(this, o.toString(), LoggerTextFormat.LIGHT_CYAN)
infix fun Robot.success(o: Any?) = print(this, o.toString(), LoggerTextFormat.GREEN) infix fun Bot.success(o: Any?) = print(this, o.toString(), LoggerTextFormat.GREEN)
infix fun Robot.debug(o: Any?) = print(this, o.toString(), LoggerTextFormat.YELLOW) infix fun Bot.debug(o: Any?) = print(this, o.toString(), LoggerTextFormat.YELLOW)
@Synchronized @Synchronized
private fun print(robot: Robot, value: String?, color: LoggerTextFormat = LoggerTextFormat.WHITE) { private fun print(bot: Bot, 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${robot.id}: $value") kotlin.io.println("$color[Mirai] $s #R${bot.id}: $value")
} }
......
...@@ -6,11 +6,11 @@ import lombok.Data; ...@@ -6,11 +6,11 @@ import lombok.Data;
* @author Him188moe * @author Him188moe
*/ */
@Data @Data
public final class RobotAccount { public final class BotAccount {
public final long qqNumber; public final long qqNumber;
public final String password; public final String password;
public RobotAccount(long qqNumber, String password) { public BotAccount(long qqNumber, String password) {
this.qqNumber = qqNumber; this.qqNumber = qqNumber;
this.password = password; this.password = password;
} }
......
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import net.mamoe.mirai.Robot import net.mamoe.mirai.Bot
import net.mamoe.mirai.network.packet.login.LoginState import net.mamoe.mirai.network.packet.login.LoginState
import net.mamoe.mirai.utils.RobotAccount import net.mamoe.mirai.utils.BotAccount
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 goodRobotList = Collections.synchronizedList(mutableListOf<Robot>()) val goodBotList = Collections.synchronizedList(mutableListOf<Bot>())
qqList.split("\n").forEach { qqList.split("\n").forEach {
GlobalScope.launch { GlobalScope.launch {
val strings = it.split("----") val strings = it.split("----")
val robot = Robot(RobotAccount(strings[0].toLong(), strings[1].let { password -> val bot = Bot(BotAccount(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())
robot.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)) {
goodRobotList.add(robot) goodBotList.add(bot)
} }
} }
} }
...@@ -86,5 +86,5 @@ fun main() { ...@@ -86,5 +86,5 @@ fun main() {
Thread.sleep(9 * 3000) Thread.sleep(9 * 3000)
println(goodRobotList.joinToString("\n") { it.account.qqNumber.toString() + " " + it.account.password }) println(goodBotList.joinToString("\n") { it.account.qqNumber.toString() + " " + it.account.password })
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment