MCPcopy Index your code
hub / github.com/ChatLab/ChatLab / handler

Function handler

packages/tools/src/definitions/get-members.ts:16–49  ·  view source on GitHub ↗
(params: Record<string, unknown>, context: ToolExecutionContext)

Source from the content-addressed store, hash-verified

14}
15
16async function handler(params: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolResult> {
17 const { locale } = context
18 const members = await context.dataProvider!.getMembers()
19
20 let filteredMembers = members
21 if (params.search) {
22 const keyword = (params.search as string).toLowerCase()
23 filteredMembers = members.filter((m) => {
24 if (m.groupNickname && m.groupNickname.toLowerCase().includes(keyword)) return true
25 if (m.accountName && m.accountName.toLowerCase().includes(keyword)) return true
26 if (m.platformId.includes(keyword)) return true
27 if (m.aliases.some((alias) => alias.toLowerCase().includes(keyword))) return true
28 return false
29 })
30 }
31
32 if (params.limit && (params.limit as number) > 0) {
33 filteredMembers = filteredMembers.slice(0, params.limit as number)
34 }
35
36 const msgSuffix = isChineseLocale(locale) ? '条' : ''
37 const aliasLabel = t('alias', locale)
38 const data = {
39 totalMembers: members.length,
40 returnedMembers: filteredMembers.length,
41 members: filteredMembers.map((m) => {
42 const displayName = m.groupNickname || m.accountName || m.platformId
43 const aliasStr = m.aliases.length > 0 ? `|${aliasLabel}:${m.aliases.join(',')}` : ''
44 return `${m.id}|${m.platformId}|${displayName}|${m.messageCount}${msgSuffix}${aliasStr}`
45 }),
46 }
47
48 return { content: JSON.stringify(data), data }
49}
50
51export const getMembersTool: ToolDefinition = {
52 name: 'get_members',

Callers

nothing calls this directly

Calls 3

isChineseLocaleFunction · 0.90
tFunction · 0.90
getMembersMethod · 0.65

Tested by

no test coverage detected