sailor0913

须知少时凌云志,曾许人间第一流

阻止wechaty插件消息传递

发布于 # 微信机器人

情景说明

async def main() -> None:
    bot = MyBot()
    bot.use([
        Test1Plugin(),
        Test2Plugin(),
        Test3Plugin()
    ])
await bot.start()

这样你的业务代码就分离到了Test1、2、3中,但是实际运行中你会发现当你的机器人触发了Test1中的关键词后,wechaty仍然会把消息继续向Test2、3中继续传递,这就造成了资源的浪费

解决方法

# pip install wechaty_plugin_contrib -i https://pypi.tuna.tsinghua.edu.cn/simple
from wechaty_plugin_contrib.message_controller import message_controller

class DingDongPlugin(WechatyPlugin):
    @message_controller.may_disable_message
    async def on_message(self, msg: Message) -> None:
        if msg.text() == "ding":
            await msg.say("dong")
            message_controller.disable_all_plugins(msg)