mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-03 03:03:24 -04: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");
|
||||
}
|
||||
|
||||
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(
|
||||
action: string,
|
||||
params: Record<string, unknown>,
|
||||
@@ -157,36 +186,14 @@ export async function handleDiscordGuildAction(
|
||||
if (!isActionEnabled("roles", false)) {
|
||||
throw new Error("Discord role changes are disabled.");
|
||||
}
|
||||
const guildId = readStringParam(params, "guildId", {
|
||||
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 });
|
||||
}
|
||||
await runRoleMutation({ accountId, values: params, mutate: addRoleDiscord });
|
||||
return jsonResult({ ok: true });
|
||||
}
|
||||
case "roleRemove": {
|
||||
if (!isActionEnabled("roles", false)) {
|
||||
throw new Error("Discord role changes are disabled.");
|
||||
}
|
||||
const guildId = readStringParam(params, "guildId", {
|
||||
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 });
|
||||
}
|
||||
await runRoleMutation({ accountId, values: params, mutate: removeRoleDiscord });
|
||||
return jsonResult({ ok: true });
|
||||
}
|
||||
case "channelInfo": {
|
||||
|
||||
Reference in New Issue
Block a user