对于命令,该插件分的比较细,具体要求请继续往下看
> 提示:原始报文可以通过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`中编辑即可