【python】nonebot--QQ接口库
Nonebot框架開發酷Q機器人插件
nonebot官方文檔:https://none.rclab.tk/guide/
cqhttp官方文檔:https://cqhttp.cc/docs/4.10/#/
裝飾器
—命令識別
@on_command()
-
name 定義命令名稱 字符串類型
-
aliases=(cmd1,cmd2,…)元組類型的命令別名
-
permission= perm.權限
權限可選值:
PRIVATE_FRIEND 私人好友
PRIVATE_GROUP 私人群
PRIVATE_DISCUSS 私人討論組
PRIVATE_OTHER 私人其他
PRIVATE 私人
DISCUSS 討論組
GROUP_MEMBER 群成員
GROUP_ADMIN 群管理
GROUP_OWNER 群主
GROUP 群
SUPERUSER 超級管理員
EVERYBODY 任何人 -
only_to_me = True 為True在群里喚醒機器人需要@,False則時不需要
-
privileged = False 默認值為False 是否開啟特權,在存在會話的情況下也運行該裝飾器下的函數
-
shell_like= False 默認值False 是否用類shell語法來分割命令后面的參數
—事件監聽
@on_notice()
可選參數:
- group_upload 事件名:群文件上傳
- group_admin 事件名:
group_admin.set、group_admin.unset 事件子類型,分別表示設置和取消管理員 - group_decrease 事件名:群成員減少
group_decrease.leave、group_decrease.kick、group_decrease.kick_me 事件子類型,分別表示主動退群、成員被踢、登錄號被踢 - group_increase 事件名:群成員增加
group_increase.approve、group_increase.invite 事件子類型,分別表示管理員已同意入群、管理員邀請入群 - friend_add 事件名:好友添加
—消息控制
@on_message()
—請求處理
@on_request()
可選參數:
- friend 好友添加請求
- group 群添加請求(自身是群主或管理員)
消息處理
—發送回復消息
session.send()
參數:
- message 要發送的消息內容
- at_sender 回復時是否@消息發送者 默認為False
- ensure_private 確定消息來源是否為私聊 默認為False
- ignore_failure 是否忽略可能發送的錯誤 默認為True
- **kargs 默認為None
—發送私聊消息
send_private_msg()
參數:
- user_id number - 對方 QQ 號
- message message - 要發送的內容
- auto_escape boolean false 消息內容是否作為純文本發送(即不解析 CQ 碼),只在 message字段是字符串時有效
—發送群消息
send_group_msg()
參數:
- group_id number - 群號
- message message - 要發送的內容
- auto_escape boolean false 消息內容是否作為純文本發送(即不解析 CQ 碼),只在 message
字段是字符串時有效
—發送討論組消息
send_discuss_msg()
參數:
- discuss_id number - 討論組 ID(正常情況下看不到,需要從討論組消息上報的數據中獲得)
- message message - 要發送的內容
- auto_escape boolean false 消息內容是否作為純文本發送(即不解析 CQ 碼),只在 message
字段是字符串時有效
—發送消息
send_msg()
參數:
- message_type string - 消息類型,支持
private、group、discuss,分別對應私聊、群組、討論組,如不傳入,則根據傳入的 *_id 參數判斷 - user_id number - 對方 QQ 號(消息類型為 private 時需要)
- group_id number - 群號(消息類型為 group 時需要)
- discuss_id number - 討論組 ID(消息類型為 discuss 時需要)
- message message - 要發送的內容
- auto_escape boolean false 消息內容是否作為純文本發送(即不解析 CQ 碼),只在 message
字段是字符串時有效
—撤回消息
ps:需要安裝酷Q pro版才能實現該功能
delete_msg()
參數:
- message_id number (int32)
—發送好友贊
ps:需要安裝酷Q pro版才能實現該功能
send_like()
參數:
- user_id number - 對方 QQ 號
- times number 贊的次數默認值為1,每個好友每天最多 10 次
—處理加好友請求
set_friend_add_request()
參數:
- flag string - 加好友請求的 flag(需從上報的數據中獲得)
- approve boolean true 是否同意請求
- remark string 空 添加后的好友備注(僅在同意時有效)
—處理加群請求/邀請
set_group_add_request()
參數:
- flag string - 加群請求的 flag(需從上報的數據中獲得)
- sub_type 或 type string - add 或 invite,請求類型(需要和上報消息中的 sub_type 字段相符)
- approve boolean true 是否同意請求/邀請
- reason string 空 拒絕理由(僅在拒絕時有效)
—發送文字
#文件位置:插件py文件中 發送其他類型消息同理 from nonebot import CommandSession,on_command @on_command('你好') async def auto_reply(session:CommandSession):await session.send('[轉賬] 0.01元轉賬需收款,請使用手機QQ查看。',at_sender=True)—發送表情
QQ表情
[CQ:face,id=表情id]emoji表情
[CQ:emoji,id=表情id]原創表情
[CQ:bface,id=表情id]小表情
[CQ:sface,id=表情id]酷Q [CQ:face,*] 表情代碼對應表:https://cqp.cc/t/36910
酷Q [CQ:emoji,*] emoji表情代碼對應表:https://cqp.cc/t/15827
—發送圖片
ps:需要安裝酷Q pro版才能實現該功能
[CQ:image,file=文件名]—發送語音
ps:需要安裝酷Q pro版才能實現該功能
[CQ:record,file=文件名]—分享音樂
[CQ:music,id=209249583,type=qq]—發送窗口抖動
戳一戳
session.send('[CQ:shake,id=1]')— @某人
{1}為被@的群成員帳號。若該參數為all,則@全體成員(次數用盡或權限不足則會轉換為文本)。 舉例:[CQ:at,qq=123456]— 發送猜拳魔法表情
[CQ:rps,type={1}] {1}為猜拳結果的類型,暫不支持發送時自定義。該參數可被忽略。 1 - 猜拳結果為石頭 2 - 猜拳結果為剪刀 3 - 猜拳結果為布— 發送擲骰子魔法表情
[CQ:dice,type={1}] {1}對應擲出的點數,暫不支持發送時自定義。該參數可被忽略。— 匿名發消息(僅支持群消息使用)
[CQ:anonymous,ignore={1}] 本CQ碼需加在消息的開頭。 當{1}為true時,代表不強制使用匿名,如果匿名失敗將轉為普通消息發送。 當{1}為false或ignore參數被忽略時,代表強制使用匿名,如果匿名失敗將取消該消息的發送。 舉例: [CQ:anonymous,ignore=true] [CQ:anonymous]— 發送音樂
[CQ:music,type={1},id={2}] {1}為音樂平臺類型,目前支持qq、163、xiami {2}為對應音樂平臺的數字音樂id 注意:音樂只能作為單獨的一條消息發送 舉例: [CQ:music,type=qq,id=422594](發送一首QQ音樂的“Time after time”歌曲到群內) [CQ:music,type=163,id=28406557](發送一首網易云音樂的“桜咲く”歌曲到群內)— 發送音樂自定義分享
[CQ:music,type=custom,url={1},audio={2},title={3},content={4},image={5}] {1}為分享鏈接,即點擊分享后進入的音樂頁面(如歌曲介紹頁)。 {2}為音頻鏈接(如mp3鏈接)。 {3}為音樂的標題,建議12字以內。 {4}為音樂的簡介,建議30字以內。該參數可被忽略。 {5}為音樂的封面圖片鏈接。若參數為空或被忽略,則顯示默認圖片。 注意:音樂自定義分享只能作為單獨的一條消息發送— 發送鏈接分享
[CQ:share,url={1},title={2},content={3},image={4}] {1}為分享鏈接。 {2}為分享的標題,建議12字以內。 {3}為分享的簡介,建議30字以內。該參數可被忽略。 {4}為分享的圖片鏈接。若參數為空或被忽略,則顯示默認圖片。 注意:鏈接分享只能作為單獨的一條消息發送群組管理
—群組踢人
set_group_kick()
—群組單人禁言
set_group_ban()
—群組匿名用戶禁言
set_group_anonymous_ban()
—群組全員禁言
set_group_whole_ban()
—群組設置管理員
set_group_admin()
—群組匿名
set_group_anonymous()
—設置群名片
set_group_card()
—退出群組
set_group_leave()
—設置群組專屬頭銜
set_group_special_title()
—退出討論組
set_discuss_leave()
—獲取群列表
get_group_list()獲取群成員信息 get_group_member_info()
—獲取群成員列表
get_group_member_list()
—獲取群信息
_get_group_info()
—獲取會員信息
_get_vip_info()
—獲取群公告
_get_group_notice()
–發布群公告
_send_group_notice()
數據獲取
—獲取登錄號信息
get_login_info()
返回數據:
- user_id number (int64) QQ 號
- nickname string
—獲取陌生人信息
get_stranger_info()
參數:
- user_id number - QQ 號
- no_cache boolean false 是否不使用緩存(使用緩存可能更新不及時,但響應更快)
返回數據:
- user_id number (int64) QQ 號
- nickname string 昵稱
- sex string 性別,male 或 female 或 unknown
- age number (int32) 年齡
—獲取 Cookies
get_cookies()
返回數據:
- cookies string
—獲取 CSRF Token
get_csrf_token()
返回數據:
- token number (int32) CSRF Token
—獲取 QQ 相關接口憑證
get_credentials()
返回數據:
- cookies string Cookies值
- csrf_token number(int32) CSRF Token
—獲取語音
get_record()
參數:
- file string - 收到的語音文件名(CQ 碼的 file 參數),如
0B38145AA44505000B38145AA4450500.silk - out_format string - 要轉換到的格式,目前支持 mp3、amr、wma、m4a、spx、ogg、wav、flac
- full_path boolean false 是否返回文件的絕對路徑(Windows 環境下建議使用,Docker 中不建議)
返回數據:
- file string 轉換后的語音文件名或路徑,如 0B38145AA44505000B38145AA4450500.mp3,如果開啟了
full_path,則如
C:\Apps\CoolQ\data\record\0B38145AA44505000B38145AA4450500.mp3
—獲取圖片
get_image()
參數:
- file string - 收到的圖片文件名(CQ 碼的 file 參數),如
6B4DE3DFD1BD271E3297859D41C530F5.jpg
返回數據:
- file string 下載后的圖片文件路徑,如
C:\Apps\CoolQ\data\image\6B4DE3DFD1BD271E3297859D41C530F5.jpg
—獲取插件運行狀態
get_status()
—獲取 酷Q 及 HTTP API 插件的版本信息
get_version_info()
返回數據:
- app_initialized boolean HTTP API 插件已初始化
- app_enabled boolean HTTP API 插件已啟用
- plugins_good object HTTP API 的各內部插件是否正常運行
- app_good boolean HTTP API 插件正常運行(已初始化、已啟用、各內部插件正常運行)
- online boolean 當前 QQ 在線,null 表示無法查詢到在線狀態
- good boolean HTTP API 插件狀態符合預期,意味著插件已初始化,內部插件都在正常運行,且 QQ 在線
—檢查是否可以發送圖片
can_send_image()
返回數據:
- yes boolean 是或否
—檢查是否可以發送語音
can_send_record()
返回數據:
- yes boolean 是或否
—重啟 HTTP API 插件
set_restart_plugin()
參數:
- delay number 0 要延遲的毫秒數,如果默認情況下無法重啟,可以嘗試設置延遲為 2000 左右
—清理數據目錄
clean_data_dir()
- 參數: data_dir string - 收到清理的目錄名,支持 image、record、show、bface
—清理插件日志
clean_plugin_log()
—重啟 酷Q,并以當前登錄號自動登錄(需勾選快速登錄)
_set_restart()
參數:
字段名 數據類型 默認值 說明
- clean_log boolean false 是否在重啟時清空 酷Q 的日志數據庫(log*.db)
- clean_cache boolean false 是否在重啟時清空 酷Q 的緩存數據庫(cache.db)
- clean_event boolean false 是否在重啟時清空 酷Q 的事件數據庫(eventv2.db)
— 檢查更新
.check_update()
—對事件執行快速操作
.handle_quick_operation()
—獲取 data 目錄中的文件的接口
除了上面的 API,插件還提供一個簡單的靜態文件獲取服務,請求方式只支持 HTTP 的 GET,URL 路徑為 /data/
加上要請求的文件相對于 酷Q data 目錄的路徑。例如,假設 酷Q 主目錄在 C:\Apps\CQA,則要獲取
C:\Apps\CQA\data\image\ABCD.jpg.cqimg 的話,只需請求
/data/image/ABCD.jpg.cqimg,響應內容即為要請求的文件。 和上面的其它請求一樣,如果配置文件中指定了 access
token,則每次請求需要在請求頭中加入驗證頭 Authorization: Bearer your-token。
另外,請求的路徑中不允許出現 …,即上級目錄的標記,以防止惡意或錯誤的請求到系統中的其它文件。 本功能默認情況下不開啟,在配置文件中將
serve_data_files 設置為 yes 或 true 即可開啟,見 配置文件說明。
總結
以上是生活随笔為你收集整理的【python】nonebot--QQ接口库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: data fastboot 擦除_fas
- 下一篇: python写dnf脚本怎么过检测_py