mirror of https://github.com/msgbyte/tailchat
feat: 增加添加应用机器人到群组的功能
parent
7d63f8b6c4
commit
1ba27abbbe
@ -0,0 +1,83 @@
|
|||||||
|
import { call, DataNotFoundError, TcContext } from 'tailchat-server-sdk';
|
||||||
|
import { TcService, config } from 'tailchat-server-sdk';
|
||||||
|
import { isValidStr } from '../../lib/utils';
|
||||||
|
import type { OpenApp } from '../../models/openapi/app';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 第三方应用集成
|
||||||
|
*/
|
||||||
|
class OpenAppIntegrationService extends TcService {
|
||||||
|
get serviceName(): string {
|
||||||
|
return 'openapi.integration';
|
||||||
|
}
|
||||||
|
|
||||||
|
onInit(): void {
|
||||||
|
if (!config.enableOpenapi) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.registerAction('addBotUser', this.addBotUser, {
|
||||||
|
params: {
|
||||||
|
appId: 'string',
|
||||||
|
groupId: 'string',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在群组中添加机器人用户
|
||||||
|
*/
|
||||||
|
async addBotUser(
|
||||||
|
ctx: TcContext<{
|
||||||
|
appId: string;
|
||||||
|
groupId: string;
|
||||||
|
}>
|
||||||
|
) {
|
||||||
|
const appId = ctx.params.appId;
|
||||||
|
const groupId = ctx.params.groupId;
|
||||||
|
const t = ctx.meta.t;
|
||||||
|
|
||||||
|
const openapp: OpenApp = await ctx.call('openapi.app.get', {
|
||||||
|
appId,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!openapp) {
|
||||||
|
throw new DataNotFoundError();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!openapp.capability.includes('bot')) {
|
||||||
|
throw new Error(t('该应用的机器人服务尚未开通'));
|
||||||
|
}
|
||||||
|
|
||||||
|
const botAccount: any = await ctx.call(
|
||||||
|
'openapi.bot.getOrCreateBotAccount',
|
||||||
|
{
|
||||||
|
appId,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const userId = botAccount.userId;
|
||||||
|
if (!isValidStr(userId)) {
|
||||||
|
throw new Error(t('无法获取到机器人ID'));
|
||||||
|
}
|
||||||
|
|
||||||
|
await ctx.call(
|
||||||
|
'group.joinGroup',
|
||||||
|
{
|
||||||
|
groupId,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
meta: {
|
||||||
|
userId,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
await call(ctx).addGroupSystemMessage(
|
||||||
|
String(groupId),
|
||||||
|
`${ctx.meta.user.nickname} 在群组中添加了机器人 ${botAccount.nickname}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default OpenAppIntegrationService;
|
||||||
Loading…
Reference in New Issue