Skip to content

Node.js

适用于任何 Node.js 环境,内置强大且易用的 Agent 库,涵盖了绝大多数常用微信操作。

TIP

始终推荐你使用 Wechaty,而不是直接使用 Agent,Wechaty 能极大的减少你的心智负担。

安装

bash
pnpm add -D @wechatferry/agent
bash
yarn add -D @wechatferry/agent
bash
npm install -D @wechatferry/agent

使用

ts
import { 
WechatferryAgent
} from '@wechatferry/agent'
// 创建 agent 实例 const
agent
= new
WechatferryAgent
()
// 监听微信消息
agent
.
on
('message', (
msg
) => {
console
.
log
(
msg
)
}) // 启动 wcf
agent
.
start
()

更多说明请阅读API 参考

Core 和 SDK

Core 内置了 Socket 连接,并通过 SDK 直接与 dll 交互,同时还支持自定义 SDK。

TIP

如果你不用 Wechaty,我也始终推荐你使用 agent,而不是 core,除非你知道你在干什么。

Core

如果你想要自己写常用操作,那么你也可以直接使用 core,其用法与 agent 几乎无异,更多请参考 API 文档

bash
pnpm add -D @wechatferry/core
bash
yarn add -D @wechatferry/core
bash
npm install -D @wechatferry/core
ts
import { 
Wechatferry
} from '@wechatferry/core'
// 创建 wcf 实例 const
wcf
= new
Wechatferry
()
// 监听微信消息
wcf
.
on
('message', (
msg
) => {
console
.
log
(
msg
)
}) // 启动 wcf
wcf
.
start
()

更多说明请阅读API 参考

SDK

此外,core 包还直接导出了 SDK,若你想与 dll 直接交互,你也可以直接使用:

ts
import { 
WechatferrySDK
} from '@wechatferry/core'
// 创建 sdk 实例 const
sdk
= new
WechatferrySDK
()
// 监听微信消息
sdk
.
on
('message', (
msg
) => {
console
.
log
(
msg
)
}) // 启动 wcf
sdk
.
init
()
// 打开 `prot+1` 端口并接受消息
sdk
.
startRecvMessage
()

当然,无需使用内置的 SDK,你可以自定义 SDK 直接连接现有的 wcf TCP 服务也是没问题的:

ts
import 
EventEmitter
from 'node:events'
import type {
Buffer
} from 'node:buffer'
import type { WechatferrySDKEventMap, WechatferrySDKImpl } from '@wechatferry/core' import { wcf } from '@wechatferry/core' import {
Socket
} from '@rustup/nng'
import type {
MessageRecvDisposable
} from '@rustup/nng'
export class
MySDK
extends
EventEmitter
<WechatferrySDKEventMap> implements WechatferrySDKImpl {
private
messageRecvDisposable
?:
MessageRecvDisposable
init
(
debug
?: boolean,
port
?: number) {
// init your sdk return true }
destroy
() {
// stop your sdk this.
stopRecvMessage
()
}
startRecvMessage
() {
this.
messageRecvDisposable
=
Socket
.
recvMessage
(this.
msgUrl
,
undefined
, (
err
: unknown | undefined,
buf
: Buffer) => {
if (
err
) {
throw
err
} const
rsp
= wcf.
Response
.
deserialize
(
buf
)
this.
emit
('message',
rsp
.
wxmsg
)
}) }
stopRecvMessage
() {
this.
messageRecvDisposable
?.
dispose
()
this.
messageRecvDisposable
=
undefined
} get
isReceiving
() {
return !!this.
messageRecvDisposable
} get
cmdUrl
() {
return 'tcp://...' } get
msgUrl
() {
return 'tcp://...' } } const
sdk
= new
MySDK
()

更多说明请阅读API 参考