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