對于命令,該插件分的比較細,具體要求請繼續往下看
> 提示:原始報文可以通過session.info來查看(dict)
首先我們先看一下信息的發送方式
## 信息回復方式
回復信息時,我們也有三個方式來回復:
1. 方法一:
```
session.send_text_msg(f'機器人回復啦on_command2')
```
2. 方法二:
```
from bot.kernel.bot_func import * # 這個寫在模塊級更好
info = session.info
robot_wxid = info['robot_wxid'] # info 的具體情況請查看文檔
from_wxid = info['from_wxid']
send_text_msg(robot_wxid, from_wxid, '你好')
```
3. 方法三:不推薦
```
from flask import current_app as bot
session = bot.session # 其實根本沒必要
, 因為這個session和參數的session是同一個對象
session.send_text_msg(f'機器人回復啦on_command2')
```
> 一般我們用到的是方法一,直接對給我們發信息的人
> 但是我們有時候也需要用到方法二,比如取所有有登錄的機器人,再比如我收到一條信息后,我不想回給他本人,而是要發送給其他人,這就要用到方法二了
> 示例中只演示了send_text_msg方法,其他方法可以查看api列表(暫時還沒寫)
# on_command
> 該裝飾器主要處理好友信息和群信息
* 對于文字信息,代碼格式為:
```
def register(bot_app):
@bot_app.on_command("命令名", ['別名1', '別名多用'])
def test(args, session):
pass
```
正如我們demo中的樣例說明,命令名和別名列表可以在不同`插件/函數`之間有交集,此時只要符合的命令都會去執行:
```
def register(bot_app):
@bot_app.on_command("命令名", ['別名1', '別名多用'])
def test1(args, session):
session.send_text_msg('機器人回復啦1')
@bot_app.on_command("命令名2", ['別名2', '別名多用'])
def test2(args, session):
send_text_msg('機器人回復啦2')
```
比如我們用微信給機器人發送`別名多用`,會分別收到`機器人回復啦1` 和 `機器人回復啦2`兩條回復
* 對于`圖片消息`、`語音消息`、`視頻`、`地理位置`信息(還有一部分暫時還沒想好怎么處理,暫時忽略),代碼格式分別為:
```
def register(bot_app):
@bot_app.on_command('media_image')
def media_image(msg, session):
# session.send_text_msg(f'機器人回復啦 media_image')
pass
@bot_app.on_command('media_audio')
def media_audio(msg, session):
# session.send_text_msg(f'機器人回復啦 media_audio')
pass
@bot_app.on_command('media_video')
def media_video(msg, session):
# session.send_text_msg(f'機器人回復啦 media_video')
pass
@bot_app.on_command('media_location')
def media_location(msg, session):
# session.send_text_msg(f'機器人回復啦 media_location')
pass
```
> 其中的裝飾器和函數聲明不能修改,不同的情況信息類型使用不同的命令名,無別名,可以和文字信息一樣寫在plugins下,但是建議寫在bot.plugins.fix.__init__下,統一管理
## on_request
> 該裝飾器主要處理好友請求和群成員增刪信息(群邀請在群command中的文本類型中)
```
def register(bot_app):
@bot_app.on_request("group_member_add")
def group_member_add(json_data, session):
# session.send_text_msg(f'機器人回復啦 group_member_add')
pass
@bot_app.on_request("group_member_decrease")
def group_member_decrease(json_data, session):
# session.send_text_msg(f'機器人回復啦 group_member_decrease')
pass
@bot_app.on_request("friend_verify")
def friend_verify(json_data, session):
# session.agree_friend_verify()
pass
```
> 裝飾器和參數session和之前非文字的on_command等的一樣
> json_data 為傳過來的json數據,其中包含比如加群人的信息(group_member_add中),dict類型,具體見api列表
## on_notice
> 該裝飾器主要處理接到轉賬、收款、好友變動、系統信息
```
def register(bot_app):
@bot_app.on_notice("received_transfer")
def received_transfer(json_data, session):
# money = session.info['money'] # 錢數,比如0.01
# session.accept_transfer()
pass
@bot_app.on_notice("scan_cash_money")
def scan_cash_money(json_data, session):
pass
@bot_app.on_notice("contacts_change")
def contacts_change(json_data, session):
pass
@bot_app.on_notice("sys_msg")
def sys_msg(json_data, session):
pass
```
> 裝飾器和參數和on_request中的一樣
## 機器人啟動等事件
> 這個請直接在`bot.plugins.fix._on_env`中編輯即可