openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
310 lines (309 loc) • 11.2 kB
JavaScript
import { c as normalizeOptionalString } from "./string-coerce-mnp54Vah.js";
import { b as readStringParam, g as readPositiveIntegerParam, m as readNonNegativeIntegerParam, v as readStringArrayParam } from "./common-C4yy9V-D.js";
import "./string-coerce-runtime-CEGJWkQ_.js";
import "./agent-runtime-CvpQRNVf.js";
import { a as readDiscordChannelCreateParams, n as isDiscordModerationAction, o as readDiscordChannelEditParams, r as readDiscordModerationCommand, s as readDiscordChannelMoveParams, t as handleDiscordAction } from "./runtime-BismxRuL.js";
import "./action-runtime-api-CdxCjrx4.js";
//#region extensions/discord/src/actions/handle-action.guild-admin.ts
function readDiscordRequesterSenderId(ctx) {
return ctx.toolContext?.currentChannelProvider?.trim().toLowerCase() === "discord" ? normalizeOptionalString(ctx.requesterSenderId) : void 0;
}
function senderParam(senderUserId) {
return senderUserId ? { senderUserId } : {};
}
async function tryHandleDiscordMessageActionGuildAdmin(params) {
const { ctx, resolveChannelId } = params;
const { action, params: actionParams, cfg } = ctx;
const accountId = ctx.accountId ?? readStringParam(actionParams, "accountId");
const senderUserId = readDiscordRequesterSenderId(ctx);
if (action === "member-info") {
const userId = readStringParam(actionParams, "userId", { required: true });
const guildId = readStringParam(actionParams, "guildId", { required: true });
return await handleDiscordAction({
action: "memberInfo",
accountId: accountId ?? void 0,
guildId,
userId
}, cfg);
}
if (action === "role-info") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
return await handleDiscordAction({
action: "roleInfo",
accountId: accountId ?? void 0,
guildId
}, cfg);
}
if (action === "emoji-list") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
return await handleDiscordAction({
action: "emojiList",
accountId: accountId ?? void 0,
guildId
}, cfg);
}
if (action === "emoji-upload") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
const name = readStringParam(actionParams, "emojiName", { required: true });
const mediaUrl = readStringParam(actionParams, "media", {
required: true,
trim: false
});
const roleIds = readStringArrayParam(actionParams, "roleIds");
return await handleDiscordAction({
action: "emojiUpload",
accountId: accountId ?? void 0,
guildId,
name,
mediaUrl,
roleIds,
...senderParam(senderUserId)
}, cfg);
}
if (action === "sticker-upload") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
const name = readStringParam(actionParams, "stickerName", { required: true });
const description = readStringParam(actionParams, "stickerDesc", { required: true });
const tags = readStringParam(actionParams, "stickerTags", { required: true });
const mediaUrl = readStringParam(actionParams, "media", {
required: true,
trim: false
});
return await handleDiscordAction({
action: "stickerUpload",
accountId: accountId ?? void 0,
guildId,
name,
description,
tags,
mediaUrl,
...senderParam(senderUserId)
}, cfg);
}
if (action === "role-add" || action === "role-remove") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
const userId = readStringParam(actionParams, "userId", { required: true });
const roleId = readStringParam(actionParams, "roleId", { required: true });
return await handleDiscordAction({
action: action === "role-add" ? "roleAdd" : "roleRemove",
accountId: accountId ?? void 0,
guildId,
userId,
roleId,
...senderParam(senderUserId)
}, cfg);
}
if (action === "channel-info") {
const channelId = readStringParam(actionParams, "channelId", { required: true });
return await handleDiscordAction({
action: "channelInfo",
accountId: accountId ?? void 0,
channelId
}, cfg);
}
if (action === "channel-list") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
return await handleDiscordAction({
action: "channelList",
accountId: accountId ?? void 0,
guildId
}, cfg);
}
if (action === "channel-create") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
return await handleDiscordAction({
action: "channelCreate",
accountId: accountId ?? void 0,
...readDiscordChannelCreateParams({
...actionParams,
guildId
}),
...senderParam(senderUserId)
}, cfg);
}
if (action === "channel-edit") {
const channelId = readStringParam(actionParams, "channelId", { required: true });
return await handleDiscordAction({
action: "channelEdit",
accountId: accountId ?? void 0,
...readDiscordChannelEditParams({
...actionParams,
channelId
}),
...senderParam(senderUserId)
}, cfg);
}
if (action === "channel-delete") {
const channelId = readStringParam(actionParams, "channelId", { required: true });
return await handleDiscordAction({
action: "channelDelete",
accountId: accountId ?? void 0,
channelId,
...senderParam(senderUserId)
}, cfg);
}
if (action === "channel-move") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
const channelId = readStringParam(actionParams, "channelId", { required: true });
return await handleDiscordAction({
action: "channelMove",
accountId: accountId ?? void 0,
...readDiscordChannelMoveParams({
...actionParams,
guildId,
channelId
}),
...senderParam(senderUserId)
}, cfg);
}
if (action === "category-create") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
const name = readStringParam(actionParams, "name", { required: true });
const position = readNonNegativeIntegerParam(actionParams, "position");
return await handleDiscordAction({
action: "categoryCreate",
accountId: accountId ?? void 0,
guildId,
name,
position: position ?? void 0,
...senderParam(senderUserId)
}, cfg);
}
if (action === "category-edit") {
const categoryId = readStringParam(actionParams, "categoryId", { required: true });
const name = readStringParam(actionParams, "name");
const position = readNonNegativeIntegerParam(actionParams, "position");
return await handleDiscordAction({
action: "categoryEdit",
accountId: accountId ?? void 0,
categoryId,
name: name ?? void 0,
position: position ?? void 0,
...senderParam(senderUserId)
}, cfg);
}
if (action === "category-delete") {
const categoryId = readStringParam(actionParams, "categoryId", { required: true });
return await handleDiscordAction({
action: "categoryDelete",
accountId: accountId ?? void 0,
categoryId,
...senderParam(senderUserId)
}, cfg);
}
if (action === "voice-status") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
const userId = readStringParam(actionParams, "userId", { required: true });
return await handleDiscordAction({
action: "voiceStatus",
accountId: accountId ?? void 0,
guildId,
userId
}, cfg);
}
if (action === "event-list") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
return await handleDiscordAction({
action: "eventList",
accountId: accountId ?? void 0,
guildId
}, cfg);
}
if (action === "event-create") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
const name = readStringParam(actionParams, "eventName", { required: true });
const startTime = readStringParam(actionParams, "startTime", { required: true });
const endTime = readStringParam(actionParams, "endTime");
const description = readStringParam(actionParams, "desc");
const channelId = readStringParam(actionParams, "channelId");
const location = readStringParam(actionParams, "location");
const entityType = readStringParam(actionParams, "eventType");
const image = readStringParam(actionParams, "image", { trim: false });
return await handleDiscordAction({
action: "eventCreate",
accountId: accountId ?? void 0,
guildId,
name,
startTime,
endTime,
description,
channelId,
location,
entityType,
image,
...senderParam(senderUserId)
}, cfg, { mediaLocalRoots: ctx.mediaLocalRoots });
}
if (isDiscordModerationAction(action)) {
const moderation = readDiscordModerationCommand(action, {
...actionParams,
durationMinutes: readNonNegativeIntegerParam(actionParams, "durationMin"),
deleteMessageDays: readNonNegativeIntegerParam(actionParams, "deleteDays", {
max: 7,
message: "deleteDays must be an integer from 0 to 7"
})
});
const senderUserIdLocal = normalizeOptionalString(ctx.requesterSenderId);
return await handleDiscordAction({
action: moderation.action,
accountId: accountId ?? void 0,
guildId: moderation.guildId,
userId: moderation.userId,
durationMinutes: moderation.durationMinutes,
until: moderation.until,
reason: moderation.reason,
deleteMessageDays: moderation.deleteMessageDays,
senderUserId: senderUserIdLocal
}, cfg);
}
if (action === "thread-list") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
const channelId = readStringParam(actionParams, "channelId");
const includeArchived = typeof actionParams.includeArchived === "boolean" ? actionParams.includeArchived : void 0;
const before = readStringParam(actionParams, "before");
const limit = readPositiveIntegerParam(actionParams, "limit");
return await handleDiscordAction({
action: "threadList",
accountId: accountId ?? void 0,
guildId,
channelId,
includeArchived,
before,
limit
}, cfg);
}
if (action === "thread-reply") {
const content = readStringParam(actionParams, "message", { required: true });
const mediaUrl = readStringParam(actionParams, "media", { trim: false }) ?? readStringParam(actionParams, "path", { trim: false }) ?? readStringParam(actionParams, "filePath", { trim: false });
const replyTo = readStringParam(actionParams, "replyTo");
const channelId = readStringParam(actionParams, "threadId") ?? resolveChannelId();
return await handleDiscordAction({
action: "threadReply",
accountId: accountId ?? void 0,
channelId,
content,
mediaUrl: mediaUrl ?? void 0,
replyTo: replyTo ?? void 0
}, cfg, {
mediaLocalRoots: ctx.mediaLocalRoots,
mediaReadFile: ctx.mediaReadFile
});
}
if (action === "search") {
const guildId = readStringParam(actionParams, "guildId", { required: true });
const query = readStringParam(actionParams, "query", { required: true });
return await handleDiscordAction({
action: "searchMessages",
accountId: accountId ?? void 0,
guildId,
content: query,
channelId: readStringParam(actionParams, "channelId"),
channelIds: readStringArrayParam(actionParams, "channelIds"),
authorId: readStringParam(actionParams, "authorId"),
authorIds: readStringArrayParam(actionParams, "authorIds"),
limit: readPositiveIntegerParam(actionParams, "limit")
}, cfg);
}
}
//#endregion
export { tryHandleDiscordMessageActionGuildAdmin as t };