Skip to content

示例

获取机器人信息

ts
/**
 * 获取机器人基本信息。
 */

import { 
Bot
} from 'fanbook-api-node-sdk'
const
YOUR_BOT_TOKEN
= '在此填入你的机器人令牌'
const
bot
= new
Bot
(
YOUR_BOT_TOKEN
)
console
.
log
('Information about your bot:', await
bot
.
getMe
())

订阅事件

ts
/**
 * 订阅所有机器人所在的频道、私聊的事件,如消息推送、消息撤回等。
 * 收到纯文本消息“取消”后,取消订阅。
 */

import { 
Bot
} from 'fanbook-api-node-sdk'
const
YOUR_BOT_TOKEN
= '在此填入你的机器人令牌'
const
CLOSING_MESSAGE
= '{"type":"text","text":"取消","contentType":0}' // 纯文本消息“取消”
const
bot
= new
Bot
(
YOUR_BOT_TOKEN
)
const
bus
= await
bot
.
listen
()
bus
.
on
('connect', (
ev
) => {
console
.
log
('Connection opened, id:',
ev
.
client_id
)
})
bus
.
on
('error',
e
=>
console
.
error
('Error occurred:',
e
))
bus
.
on
('push', (
ev
) => {
console
.
log
('Received push:',
ev
)
if (
ev
.action !== 'push') // 非消息推送
return if (
ev
.data.content ===
CLOSING_MESSAGE
) { // 收到“取消”消息
console
.
log
('Closing connection by message:',
ev
.data.message_id)
bus
.
emit
('close')
} })

私信消息转发

ts
/**
 * 私信收到文本消息后,原样转发到指定频道。
 */

import { 
Bot
,
ChannelType
} from 'fanbook-api-node-sdk'
const
YOUR_BOT_TOKEN
= '在此填入你的机器人令牌'
const
TARGET_CHANNEL
=
BigInt
('在此填入转发到的频道 ID')
const
bot
= new
Bot
(
YOUR_BOT_TOKEN
)
const
bus
= await
bot
.
listen
()
console
.
log
('Service started')
bus
.
on
('push', async (
ev
) => {
if (
ev
.action !== 'push') // 非新消息,不处理
return if (
ev
.data.channel_type !==
ChannelType
.
DMChannel
)
return // 非私聊,不处理 const
content
=
JSON
.
parse
(
ev
.data.content)
if (
content
.contentType !== 0)
return // 非纯文本,不处理 try { const
res
= await
bot
.
sendMessage
(
TARGET_CHANNEL
,
content
.text,
ev
.data.desc)
console
.
log
(`Forwarded ${
ev
.data.message_id} -> ${
res
.
message_id
}`)
} catch (
e
) {
console
.
error
(`Failed to forward message ${
ev
.data.message_id}:`,
e
)
} })

发送富文本

ts
/**
 * 发送富文本消息到指定频道。
 *
 * 注:机器人发送消息需要申请白名单。
 */

import type { 
RichTextNode
} from 'fanbook-api-node-sdk'
import {
Bot
,
RichText
} from 'fanbook-api-node-sdk'
const
YOUR_BOT_TOKEN
= '在此填入你的机器人令牌'
const
TARGET_CHANNEL
=
BigInt
('在此填入发送到的频道 ID')
const
bot
= new
Bot
(
YOUR_BOT_TOKEN
)
const
nodes
:
RichTextNode
[] = [{
insert
: '粗体\n',
attributes
: {
bold
: true },
}, {
insert
: '斜体\n',
attributes
: {
italic
: true },
}, {
insert
: '链接\n',
attributes
: {
link
: 'https://fanbook-api-sdk.js.org/' },
}, {
insert
: 'Hello World',
}, {
insert
: '\n',
attributes
: { 'code-block': true },
}] const
text
=
RichText
.
fromNodes
(
nodes
)
await
bot
.
sendMessage
(
TARGET_CHANNEL
,
text
.
toString
(), '点击查看富文本消息')

Released under the MIT License.