ashinnotfound / ChatGPT-YourChatRobot

❤开箱即用❤an unofficial implement of ChatGPT in QQ/Wechat. 一个非官方的ChatGPT腾讯qq/微信(非公众号)实现版,快来把你的qq或微信变成chatgpt吧
MIT License
432 stars 96 forks source link

这个bot在q群里, 别人不@它, 它也在回答问题 #1

Closed rubyuu closed 1 year ago

rubyuu commented 1 year ago

请问这个要怎么设置

ashinnotfound commented 1 year ago

如果你想实现在群聊里只有当别人@机器人时,才会回复。可以考虑将获取到的消息元素进行筛选,若筛选到@机器人的消息,再向ChatGPT提问并回复,比如:

@EventHandler
    public void onMessage(@NotNull MessageEvent event) {
        ChatBO chatBO = new ChatBO();
        chatBO.setSessionId(String.valueOf(event.getSender().getId()));
        chatBO.setQuestion(event.getMessage().contentToString());
        if(event.getBot().getGroups().contains(event.getSubject().getId())) {
            //如果是在群聊
            //遍历收到的消息元素
            for (SingleMessage singleMessage : event.getMessage()) {
                if (singleMessage.equals(new At(event.getBot().getId()))) {
                    //存在@机器人的消息就向ChatGPT提问
                    event.getSubject().sendMessage(interactService.chat(chatBO));
                    break;
                }
            }
        }else
            //不是在群聊 则直接回复
            event.getSubject().sendMessage(interactService.chat(chatBO));
    }

你可以将以上代码copy到项目里替换原来的onMessage函数来直接使用。 其他的设定可以参考mirai的文档,后续我也会增加这类设定功能,谢谢你的提问🌹

rubyuu commented 1 year ago

感激不尽