Skip to main content

回复你的第一条消息

消息(Message)类型

框架实现了官方的几种消息类型

  • 纯图 MsgType.IMAGE_MSG
  • markdown消息 MsgType.MARKDOWN_MSG
  • 带@消息的md消息 MsgType.AT_MARKDOWN_MSG

在大部分情况下 AT_MARKDOWN_MSG 就已经满足日常使用需求,纯图是发送只有图片的消息,如果使用markdown嵌入图片,则会有消息边框影响美观

发送纯图消息

官方的接口要求将图片上传至CDN,但是SDK将其简化为创建一个Message对象并将本地路径传入对应参数即可

String imgUrl = "图片本地路径";
Message.Addition.ImageFileInfo imageFileInfo = Message.Addition.ImageFileInfo.builder()
.url(imgUrl)
.height(400)
.width(500)
.build();
Message.Addition addition = Message.Addition.builder()
.imageFilesInfo(List.of(imageFileInfo))
.build();
Message message = Message.create(commandDataInfo);
message.setMsg(imgUrl);
message.setMsgType(MsgType.IMAGE_MSG);
message.setAddition(addition.toJson());

本处都使用链式构造,imageFileInfo中的height,width是可选参数,可以保证图片的质量,不传图片可能会被官方进行压缩 其中imgUrl为本地图片路径,相对路径起点是 HHC 本体文件所在文件夹

注: commandDataInfo为监听到的消息(指令中会传回),其中包含了房间,频道,回复消息ID的指定

发送md消息

这里可以使用 MARKDOWN_MSGAT_MARKDOWN_MSG

    // 创建一个不带at的消息
Message msg = Message.create(commandDataInfo);
// 创建一个带at的回复消息
Message msg = Message.createAt(commandDataInfo);
// 添加消息
msg.appendMsg("hello world");
// 换行并添加消息
msg.appendLine("hello world");

注: 本处的消息支持md,可以自行学习md。此外根据官方文档,自行换行需要使用两个 \n\n\n

创建你的第一个指令

新建一个类,该类需实现(implements)HHCCommand接口,实现方法后应该如下:


public class TestCommand implements HHCCommand {
@Override
public boolean executeCommand(CommandDataInfo commandData) {
return false;
}

@Override
public String commandHelp() {
return "";
}
}

其中executeCommand是触发指令时执行的操作, 其返回值用于返回是否执行成功, 如果执行失败则会回复指令发送者指令帮助
而commandHelp会在executeCommand返回false被返回给指令发送人, 也会在系统指令 /指令帮助 展示

实现回复 hello

创建一个消息并使用 Manager.getHttpModuleManager().getHttpModule().sendMessage(msg) 发送消息,样例如下:

import cn.yudream.entity.Message;
import cn.yudream.manager.Manager;

public class TestCommand implements HHCCommand {
@Override
public boolean executeCommand(CommandDataInfo commandData) {
Message msg = Message.createAt(commandData);
msg.appendMsg("hello!");
Manager.getHttpModuleManager().getHttpModule().sendMessage(msg);
return true;
}

@Override
public String commandHelp() {
return "";
}
}

注册你的指令

在你的插件主类中的registerCommands部分注册指令


import cn.yudream.manager.Manager;
import cn.yudream.system.commands.TestCommand;

public void registerCommands() {
Manager.getCommandManager().registerCommand("/hello", new TestCommand());
}

registerCommand()方法的第一个参数为指令名称(必须带'/'!!!!!), 而且要对应官方填写的指令,而第二个参数需要实例化你写的指令类

到此,你就可以按照上节创建的运行配置进行调试你的插件了!