mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-20 18:24:59 +00:00
Core: pass plugin command context
This commit is contained in:
@@ -35,9 +35,15 @@ export const handlePluginCommand: CommandHandler = async (
|
||||
args: match.args,
|
||||
senderId: command.senderId,
|
||||
channel: command.channel,
|
||||
channelId: command.channelId,
|
||||
isAuthorizedSender: command.isAuthorizedSender,
|
||||
commandBody: command.commandBodyNormalized,
|
||||
config: cfg,
|
||||
from: command.from,
|
||||
to: command.to,
|
||||
accountId: params.ctx.AccountId ?? undefined,
|
||||
messageThreadId:
|
||||
typeof params.ctx.MessageThreadId === "number" ? params.ctx.MessageThreadId : undefined,
|
||||
});
|
||||
|
||||
return {
|
||||
|
||||
@@ -229,9 +229,14 @@ export async function executePluginCommand(params: {
|
||||
args?: string;
|
||||
senderId?: string;
|
||||
channel: string;
|
||||
channelId?: PluginCommandContext["channelId"];
|
||||
isAuthorizedSender: boolean;
|
||||
commandBody: string;
|
||||
config: OpenClawConfig;
|
||||
from?: PluginCommandContext["from"];
|
||||
to?: PluginCommandContext["to"];
|
||||
accountId?: PluginCommandContext["accountId"];
|
||||
messageThreadId?: PluginCommandContext["messageThreadId"];
|
||||
}): Promise<PluginCommandResult> {
|
||||
const { command, args, senderId, channel, isAuthorizedSender, commandBody, config } = params;
|
||||
|
||||
@@ -250,10 +255,15 @@ export async function executePluginCommand(params: {
|
||||
const ctx: PluginCommandContext = {
|
||||
senderId,
|
||||
channel,
|
||||
channelId: params.channelId,
|
||||
isAuthorizedSender,
|
||||
args: sanitizedArgs,
|
||||
commandBody,
|
||||
config,
|
||||
from: params.from,
|
||||
to: params.to,
|
||||
accountId: params.accountId,
|
||||
messageThreadId: params.messageThreadId,
|
||||
};
|
||||
|
||||
// Lock registry during execution to prevent concurrent modifications
|
||||
|
||||
@@ -5,7 +5,7 @@ import type { AuthProfileCredential, OAuthCredential } from "../agents/auth-prof
|
||||
import type { AnyAgentTool } from "../agents/tools/common.js";
|
||||
import type { ReplyPayload } from "../auto-reply/types.js";
|
||||
import type { ChannelDock } from "../channels/dock.js";
|
||||
import type { ChannelPlugin } from "../channels/plugins/types.js";
|
||||
import type { ChannelId, ChannelPlugin } from "../channels/plugins/types.js";
|
||||
import type { createVpsAwareOAuthHandlers } from "../commands/oauth-flow.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { ModelProviderConfig } from "../config/types.js";
|
||||
@@ -140,6 +140,8 @@ export type PluginCommandContext = {
|
||||
senderId?: string;
|
||||
/** The channel/surface (e.g., "telegram", "discord") */
|
||||
channel: string;
|
||||
/** Provider channel id (e.g., "telegram") */
|
||||
channelId?: ChannelId;
|
||||
/** Whether the sender is on the allowlist */
|
||||
isAuthorizedSender: boolean;
|
||||
/** Raw command arguments after the command name */
|
||||
@@ -148,6 +150,14 @@ export type PluginCommandContext = {
|
||||
commandBody: string;
|
||||
/** Current OpenClaw configuration */
|
||||
config: OpenClawConfig;
|
||||
/** Raw "From" value (channel-scoped id) */
|
||||
from?: string;
|
||||
/** Raw "To" value (channel-scoped id) */
|
||||
to?: string;
|
||||
/** Account id for multi-account channels */
|
||||
accountId?: string;
|
||||
/** Thread/topic id if available */
|
||||
messageThreadId?: number;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -675,6 +675,10 @@ export const registerTelegramNativeCommands = ({
|
||||
isForum,
|
||||
messageThreadId,
|
||||
});
|
||||
const from = isGroup
|
||||
? buildTelegramGroupFrom(chatId, threadSpec.id)
|
||||
: `telegram:${chatId}`;
|
||||
const to = `telegram:${chatId}`;
|
||||
|
||||
const result = await executePluginCommand({
|
||||
command: match.command,
|
||||
@@ -684,6 +688,10 @@ export const registerTelegramNativeCommands = ({
|
||||
isAuthorizedSender: commandAuthorized,
|
||||
commandBody,
|
||||
config: cfg,
|
||||
from,
|
||||
to,
|
||||
accountId,
|
||||
messageThreadId: threadSpec.id,
|
||||
});
|
||||
const tableMode = resolveMarkdownTableMode({
|
||||
cfg,
|
||||
|
||||
Reference in New Issue
Block a user