大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。
先看这里
前言
最近改造了下机器人,接口改的更加灵活,可以通过自定义接口给自己的社群或者好友中。废弃掉之前的发送接口,简直为开发者的福音;不仅支持java
,其他类型的编程语言均可。
机器人目前功能列表
- 好友关键词自动通过
- 进群欢迎词
- 群聊列表查询
- 好友列表查询
- 接入百度文心大模型
- 自定义接口发送文本消息(群/好友/公众号)
- 自定义接口发送图片消息(群/好友/公众号)
- 自定义接口发送xml消息(群/好友/公众号)
- 自定义接口发送h5小卡片消息(群/好友/公众号)
- 自定义接口发送小程序卡片(群/好友/公众号)
- 自定义接口发送本地文件(群/好友/公众号)
- 每日诗词问答
- 签到获取星光币
- 答题奖励/扣除星光币
- 文本消息防撤回功能
- 我想买功能(对接拼多多、淘宝客返佣平台,根据关键词搜索商品,可直接下单购买)
- 同步给多个群/好友发送消息(应用场景:只需要给机器人发送一条消息,机器人会自动给已经配置了的多个群或好友随机在1-10分钟内将消息转发出去)
- 可视化机器人管理平台(群/好友/公众号)
- 每日新闻简报推送(群/好友/公众号)
- 每日天气信息推送(数据来源:中国中央气象台)(群/好友/公众号)
- 每日生活小技巧推送(群/好友/公众号)
- 天行数据api接口对接(头条热点、早安心语、彩虹屁、 朋友圈文案)
- 指定关键词回答配置(eg:给机器人发:穆雄雄,机器人回复:#小程序:雄雄的工具箱)
接口说明
接口地址(详细接口地址请咨询博主):
/system/object/customApiSendMsg
java中的调用示例:
/**
* 给微信机器人中发送信息的公共方法
*/
public String sendMsgToWechat(String wxid,Integer tag,String appkey,String message){
String url = WECHAT_SERVE_API + "/system/object/customApiSendMsg";
String path = url + "?tag=" + tag + "&wxid=" + wxid + "&appkey=" + appkey + "&message=" + message;
String body = HttpUtil.createGet(path)
.execute()
.body();
log.info("给微信群中发送的结果:" + body);
return body;
}
备注:
wxid
:为接收消息的群或者好友的唯一id,可以从管理平台中看到tag
:为消息类型,0表示发送文字,1表示发送图片 2发送本地文件 3发送H5小卡片 4发送小程序 5发送音乐卡片 6发送xml文件 7发送聊天记录 -1设置百度的appkey和秘钥appkey
:为开发者的appkey
,可以在管理平台中查看message
:需要发送的消息,消息格式与发送消息类型tag
有关,具体格式分别查看下面的示例
发送文本消息
效果
- 文本消息中的#符号,在代码中用
/cjj
代替 - 文本消息中的换行,在代码中
/cbr
代替
示例代码:
/**
* (微信机器人)每天早上6点将国内新闻发送至群中
*/
@GetMapping("/sendAlapiNewsV1")
// @Scheduled(cron = " 0 0 6 * * ?")
public void sendAlapiNewsV1() throws UnsupportedEncodingException {
//请求接口中的数据
String url = ALAPI_API+"/zaobao?token="+ALAPI_KEY+"&format=json";
String body = HttpUtil.createGet(url)
.execute()
.body();
JSONObject objectResult = JSON.parseObject(body);
Integer code = objectResult.getInteger("code");
JSONObject object = new JSONObject();
StringBuilder sb = new StringBuilder();
if (code != 200) {
log.info("获取新闻失败");
return;
}
SimpleDateFormat formatChina = new SimpleDateFormat("yyyy年MM月dd日");
// 将今天日期转换为 SimpleDateFormat 格式,并将明天的日期转换为 SimpleDateFormat 格式
String todayDate = formatChina.format(new Date());
//根据阳历计算农历
Calendar today = Calendar.getInstance();
today.setTime(new Date());
Date tomorrowDate = today.getTime();
String dateTomorrow = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(tomorrowDate);
sb.append("早上好[太阳],今天是:" + todayDate);
String week = "";
try {
week = DateUtils.getDaysByWeekChina(dateTomorrow);
DateUtils lunar = new DateUtils(today);
String nongli = lunar.toString();
non