Closed clacknya closed 2 years ago
fullmatch实现上走的是prefix,AAA.BBB首先触发了AAA的前缀,但不满足fullmatch的限制条件,所以不会进入处理函数。已触发prefix不会再触发其他触发器。
fullmatch实现上走的是prefix,AAA.BBB首先触发了AAA的前缀,但不满足fullmatch的限制条件,所以不会进入处理函数。已触发prefix不会再触发其他触发器。
-> “但不满足fullmatch的限制条件,所以不会进入处理函数”
不,实际是进入了 fullmatch 的处理函数,并把 .BBB
截断了
-> “但不满足fullmatch的限制条件,所以不会进入处理函数” 不,实际是进入了 fullmatch 的处理函数,并把
.BBB
截断了
没进入“你编写的”处理函数。
这就是现在的预期行为,尽管与“你的预期”可能不同。 今后会随 #193 一起修复。
-> “但不满足fullmatch的限制条件,所以不会进入处理函数” 不,实际是进入了 fullmatch 的处理函数,并把
.BBB
截断了没进入“你编写的”处理函数。
这就是现在的预期行为,尽管与“你的预期”可能不同。 今后会随 #193 一起修复。
进入我写的处理函数了,消息都发出去了[黄豆暴筋emoji]
请提供相关代码及日志
那我整理下
另外想问下有没有一个方便调试的模拟客户端,不需要真正登录QQ
另外想问下有没有一个方便调试的模拟客户端,不需要真正登录QQ
nonebot2提供的有(但hoshinobot暂不支持nb2),go-cqhttp似乎也有一个管理页面 这不属于本项目的范畴,请到相应项目讨论
hoshino_test/
└── test.py
test.py
from hoshino import Service, R, util
from hoshino.typing import CQEvent, MessageSegment
sv = Service('测试', enable_on_default=False)
@sv.on_fullmatch('AAA')
async def AAA(bot, ev: CQEvent):
await bot.send(ev, 'AAA')
@sv.on_suffix('.BBB')
@sv.on_prefix('doBBB')
async def BBB(bot, ev: CQEvent):
await bot.send(ev, 'BBB')
await bot.send(ev, ev.message.extract_plain_text())
QQ:
输入 AAA
回复 AAA
输入 AAA.BBB
回复 AAA
LOG:
[2021-09-05 03:42:32,160 nonebot] INFO: Self: 1957162568, Message -700564730 from *********@[群:*********]: 'AAA'
[2021-09-05 03:42:32,164 测试] INFO: Message -700564730 triggered AAA.
[2021-09-05 03:42:32,547 nonebot] INFO: Message -700564730 is ignored: Handled by Hoshino
[2021-09-05 03:42:36,825 nonebot] INFO: Self: 1957162568, Message 942692906 from *********@[群:*********]: 'AAA.BBB'
[2021-09-05 03:42:36,828 测试] INFO: Message 942692906 triggered AAA.
[2021-09-05 03:42:37,294 nonebot] INFO: Message 942692906 is ignored: Handled by Hoshino
原因应该是on_fullmatch截断了AAA,on_suffix又截断了.BBB,导致进入handler时消息为空,满足了fullmatch的条件。 修复 #178 引入的bug,将随 #193 一起修复。
你可以回退到 这个commit(8c3ee735213c7b18e1f4cb4c8514d494b274ab64) 来解决此问题。
在同时存在以下两种触发器时
输入
AAA.BBB
触发了fullmatch('AAA')
而不是on_suffix('.BBB')