mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-10 07:02:44 +00:00
refactor(agents): share discord role mutation parsing
This commit is contained in:
@@ -39,6 +39,35 @@ function readParentIdParam(params: Record<string, unknown>): string | null | und
|
|||||||
return readStringParam(params, "parentId");
|
return readStringParam(params, "parentId");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DiscordRoleMutation = (params: {
|
||||||
|
guildId: string;
|
||||||
|
userId: string;
|
||||||
|
roleId: string;
|
||||||
|
}) => Promise<unknown>;
|
||||||
|
type DiscordRoleMutationWithAccount = (
|
||||||
|
params: {
|
||||||
|
guildId: string;
|
||||||
|
userId: string;
|
||||||
|
roleId: string;
|
||||||
|
},
|
||||||
|
options: { accountId: string },
|
||||||
|
) => Promise<unknown>;
|
||||||
|
|
||||||
|
async function runRoleMutation(params: {
|
||||||
|
accountId?: string;
|
||||||
|
values: Record<string, unknown>;
|
||||||
|
mutate: DiscordRoleMutation & DiscordRoleMutationWithAccount;
|
||||||
|
}) {
|
||||||
|
const guildId = readStringParam(params.values, "guildId", { required: true });
|
||||||
|
const userId = readStringParam(params.values, "userId", { required: true });
|
||||||
|
const roleId = readStringParam(params.values, "roleId", { required: true });
|
||||||
|
if (params.accountId) {
|
||||||
|
await params.mutate({ guildId, userId, roleId }, { accountId: params.accountId });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await params.mutate({ guildId, userId, roleId });
|
||||||
|
}
|
||||||
|
|
||||||
export async function handleDiscordGuildAction(
|
export async function handleDiscordGuildAction(
|
||||||
action: string,
|
action: string,
|
||||||
params: Record<string, unknown>,
|
params: Record<string, unknown>,
|
||||||
@@ -157,36 +186,14 @@ export async function handleDiscordGuildAction(
|
|||||||
if (!isActionEnabled("roles", false)) {
|
if (!isActionEnabled("roles", false)) {
|
||||||
throw new Error("Discord role changes are disabled.");
|
throw new Error("Discord role changes are disabled.");
|
||||||
}
|
}
|
||||||
const guildId = readStringParam(params, "guildId", {
|
await runRoleMutation({ accountId, values: params, mutate: addRoleDiscord });
|
||||||
required: true,
|
|
||||||
});
|
|
||||||
const userId = readStringParam(params, "userId", {
|
|
||||||
required: true,
|
|
||||||
});
|
|
||||||
const roleId = readStringParam(params, "roleId", { required: true });
|
|
||||||
if (accountId) {
|
|
||||||
await addRoleDiscord({ guildId, userId, roleId }, { accountId });
|
|
||||||
} else {
|
|
||||||
await addRoleDiscord({ guildId, userId, roleId });
|
|
||||||
}
|
|
||||||
return jsonResult({ ok: true });
|
return jsonResult({ ok: true });
|
||||||
}
|
}
|
||||||
case "roleRemove": {
|
case "roleRemove": {
|
||||||
if (!isActionEnabled("roles", false)) {
|
if (!isActionEnabled("roles", false)) {
|
||||||
throw new Error("Discord role changes are disabled.");
|
throw new Error("Discord role changes are disabled.");
|
||||||
}
|
}
|
||||||
const guildId = readStringParam(params, "guildId", {
|
await runRoleMutation({ accountId, values: params, mutate: removeRoleDiscord });
|
||||||
required: true,
|
|
||||||
});
|
|
||||||
const userId = readStringParam(params, "userId", {
|
|
||||||
required: true,
|
|
||||||
});
|
|
||||||
const roleId = readStringParam(params, "roleId", { required: true });
|
|
||||||
if (accountId) {
|
|
||||||
await removeRoleDiscord({ guildId, userId, roleId }, { accountId });
|
|
||||||
} else {
|
|
||||||
await removeRoleDiscord({ guildId, userId, roleId });
|
|
||||||
}
|
|
||||||
return jsonResult({ ok: true });
|
return jsonResult({ ok: true });
|
||||||
}
|
}
|
||||||
case "channelInfo": {
|
case "channelInfo": {
|
||||||
|
|||||||
Reference in New Issue
Block a user