lss233 / chatgpt-mirai-qq-bot

🚀 一键部署!真正的 AI 聊天机器人!支持ChatGPT、文心一言、讯飞星火、Bing、Bard、ChatGLM、POE,多账号,人设调教,虚拟女仆、图片渲染、语音发送 | 支持 QQ、Telegram、Discord、微信 等平台
GNU Affero General Public License v3.0
12.97k stars 1.55k forks source link

[Feature] 增加一个回复机制,可以喊出回复人的QQ昵称 #402

Closed Katerina0926 closed 1 year ago

Katerina0926 commented 1 year ago

image 类似于这样,可以读取他人QQ信息卡的性别,判断为QQ昵称先生或小姐 不太懂该怎么改,只能靠lss233大佬了

Katerina0926 commented 1 year ago

凪🌙
bing 在QQ的某登录账号中 如何通过mirai框架 对于@登录账号的QQ 根据其资料卡的昵称和性别做出相应回复 要实现这个功能,你需要通过mirai框架调用QQ的API来获取目标用户的资料卡信息,然后再根据这些信息来做出相应的回复。

下面是一个基本的实现思路:

  1. 获取目标用户的QQ号。

可以通过mirai框架提供的API来获取被@的用户的QQ号,例如在群聊中收到消息时,可以通过event.getSender().getId()来获取发送者的QQ号。

  1. 获取目标用户的资料卡信息。

可以通过mirai框架提供的API来获取目标用户的资料卡信息,例如获取昵称可以使用Bot.getInstance().getFriend(uid).getNick(),其中uid是目标用户的QQ号;获取性别可以使用Bot.getInstance().getFriend(uid).getGender(),其中uid是目标用户的QQ号。

  1. 根据资料卡信息做出相应的回复。

可以根据目标用户的昵称和性别来做出相应的回复。例如:

long uid = event.getSender().getId();
String nickname = Bot.getInstance().getFriend(uid).getNick();
String gender = Bot.getInstance().getFriend(uid).getGender();
if (gender.equals("MALE")) {
    Bot.getInstance().sendGroupMsg(groupId, "尊敬的" + nickname + "先生,您好!");
} else if (gender.equals("FEMALE")) {
    Bot.getInstance().sendGroupMsg(groupId, "尊敬的" + nickname + "女士,您好!");
} else {
    Bot.getInstance().sendGroupMsg(groupId, "您好," + nickname + "!");
}

看gpt是这么回答的,但是我不知道在哪部署就是了,麻烦lss大佬帮忙做一个这样的

lss233 commented 1 year ago

直接传递名字过去有点奇怪了。我觉得可以想下是不是可以在预设上加入这个功能,让 AI 回复更加个性化一些。

比如说,添加一个新的预设形式,修改用户发送过去的prompt,增加一些自定义内容。

system: 现在我们玩个游戏,扮演多人对话,你来作出回应,在回应时,你要说出当前说话者的名字。  

user_send: {nickname} 说: {content}  

然后实际发送给 AI 的就是

yooooooomu 说:能否描述下xxxx

这样,AI就能自己说出名字了。

lss233 commented 1 year ago

其实这个 feature 和 https://github.com/lss233/chatgpt-mirai-qq-bot/issues/97 有点像,不过如果只是获取用户名的话还好。

lss233 commented 1 year ago

v2.2.5-beta 已发布,支持此特性。