下载地址:https://www.pan38.com/share.php?code=r4HGg 提取码:8888 【仅供学习参考】
Java开发微信机器人插件,实现自动回复消息、自动同意好友请求以及微信群管理功能。我们将基于开源的微信机器人框架进行开发。
项目概述
自动回复私聊消息
自动同意好友请求
微信群消息管理
基础群管理功能(欢迎新人、关键词踢人等)
<dependencies>
<!-- 微信机器人核心库 -->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>4.5.0</version>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-cp</artifactId>
<version>4.5.0</version>
</dependency>
<!-- 其他必要依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
</dependencies>
@EnableConfigurationProperties(WechatProperties.class)
public class WechatBotConfig {
@Autowired
private WechatProperties properties;
@Bean
public WxMpService wxMpService() {
WxMpService service = new WxMpServiceImpl();
WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
config.setAppId(properties.getAppId());
config.setSecret(properties.getSecret());
config.setToken(properties.getToken());
config.setAesKey(properties.getAesKey());
service.setWxMpConfigStorage(config);
return service;
}
@Bean
public WxCpService wxCpService() {
WxCpService service = new WxCpServiceImpl();
WxCpDefaultConfigImpl config = new WxCpDefaultConfigImpl();
config.setCorpId(properties.getCorpId());
config.setCorpSecret(properties.getCorpSecret());
service.setWxCpConfigStorage(config);
return service;
}
}
初始化微信机器人的服务实例
@Slf4j
public class AutoReplyHandler implements WxMpMessageHandler {
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
Map<String, Object> context, WxMpService wxMpService) {
// 自动回复逻辑
String userMessage = wxMessage.getContent();
String replyContent = "收到您的消息: " + userMessage;
if(userMessage.contains("你好")) {
replyContent = "您好,我是自动回复机器人!";
}
return WxMpXmlOutMessage.TEXT()
.content(replyContent)
.fromUser(wxMessage.getToUser())
.toUser(wxMessage.getFromUser())
.build();
}
}
自动回复处理器实现了基本的消息回复功能
@Slf4j
public class FriendRequestHandler implements WxMpMessageHandler {
@Autowired
private WxMpService wxMpService;
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
Map<String, Object> context, WxMpService wxMpService) {
// 自动同意好友请求
if(wxMessage.getMsgType().equals("event") &&
wxMessage.getEvent().equals("subscribe")) {
try {
// 发送欢迎消息
String welcomeMsg = "感谢添加好友!我是自动回复机器人。";
wxMpService.getUserService().userUpdateRemark(
wxMessage.getFromUser(), "新好友");
return WxMpXmlOutMessage.TEXT()
.content(welcomeMsg)
.fromUser(wxMessage.getToUser())
.toUser(wxMessage.getFromUser())
.build();
} catch (WxErrorException e) {
log.error("处理好友请求失败", e);
}
}
return null;
}
}
好友请求处理器
@Slf4j
public class GroupManager {
@Autowired
private WxCpService wxCpService;
// 欢迎新群成员
public void welcomeNewMember(String groupId, String userId) {
try {
String welcomeMsg = "@" + userId + " 欢迎加入本群!请阅读群规。";
wxCpService.getMessageService().sendText(
groupId, null, null, welcomeMsg);
} catch (WxErrorException e) {
log.error("发送欢迎消息失败", e);
}
}
// 关键词踢人
public void kickMemberByKeyword(String groupId, String userId, String keyword) {
try {
if(keyword.contains("广告")) {
wxCpService.getChatService().delChatMember(groupId, userId);
String msg = "用户 @" + userId + " 因发布广告已被移出群聊";
wxCpService.getMessageService().sendText(
groupId, null, null, msg);
}
} catch (WxErrorException e) {
log.error("踢人操作失败", e);
}
}
// 自动回复群消息
public void autoReplyInGroup(String groupId, String message) {
try {
if(message.contains("@机器人")) {
String reply = "我在呢!有什么可以帮您的?";
wxCpService.getMessageService().sendText(
groupId, null, null, reply);
}
} catch (WxErrorException e) {
log.error("群消息回复失败", e);
}
}
}