@kotori-bot/kotori-plugin-adapter-onebot
Version:
Adapter For Onebot 11
239 lines (238 loc) • 7.09 kB
JavaScript
/**
* @Package @kotori-bot/kotori-plugin-adapter-onebot
* @Version 2.1.1
* @Author Hotaru <me@hotaru.icu>
* @Copyright 2024-2025 Hotaru. All rights reserved.
* @License GPL-3.0
* @Link https://github.com/kotorijs/kotori
* @Date 2026/2/14 21:24:52
*/
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var api_exports = {};
__export(api_exports, {
OnebotApi: () => OnebotApi,
default: () => api_default
});
module.exports = __toCommonJS(api_exports);
var import_kotori_bot = require("kotori-bot");
class OnebotApi extends import_kotori_bot.Api {
adapter;
constructor(adapter) {
super(adapter);
this.adapter = adapter;
}
getSupportedEvents() {
return [
"on_message",
"on_message_delete",
"on_request",
"on_group_increase",
"on_group_decrease",
"on_group_ban",
"on_group_admin",
"onebot_poke"
];
}
async sendPrivateMsg(message, userId) {
return {
messageId: String(
(await this.adapter.call("send_private_msg", {
user_id: Number(userId),
message: this.adapter.elements.decode(message),
auto_escape: false
})).message_id
),
time: Date.now()
};
}
/**
* @description: 发送私聊消息
* @param message 要发送的内容
* @param groupId 群号
*/
async sendGroupMsg(message, groupId) {
return {
messageId: String(
(await this.adapter.call("send_group_msg", {
group_id: Number(groupId),
message: this.adapter.elements.decode(message),
auto_escape: false
})).message_id
),
time: Date.now()
};
}
/**
* @description: 撤回消息
* @param messageId 消息id
*/
deleteMsg(messageId) {
return this.adapter.call("delete_msg", { message_id: messageId });
}
async getSelfInfo() {
const data = await this.adapter.call("get_login_info");
return {
userId: String(data.user_id),
username: data.nickname,
userDisplayname: data.nickname
};
}
async getUserInfo(userId) {
const data = await this.adapter.call("get_stranger_info", {
user_id: Number(userId)
});
return {
userId: String(data.user_id),
username: data.nickname,
userDisplayname: data.nickname,
userRemark: data.remark ?? ""
};
}
async getFriendList() {
const data = await this.adapter.call("get_friend_list");
return data.map((item) => ({
userId: String(item.user_id),
username: item.nickname,
userDisplayname: item.nickname,
userRemark: item.remark ?? ""
}));
}
async getGroupInfo(groupId) {
const data = await this.adapter.call(
"get_group_info",
{
group_id: Number(groupId)
}
);
return {
groupId: String(data.group_id),
groupName: data.group_name,
groupMemo: data.group_memo ?? ""
};
}
async getGroupList() {
const data = await this.adapter.call("get_group_list");
return data.map((item) => ({
groupId: String(item.group_id),
groupName: item.group_name,
groupMemo: item.group_memo ?? ""
}));
}
async getGroupMemberInfo(groupId, userId) {
const data = await this.adapter.call("get_group_member_info", {
group_id: Number(groupId),
user_id: Number(userId)
});
return {
userId: String(data.user_id),
username: data.nickname,
userDisplayname: data.card
};
}
async getGroupMemberList(groupId) {
const data = await this.adapter.call("get_group_member_list", {
group_id: Number(groupId)
});
return data.map((item) => ({
userId: String(item.user_id),
username: item.nickname,
userDisplayname: item.card
}));
}
/**
* @description: 设置群名
* @param groupId 群号
* @param groupName 新群名
*/
setGroupName(groupId, groupName) {
return this.adapter.call("set_group_name", { group_id: Number(groupId), group_name: groupName });
}
/**
* @description: 退出群组
* @param groupId 群号
*/
leaveGroup(groupId) {
return this.adapter.call("set_group_leave", { group_id: Number(groupId), is_dismiss: false });
}
/**
* @description: 设置群头像
* @param groupId 群号
* @param image 图片路径
*/
setGroupAvatar(groupId, image) {
return this.adapter.call("set_group_portrait", { group_id: Number(groupId), file: image, cache: false });
}
/**
* @description: 设置群管理员
* @param groupId 群号
* @param userId 要设置的管理员的QQ号
* @param enable true为设置,false取消,默认true
*/
setGroupAdmin(groupId, userId, enable = true) {
return this.adapter.call("set_group_admin", { group_id: Number(groupId), user_id: Number(userId), enable });
}
/**
* @description: 设置群名片(群备注)
* @param groupId 群号
* @param userId 要设置的QQ号
* @param card 群名片内容,不填或空字符串表示删除群名片
*/
setGroupCard(groupId, userId, card) {
return this.adapter.call("set_group_card", { group_id: Number(groupId), user_id: Number(userId), card });
}
/**
* @description: 群禁言
* @param groupId 群号
* @param userId 要禁言的QQ号,不填则为群禁言
* @param time 禁言时长,单位秒,0表示取消禁言
*/
setGroupBan(groupId, userId, time = 0) {
return this.adapter.call("set_group_ban", { group_id: Number(groupId), user_id: Number(userId), duration: time });
}
setGroupWholeBan(groupId, enable = true) {
return this.adapter.call("set_group_whole_ban", { group_id: Number(groupId), enable });
}
/**
* @description: 发送群公告
* @param groupId 群号
* @param content 公告内容
* @param image 图片路径(可选)
*/
sendGroupNotice(groupId, content, image) {
return this.adapter.call("_send_group_notice", { group_id: Number(groupId), content, image });
}
/**
* @description: 群组踢人
* @param groupId 群号
* @param userId 要踢的QQ号
*/
setGroupKick(groupId, userId) {
return this.adapter.call("set_group_kick", {
group_id: Number(groupId),
user_id: Number(userId),
reject_add_request: false
});
}
}
var api_default = OnebotApi;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
OnebotApi
});