Awesome
wechaty-puppet
Picture Credit: https://www.shareicon.net
Abstract(Base) Class of Puppet Providers for Wechaty Framework.
This module is part of the Wechaty Framework SDK.
Learn more at:
- Wiki: https://github.com/wechaty/wechaty/wiki/Puppet
- Issue: https://github.com/wechaty/wechaty/issues/1167
Documentation
Wechaty Puppet Provider Interface Documentation can be found at https://wechaty.github.io/wechaty-puppet/typedoc/classes/puppet.html
Automatica Generated by TypeDoc
Example
PuppetMock: https://github.com/wechaty/wechaty-puppet-mock
The above puppet provider is just for mocking and easy to understand. It will be a good starter when you want to develope a new puppet by yourself for fullfil your need, for example, connect Wechaty with Wechat Official Account.
Providers
- PuppetPadchat iPad API via Protocol Server, created by @lijiarui
- PuppetIoscat iPhone App Hook API, created by @linyimin-bupt
- PuppetWechat4u Web API via HTTP, created by @huan
- PuppetPuppeteer Web API via Browser, created by @huan
- PuppetService gRPC Proxy via Chatie.io(PaaS - Puppets as a Service), created by @huan
Dependencies
FileBox
(npm modulefile-box
) MUST be imported fromwechaty-puppet
because all the Wechaty Framework needs to checkinstanceof FileBox
, we must be sure allFileBox
is the same version.MemoryCard
(npm modulememory-card
) MUST be imported fromwechaty-puppet
because all the Wechaty Framework needs to checkinstanceof MemoryCard
, we must be sure allMemoryCard
is the same version.
Peer Dependence
Puppet
(npm module wechaty-puppet
) itself must be a peer Dependencies for all the Puppet Providers, and should only be installed via Wechaty because all Puppet Providers should share the same Puppet Base Class with Wechaty, we must be sure all Puppet
is the same version.
Wechaty Puppet Toolsets
1. Using SwitchState
You can get to know the puppet start/stop state from the state
property:
puppet.state.on() === 'pending'
will be true when the puppet is startingpuppet.state.on() === true
will be true when the puppet is startedpuppet.state.off() === 'pending'
will be true when the puppet is stoping- `puppet.state.off() === true' will be true when the puppet is stopped
Learn more about the puppet.state at https://github.com/huan/state-switch
2. Using Brolog
Using Brolog to output necessary log messages.
2.1 Get log from Brolog
import { log } from 'brolog'
2.2 Log Format
log.verbose('ModuleName', 'methodName() Your Verbose Message Here')
log.silly('ModuleName', 'methodName() Your Silly Message Here')
2.3 Log Level
Brolog has five log levels, it should be used and follow the following rules:
Log Level | What does it means | Usage in Puppet |
---|---|---|
log.silly() | There's some detail debug information | Can be used in everywhere as you like |
log.verbose() | There's some debug information | Should be used at the beginning of every method() |
log.info() | ||
log.warn() | There's a Coverable Error | Should not be used unless we have to |
log.error() | There's a Un-covered Error | Should not be used unless we have to |
3. Using LRU Cache
Set the max size for wechaty entities in LRU Cache.
Env Name | What does it means |
---|---|
WECHATY_PUPPET_LRU_CACHE_SIZE_CONTACT | The max cache size for contact, default value 3000 |
WECHATY_PUPPET_LRU_CACHE_SIZE_FRIENDSHIP | The max cache size for friendship, default value 100 |
WECHATY_PUPPET_LRU_CACHE_SIZE_MESSAGE | The max cache size for message, default value 500 |
WECHATY_PUPPET_LRU_CACHE_SIZE_ROOM | The max cache size for room, default value 500 |
WECHATY_PUPPET_LRU_CACHE_SIZE_ROOM_INVITATION | The max cache size for room invitation, default value 100 |
WECHATY_PUPPET_LRU_CACHE_SIZE_ROOM_MEMBER | The max cache size for room member, default value 30000 |
Resources
Pure Function
- Functional Programming Concepts: Pure Functions
- What Are Pure Functions And Why Use Them?
- Master the JavaScript Interview: What is a Pure Function?
Mixin
History
master v1.0 - Initial Release
v0.49 (Oct 2021)
AddError
interface toEventErrorPayload
, and make.data
optional- Using Mixin to extend
Puppet
v0.43 (Aug 28, 2021)
- Support ES Modules
v0.16 (Sep 2019)
Works with the following Puppet Providers:
- wechaty-puppet-puppeteer
- wechaty-puppet-padchat
- wechaty-puppet-mock
- wechaty-puppet-wechat4u
v0.0.1 (Jun 2018)
- Define the Abstract Puppet Layer for Wechaty
- Seperate code from Wechaty
Author
Copyright & License
- Code & Docs © 2018-now Huan LI <zixia@zixia.net>
- Code released under the Apache-2.0 License
- Docs released under Creative Commons