Commit 7efcdf5a authored by ryoii's avatar ryoii

Merge remote-tracking branch 'origin'

parents 830f7306 04da1800
......@@ -2,6 +2,14 @@
开发版本. 频繁更新, 不保证高稳定性
## `0.15.1` Unreleased
### mirai-core
- 统一异常处理: 所有群成员相关操作无权限时均抛出异常而不返回 `false`.
### mirai-core-qqandroid
- 初始化未完成时缓存接收的所有事件包 (#46)
## `0.15.0` 2020/2/14
### mirai-core
......
......@@ -438,14 +438,14 @@ class MessageSubscribersBuilder<T : MessagePacket<*, *>>(
*/
@MessageDsl
inline fun <reified M : Message> has(): ListeningFilter =
content { message.any { it::class == M::class } }
content { message.any { it is M } }
/**
* 如果消息内容包含 [M] 类型的 [Message], 就执行 [onEvent]
*/
@MessageDsl
inline fun <reified M : Message> has(crossinline onEvent: MessageListener<T>): Listener<T> =
content({ message.any { it::class == M::class } }, onEvent)
content({ message.any { it is M } }, onEvent)
/**
* 如果 [filter] 返回 `true`
......
......@@ -3,7 +3,47 @@
Mirai Java Apt
提供一些阻塞/异步/RxJava API 来让 Java 调用 Mirai 的挂起函数 API 更容易
提供 Utils 类来让 Java 调用 Mirai 的内联方法更容易
提供阻塞API 来让 Java 调用 Mirai 的 API 更容易
该模块暂未完成.
\ No newline at end of file
## 开始
```java
class Test{
public static void main(String[] args){
BlockingBot bot = BlockingBot.newInstance(123456, "");
bot.login();
bot.getFriendList().forEach(friend -> {
System.out.println(friend.getNick());
});
Events.subscribeAlways(GroupMessage.class, (GroupMessage message) -> {
final BlockingQQ sender = BlockingContacts.createBlocking(message.getSender());
sender.sendMessage("Hello");
});
Thread.sleep(999999999);
}
}
```
## 便捷开发
在 IntelliJ IDEA 或 Android Studio 中找到设置 `Editor -> General -> Postfix Completion`, 添加一个设置到 `Java` 分类中:
![](.README_images/ce3034e3.png)
Applicable expression types:
```
net.mamoe.mirai.contact.Contact
```
转换后表达式:
```
net.mamoe.mirai.japt.BlockingContacts.createBlocking($EXPR$)
```
效果:
![4SY8BC@J4ZKQM7OZ_~BC1I_1](.README_images/4SY8BC%40J4ZKQM%5D7OZ_~BC1I_1.png)
![722WEHTTXD6XFFH43](.README_images/722W%28E%24HTTX%7BD6XFFH%5D%5D%2443.png)
plugins {
kotlin("jvm")
java
`maven-publish`
id("com.jfrog.bintray") version "1.8.4-jetbrains-3" // DO NOT CHANGE THIS VERSION UNLESS YOU WANT TO WASTE YOUR TIME
}
apply(from = rootProject.file("gradle/publish.gradle"))
val kotlinVersion: String by rootProject.ext
val atomicFuVersion: String by rootProject.ext
val coroutinesVersion: String by rootProject.ext
......
package net.mamoe.mirai.japt;
import kotlin.text.StringsKt;
import net.mamoe.mirai.contact.MemberPermission;
import net.mamoe.mirai.contact.PermissionDeniedException;
import net.mamoe.mirai.event.events.MemberCardChangeEvent;
......@@ -40,7 +41,7 @@ public interface BlockingMember extends BlockingQQ {
@NotNull
default String getGroupCardOrNick() {
String nameCard = this.getNameCard();
if (!nameCard.isBlank()) {
if (!StringsKt.isBlank(nameCard)) {
return nameCard;
}
return this.getNick();
......
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