Commit 87532418 authored by Him188moe's avatar Him188moe

Merge remote-tracking branch 'origin/master'

parents 2038a8fa 1a4cc109
...@@ -7,30 +7,45 @@ ...@@ -7,30 +7,45 @@
协议来自网络上开源项目 协议来自网络上开源项目
一切开发旨在学习, 请勿用于非法用途 一切开发旨在学习, 请勿用于非法用途
### 代码结构 ## 抢先体验
Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持).
与插件相关性强(或其他在二次开发中容易接触)的部分尽量使用 Java 完成,
若使用 Kotlin, 我们会通过 Java interface 实现或 javadoc 帮助未接触过 Kotlin 的开发者.
即使你完全不了解 Kotlin, 你也可以正常开发.
### 抢先体验
现在你可以使用 Mirai 内置的一些测试qq号体验 Mirai, 但我们现在还不建议你使用自己的 qq 号登录 现在你可以使用 Mirai 内置的一些测试qq号体验 Mirai, 但我们现在还不建议你使用自己的 qq 号登录
1. Clone 1. Clone
2. Import as Maven project 2. Import as Maven project
3. Run [MiraiMain](mirai-core/src/main/java/net/mamoe/mirai/MiraiMain.java#L7) 3. Run [MiraiMain](mirai-core/src/main/java/net/mamoe/mirai/MiraiMain.java#L7)
#### 事件 Hook (Kotlin) ### 事件 Hook (Kotlin)
![event hook.png](.github/event%20hook.png) #### java:
```
MiraiEventHook.onEvent(FriendMessageEvent.class)
.handler(a -> {
if(a.getMessageString().equals("你好"))
a.getQQ().sendMessage("你好!");
})
.mountAlways();
```
#### kotlin:
```
FriendMessageEvent::class.hookAlways{
if(it.message() valueEquals "你好")
it.qq.sendMessage("你好!")
}
```
![AYWVE86P](.github/A%7DYWVE860U%28%25YQD%24R1GB1%5BP.png) ![AYWVE86P](.github/A%7DYWVE860U%28%25YQD%24R1GB1%5BP.png)
#### 图片测试 ### 图片测试
**现在可以接受图片消息**(并解析为消息链): **现在可以接受图片消息**(并解析为消息链):
![JsssF](.github/J%5DCE%29IK4BU08%28EO~UVLJ%7B%5BF.png) ![JsssF](.github/J%5DCE%29IK4BU08%28EO~UVLJ%7B%5BF.png)
![](.github/68f8fec9.png) ![](.github/68f8fec9.png)
不过我们还正在努力做发送图片 不过我们还正在努力做发送图片
### TODO ## 代码结构
Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持).
与插件相关性强(或其他在二次开发中容易接触)的部分尽量使用 Java 完成,
若使用 Kotlin, 我们会通过 Java interface 实现或 javadoc 帮助未接触过 Kotlin 的开发者.
即使你完全不了解 Kotlin, 你也可以正常开发.
# TODO
- [x] 事件(Event)模块 - [x] 事件(Event)模块
- [ ] 插件(Plugin)模块 **(Working on)** - [ ] 插件(Plugin)模块 **(Working on)**
- [x] Network - Touch - [x] Network - Touch
...@@ -48,11 +63,11 @@ Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持). ...@@ -48,11 +63,11 @@ Network部分使用 Kotlin 完成(因为kt有对 unsigned byte 的支持).
<br> <br>
## 使用方法 # 使用方法
### 要求 ## 要求
- Java 11 或更高 - Java 11 或更高
- Kotlin 1.3 或更高 - Kotlin 1.3 或更高
### 插件开发 ## 插件开发
``` text ``` text
to be continued to be continued
... ...
...@@ -65,11 +80,11 @@ A JAVA(+Kotlin) powered open-source project under GPL license<br> ...@@ -65,11 +80,11 @@ A JAVA(+Kotlin) powered open-source project under GPL license<br>
It use protocols from <i>TIM QQ</i>, that is, it won't be affected by the close of <i>Smart QQ</i><br> It use protocols from <i>TIM QQ</i>, that is, it won't be affected by the close of <i>Smart QQ</i><br>
The project is all for <b>learning proposes</b> and still in <b>developing stage</b><br> The project is all for <b>learning proposes</b> and still in <b>developing stage</b><br>
## Usage # Usage
### Requirements ## Requirements
- Java 11 or higher - Java 11 or higher
- Kotlin 1.3 or higher - Kotlin 1.3 or higher
### Plugin Development ## Plugin Development
``` text ``` text
to be continued to be continued
... ...
......
package net.mamoe.mirai; package net.mamoe.mirai;
import net.mamoe.mirai.event.MiraiEventHook;
import net.mamoe.mirai.event.MiraiEventManager;
import net.mamoe.mirai.event.events.qq.FriendMessageEvent;
/** /**
* @author Him188moe * @author Him188moe
*/ */
...@@ -11,4 +15,4 @@ public final class MiraiMain { ...@@ -11,4 +15,4 @@ public final class MiraiMain {
server = new MiraiServer(); server = new MiraiServer();
Runtime.getRuntime().addShutdownHook(new Thread(() -> server.shutdown())); Runtime.getRuntime().addShutdownHook(new Thread(() -> server.shutdown()));
} }
} }
\ No newline at end of file
...@@ -95,6 +95,11 @@ public class MiraiEventHook<T extends MiraiEvent> implements Closeable { ...@@ -95,6 +95,11 @@ public class MiraiEventHook<T extends MiraiEvent> implements Closeable {
MiraiEventManager.getInstance().registerHook(this); MiraiEventManager.getInstance().registerHook(this);
} }
public void mountAlways(){
if(this.handler == null)this.handler = a -> {};
MiraiEventManager.getInstance().hookAlways(this);
}
public void mountOnce(){ public void mountOnce(){
if(this.handler == null)this.handler = a -> {}; if(this.handler == null)this.handler = a -> {};
MiraiEventManager.getInstance().hookOnce(this); MiraiEventManager.getInstance().hookOnce(this);
......
...@@ -7,8 +7,8 @@ import java.io.IOException; ...@@ -7,8 +7,8 @@ import java.io.IOException;
public class ImageOutputTest { public class ImageOutputTest {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
BufferedImage image = ImageIO.read(new File((System.getProperty("user.dir") + "/VerificationCode.png").replace("//","/"))); BufferedImage image = ImageIO.read(new File((System.getProperty("user.dir") + "/mirai.png").replace("//","/")));
CharImageConverter charImageConvertor = new CharImageConverter(image,100); CharImageConverter charImageConvertor = new CharImageConverter(image,80);
System.out.println(charImageConvertor.call()); System.out.println(charImageConvertor.call());
} }
} }
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