java制作qq机器人(脚本实现和调用QQ官方api实现)
目錄
- 項目背景
- 成果展示
- 代碼實現
- 一.腳本實現
- 二.官方API實現
- 云服務器出現會出現的特殊情況
項目背景
新生涌入校園,需要招新用的網站和彩蛋。
為了解決彩蛋被挖去后實時通知問題,用腳本和官方api兩種方法制作了一個偽QQ機器人。
成果展示
當有人破解彩蛋時,后端返回破解時間、破解人的IP地址和提交的信息,機器人則發送彩蛋被破解的消息到QQ群中。
代碼實現
一.腳本實現
將QQ聊天窗口打開并放置在一個固定位置,腳本通過模擬鍵鼠操作點擊聊天窗口粘貼發送文本來完成需求。
import java.awt.Desktop; import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.InputEvent; import java.awt.event.KeyEvent;public class autoSend {public static void send(String arg) {try {//將光標移動到QQ聊天窗口并點擊Robot robot = new Robot(); //創建一個機器人robot.delay(2000); //暫停一下robot.mouseMove(150, 600); //將光標移動到相應位置robot.delay(1000); //再停一下robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); //按下鼠標左鍵(InputEvent.BUTTON1_DOWN_MASK)robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); //放松左鍵//將字符串粘貼并發送Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); //獲取系統的剪切板String str = arg; //設置字符串(這里用于傳入相應數據)StringSelection selection = new StringSelection(str); //構建String的數據類型clipboard.setContents(selection, null); //添加文本到系統剪切板//CTRL + V 復制到搜索框robot.keyPress(KeyEvent.VK_CONTROL);robot.keyPress(KeyEvent.VK_V);robot.keyRelease(KeyEvent.VK_CONTROL);robot.keyRelease(KeyEvent.VK_V);robot.delay(100);//按下回車robot.keyPress(KeyEvent.VK_ENTER);robot.keyRelease(KeyEvent.VK_ENTER);} catch (Exception e) {e.printStackTrace();}} }注意點:robot.mouseMove(150, 600); //將光標移動到相應位置
這句話中的坐標請按照自己電腦QQ聊天窗口位置自行更換。
二.官方API實現
http://wpa.qq.com/msgrd?v=3&uin=" + QQ + "&site=qq&menu=yes
此為QQ臨時聊天窗口的打開方式(需與該QQ是好友,不然會提示加好友)
了解之后用CMD打開瀏覽器,再用瀏覽器訪問該URL,再利用剪切板粘貼文本發送到QQ群中即可完成需求。但已開啟的瀏覽器不會自動關閉,我是選擇了殺死瀏覽器進程的方式達到關閉瀏覽器效果。
代碼如下
注意點:Runtime.getRuntime().exec("taskkill /F /IM 運行此文件.exe"); //殺死瀏覽器的進程,我這里的瀏覽器叫“運行此文件”
注意填自己瀏覽器的名字,記得做好文件的保存操作,殺錯進程基本逃不掉強制重啟,第一次測試時可刪除整個try,catch防止出錯。
若是要在QQ群中發送消息,則需將String url = "http://wpa.qq.com/msgrd?v=3&uin=" + QQ + "&site=qq&menu=yes";改成QQ群的URL。
QQ群API獲取
獲取方法:登錄后選好群即可獲得相應接口。
云服務器出現會出現的特殊情況
當斷開與云服務器的遠程鏈接后,云服務會進入屏保模式
且最小化會讓遠程桌面的會話切換到無圖形界面的模式
這兩種情況皆會使云服務器的鍵盤鼠標(UI自動化)失效,導致腳本無法正常使用。
解決辦法:
創建一個bat,放入以下代碼
雙擊運行即可退出云服務器
實現原理:用命令關閉遠程桌面,同時保留連接,使云服務器一直處于已連接的狀態。
參考文章:如何關閉遠程桌面后仍處于可交互狀態
總結
以上是生活随笔為你收集整理的java制作qq机器人(脚本实现和调用QQ官方api实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python身份证号真假验证_【趣味案例
- 下一篇: Unity设置鼠标指针图片