此章节演示了一些api的用法
源码地址: https://gitee.com/lliioollcn/mirai-demo-java/blob/master/src/main/java/cn/lliiooll/demo/listener/DemoListener.java
## 发送消息
sendMessage()方法被用来发送消息。
括号内可以填一个String类型或者
net.mamoe.mirai.message.data.MessageChain
类型的参数。
如果你想异步发送一个消息,请使用sendMessageAsync()方法。
## 一些例子
~~~
sendMessage(new At(event.getSender()));// at发送者
sendMessage(event.getGroup().uploadImage(new File("图片文件")));// 发送图片
sendMessage(new Face(0));// 发送id为0的表情
sendMessage("这是一条消息");// 只发送一条文字消息
sendMessage(new PokeMessage("显示的名称", PokeMessage.Poke.getType(), PokeMessage.Poke.getId()));// 发送一个戳一戳
sendMessage(MessageUtils.flash(event.getGroup().uploadImage(new File("图片文件"))));// 发送一个闪照
sendMessage(
MessageUtils.newChain("测试消息")
.plus(event.getGroup().uploadImage(new File("图片文件")))
.plus(new Face(0))
);// 发送一个包含多个元素的消息
~~~
## 处理消息
~~~
注: 这里的MessageChain指MessageChain类型,他可以为event.getMessage()等。
// 转换为文字类型。例如表情等这样的特殊消息将会被转换为[表情]这样的文本
MessageChain.contentToString()
// 处理一个At
At at = MessageChain.firstOrNull(At.Key);
// 处理一个Image同理
Image image =MessageChain.firstOrNull(Image.Key);
// 处理多个特殊消息
MessageChain.forEach(message -> {
// 遍历一个消息包含的所有消息类型
if (message instanceof At) {
// 当类型为at一个人时
At _at = (At) message;// 因为已经判断过了,所以强转不会报错
// do something...
} else if (message instanceof Image) {
// 当类型为图片时
Image _image = (Image) message;
// do something...
} else if (message instanceof Face) {
// 当类型为表情时
Face face = (Face) message;
// do something...
} else if (message instanceof PokeMessage) {
// 当类型为戳一戳时
PokeMessage pokeMessage = (PokeMessage) message;
// do something...
} else if (message instanceof FlashImage) {
// 当类型为闪照时
FlashImage flashImage = (FlashImage) message;
// do something...
}
});
~~~