日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java实现QQ机器人

發(fā)布時間:2024/8/1 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java实现QQ机器人 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java實(shí)現(xiàn)QQ機(jī)器人

使用Java攔截QQ消息 + 回復(fù)消息…等等(酷Q+java 實(shí)現(xiàn))

需要下載的文件:https://pan.baidu.com/s/13xvYG6VXr9Bj_oJokVbJ9w 提取碼:od38

解壓后:添加上項目依賴/jar包,啟動CQA輸入要成為機(jī)器人的QQ號.

創(chuàng)建KQClient.class

/*** 客戶端*/ public class KQClient {//記錄器private final static Logger LOGGER = LoggerFactory.getLogger(KQClient.class);private static KQWebClient kqWebClient;private static final String host="wx://localhost:25303";public static void runClient(){try {if(kqWebClient == null){//連接酷Q服務(wù)端kqWebClient = new KQWebClient(new URI(host));}//添加監(jiān)聽kqWebClient.addQQMSGListenner(new MyQQAdapter(kqWebClient));} catch (URISyntaxException e) {//e.printStackTrace();LOGGER.error("初始化客戶端失敗(錯誤原因):"+e.getMessage());e.printStackTrace();}}public static void main(String[] args) {//初始化客服端runClient();} }

創(chuàng)建MyQQAdapter.class根據(jù)要實(shí)現(xiàn)的功能重寫KQMSGAdapter.class父類方法即可.

package com.example.boot.client;import com.mumu.listenner.KQMSGAdapter; import com.mumu.msg.RE_MSG_Group; import com.mumu.msg.RE_MSG_Private; import com.mumu.webclient.KQWebClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class MyQQAdapter extends KQMSGAdapter {private final static Logger LOGGER = LoggerFactory.getLogger(KQClient.class);private KQWebClient kqWebClient;MyQQAdapter(KQWebClient kqWebClient){this.kqWebClient = kqWebClient;}/*** 接收QQ群消息* @param msg*/@Overridepublic void RE_MSG_Group(RE_MSG_Group msg) {//super.RE_MSG_Group(msg);LOGGER.info("接受QQ群消息 groupName:"+msg.getFromGroup()+"msg:"+msg.getMsg());/*** parameters:* String qq(回復(fù)那個人), String groupid(回復(fù)QQ群號), String msg(回復(fù)消息), Boolean isAT(是否@)*/kqWebClient.sendGroupMSG(msg.getFromQQ(),msg.getFromGroup(),"我收到群消息啦",false);}/*** 接收私聊消息* @param msg*/@Overridepublic void Re_MSG_Private(RE_MSG_Private msg) {//super.Re_MSG_Private(msg);LOGGER.info("接收到私聊消息:fromQQ:"+msg.getFromqq()+"msg:"+msg.getMsg());//回復(fù)kqWebClient.sendPrivateMSG(msg.getFromqq(),"我收到私聊消息啦!!!!!");} }

KQMSGAdapter.class源碼如下:

public class KQMSGAdapter extends KQMSGListenner {public KQMSGAdapter() {}//私聊消息方法public void Re_MSG_Private(RE_MSG_Private msg) {}//論壇消息方法public void RE_MSG_FORUM(RE_MSG_Forum msg) {}//Q群消息方法public void RE_MSG_Group(RE_MSG_Group msg) {}public void RE_EXAMPLE_MANAGE(RE_MSG_AdminChange msg) {System.out.println("群成員變動 ");}public void RE_EXAMPLE_DEMBER(DeleteAdmin msg) {System.out.println("群成員減少");}public void RE_EXAMPLE_AMEMBER(AddAdmin msg) {System.out.println("群成員添加");}public void RE_EXAMPLE_ADDFRIEND(AddFriendExample msg) {System.out.println("好友添加成功");}public void RE_ASK_ADDFRIEND(AddFriends msg) {System.out.println("請求添加好友");}public void RE_ASK_ADDGROUP(ADDGroupExample msg) {System.out.println("請求添加群");} }

api接口參數(shù)說明:

{ “error”: “0”, “act”: “21”, “fromQQ”: “1234”, “subType”: “11”, “sendTime”: “1479679322”, “msg”: “你好啊!”, “font”: “52996664”}
error表示錯誤代碼,一般為0,act為21表示這是一個私聊消息,上述消息表示qq號為1234的好友向CoolQ用戶發(fā)送了一條內(nèi)容為“你好啊”的消息

服務(wù)器事件id及各字段名詞如下(注意區(qū)分大小寫):

2 群消息
subType,sendTime,fromGroup, fromQQ ,fromAnonymous, msg,font, username, nick, sex, age, fromGroupName
紅色字段為LEMOC所加字段,原CoolQ消息之中無此字段,username為qq昵稱,nick是群名片,sex性別,age年齡,fromGroupName為QQ群的名稱
示例:
{ “username”: “泰蘭德”, “nick”: “泰奶奶”, “sex”: “0”, “age”: “12000”, “error”: “0”, “act”: “2”, “fromGroup”: “1234”, “fromGroupName”: “月之女祭司”, “fromQQ”: “1234”, “subType”: “1”, “sendTime”: “1481481775”, “fromAnonymous”: “”, “msg”: “誰看到瑪法里奧了?”, “font”: “7141560”}

4 討論組消息
subType,sendTime,fromDiscuss,fromQQ,msg,font, nick, sex, age
紅色字段為LEMOC所加字段,原CoolQ消息之中無此字段,含義與21 私聊消息相同

21 私聊消息
subType (子類型,11/來自好友 1/來自在線狀態(tài) 2/來自群 3/來自討論組),sendTime,fromQQ,msg,font, nick, sex, age
紅色字段為LEMOC所加字段,原CoolQ消息之中無此字段,nick為qq昵稱,sex性別,age年齡
示例:
{ “nick”: “奈法利安”, “sex”: “0”, “age”: “2000”, “error”: “0”, “act”: “21”, “fromQQ”: “12345”, “subType”: “11”, “sendTime”: “1481481771”, “font”: “7140312”, “msg”: “游戲開始!”}

101 群事件-管理員變動
subType(1/被取消管理員 2/被設(shè)置管理員),sendTime,fromGroup,beingOperateQQ

102 群事件-群成員減少
subType(子類型,1/群員離開 2/群員被踢 3/自己(即登錄號)被踢),sendTime,fromGroup,fromQQ(操作者QQ-僅subType為2、3時存在),beingOperateQQ

103 群事件-群成員增加
subType(子類型,1/管理員已同意 2/管理員邀請),sendTime,fromGroup,fromQQ(操作者QQ-即管理員QQ),beingOperateQQ

201 好友事件-好友已添加
subType,sendTime,fromQQ

301 請求-好友添加
subType,sendTime,fromQQ,msg(附言),responseFlag(反饋標(biāo)識-處理請求用)

302 請求-群添加
subType(子類型,1/他人申請入群 2/自己(即登錄號)受邀入群),sendTime,fromGroup,fromQQ,msg(附言),responseFlag(反饋標(biāo)識-處理請求用)

客戶端向服務(wù)器端發(fā)送消息的示例:
{ “act”: “106”, “QQID”: “1234”, “msg”: “我很好!”}
表示向qq號為1234的好友發(fā)送一條“我很好”的私聊消息。

act和各字段含義如下,注意區(qū)分大小寫,可能包含中文的字段,比如msg應(yīng)使用utf8編碼,如有返回數(shù)據(jù),也是utf8:

101, 發(fā)送群消息
groupid,msg

103, 發(fā)送討論組消息
discussid,msg

106, 發(fā)送私聊消息
QQID,msg

110, 發(fā)送贊
QQID

120, 置群員移除
QQID,groupid,rejectaddrequest

121, 置群員禁言
QQID,groupid,duration

122, 置群管理員
QQID,groupid,setadmin

123, 置全群禁言
QQID,groupid,enableban

124, 置匿名群員禁言
groupid,duration,anomymous

125, 置群匿名設(shè)置
groupid,enableanomymous

126, 置群成員名片
groupid,QQID,newcard

127, 置群退出(出于安全起見,該權(quán)限沒有開啟)
groupid,isdismiss

128, 置群成員專屬頭銜
groupid,QQID,duration,newspecialtitle

130, 取群成員信息(注,info返回的是base64字節(jié)流,需要經(jīng)過處理之后獲取信息,如果需要以json串方式獲取群成員信息請見25303)
groupid,QQID,nocache
返回json串字段:
error, act, return,info

131, 取陌生人信息(注,info返回的是base64字節(jié)流,需要經(jīng)過處理之后獲取信息,如果需要以json串方式獲取群成員信息請見25304)
QQID,nocache
返回json串字段:
error, act, return,info

140, 置討論組退出
discussid

150, 置好友添加請求
responseoperation,remark,responseflag

151, 置群添加請求
requesttype,responseoperation,reason,responseflag

另有五個LEMOC定義或提供的接口:

25301,獲取登錄QQ號
請求json串只有一個act
返回json串字段:
error, act, return,LoginQQ

25302,獲取登錄昵稱
請求json串只有一個act
返回json串字段:
error, act, return,LoginNick

25303,以json串方式返回群成員信息
groupid,QQID,nocache
返回json串字段:
error, act, return, groupid, QQID, username, nick, sex, age, area, jointime, lastsent, level_name, permission, unfriendly, title, titleExpiretime, nickcanchange (各字段具體含義詳見本帖19樓說明)

25304,以json串方式返回陌生人信息
QQID,nocache
返回json串字段:
error, act, return,QQID,nick,sex,age (各字段具體含義詳見本帖19樓說明)

25305,獲取指定QQ號所在的所有群id和群名稱
QQID(此QQID僅為標(biāo)記用,無論填寫的QQ為多少,返回的群列表都是酷Q當(dāng)前登錄QQ號所在的群)
返回json串字段:
error,act,return,QQID,GroupList
說明:
error為-1表示出錯,為0表示正常。
act為0,return為25305表示是對25305的響應(yīng)
QQID為你發(fā)送的指定QQ號,以確定是對哪一條消息的響應(yīng)
GroupList為一個json列表,示例如下,groupId為群號,groupName為群名稱:
[
{ “groupId”: “1111”, “groupName”: “黑手吹逼群” },
{ “groupId”: “2222”, “groupName”: “屁股圍觀群” },
{ “groupId”: “3333”, “groupName”: “法雞粉絲群” }
]

獲取指定QQ號的QQ頭像圖片,可見 Byniao丶Lonely 的這個帖子:分享一個QQ頭像地址

其中130,131,25301,25302,25303,25304,25305等七個消息會有返回數(shù)據(jù),返回數(shù)據(jù)的act為0,同時有一個return字段用于標(biāo)記數(shù)據(jù)是哪個消息的返回信息。
舉例來說,想要以獲取4321這個群內(nèi)QQ號為1234的用戶,需要構(gòu)造json串:

{ “act”: “25303”, “QQID”: “1234”, “groupid”: “4321”, “nocache”:“1” }

發(fā)送至LEMOC,之后會受到類似這樣的返回字符串:

{
“groupid”: “4321”,
“QQID”: “1234”,
“username”: “法芮爾·艾瑪莉”,
“nick”: “法雞”,
“sex”: “1”,
“age”: “32”,
“area”: “埃及”,
“jointime”: “1429035533”,
“l(fā)astsent”: “1479687648”,
“l(fā)evel_name”: “首席安全官”,
“permission”: “2”,
“unfriendly”: “0”,
“title”: “法老之鷹”,
“titleExpiretime”: “4294967295”,
“nickcanchange”: “1”,
“error”: “0”,
“act”: “0”,
“return”: “25303”
}

具體在使用的時候直接調(diào)用屬性/字段即可,因為他內(nèi)部自動將JSON轉(zhuǎn)換了.
例如:

try {JSON json = JSON.parse(msg);this.nick = String.format("%s", json.get("nick"));this.sex = String.format("%s", json.get("sex"));this.age = String.format("%s", json.get("age"));this.act = String.format("%s", json.get("act"));this.fromQQ = String.format("%s", json.get("fromQQ"));this.fromAnonymous = String.format("%s", json.get("fromAnonymous"));this.subType = String.format("%s", json.get("subtype"));this.sendTime = String.format("%s", json.get("time"));this.msg1 = String.format("%s", json.get("msg"));this.font = String.format("%s", json.get("font"));this.username = String.format("%s", json.get("username"));this.fromGroupName = String.format("%s", json.get("fromGroupName"));this.fromGroup = String.format("%s", json.get("fromGroup"));this.type = 2;} catch (ParserException var3) {var3.printStackTrace();} catch (IOException var4) {var4.printStackTrace();}

效果如下:

GitHub地址:https://github.com/aishenghuoaizhihao/kq-robot-msg.git

總結(jié)

以上是生活随笔為你收集整理的Java实现QQ机器人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人av电影在线播放 | 中文字幕无线码 | 性chinese天美传媒麻 | 在线免费黄色网 | 色姑娘久 | 91精品综合久久久久久 | 亚洲人成网址 | 女攻总攻大胸奶汁(高h) | 成人污污视频在线观看 | 密桃成熟时在线观看 | 亚洲第一综合 | 国产性―交一乱―色―情人 | www日本在线观看 | 欧美人妻一区二区 | 色91精品久久久久久久久 | 亚洲 欧美 激情 另类 | av网站一区二区 | 日日爱669| 国产偷国产偷av亚洲清高 | 人妖交videohd另类 | 成年人观看视频 | 国产情侣一区二区 | 日本人视频69式jzzij | 日日夜夜免费精品视频 | 国产又粗又长又硬免费视频 | 91视频在线免费观看 | 亚洲午夜精品久久久久久app | 黄色网页网站 | 天天色av | 免费在线观看av的网站 | 曰本无码人妻丰满熟妇啪啪 | 亚洲国产视频一区二区 | 99热一区二区三区 | 9cao| 久久九九免费视频 | 精品乱码久久久久久中文字幕 | 草草影院av | 99国产精品久久久 | 国产成人av在线播放 | 亚洲性猛交富婆 | 日本黄色录像片 | 91桃色网站| 国产精品国产一区 | 美日韩一区二区三区 | 天堂av资源在线 | 亚洲午夜精品 | 天天综合天天做 | 草色噜噜噜av在线观看香蕉 | 天堂资源在线播放 | 爱情岛av | 在线观看免费小视频 | 国产成人在线一区二区 | 国产一区二区三区久久久 | 91成年版 | 香蕉久久夜色精品升级完成 | 国模丫头1000人体 | 天堂中文在线最新 | 丝袜天堂 | 不许穿内裤随时挨c调教h苏绵 | 香蕉视频日本 | 国产又粗又黄的视频 | 欧美大浪妇猛交饥渴大叫 | 欧美男人又粗又长又大 | 欧美精品久久久久久久久老牛影院 | 日本熟妇成熟毛茸茸 | 性人久久久久 | 欧美高清视频一区二区三区 | 欧美高清hd19 | 午夜视频一区二区 | 日本伊人色 | 日本精品在线视频 | 一区二区亚洲视频 | 美国式禁忌1980| 色桃av| 91看篇| 91视色| 日本在线播放一区 | 日批视频免费 | av不卡免费观看 | 国产jzjzjz丝袜老师水多 | youjizz.com最新 | 男人天堂网在线 | 8x8ⅹ国产精品一区二区 | 91叼嘿视频| 亚洲综合首页 | 五月婷婷七月丁香 | 国产区视频在线观看 | 久久禁 | 色婷视频 | 亚洲视频精品一区 | 国产女主播自拍 | 国产香蕉av | av手机观看 | 美国一级片网站 | 婷婷激情久久 | 香蕉视频在线免费播放 | 黑人乱码一区二区三区av | 欧美激情亚洲综合 | 久久99精品国产91久久来源 |