API 文档
注意事项
- 连接状态: 确保机器人处于在线状态再调用API
- 权限检查: 某些操作需要管理员权限
- 频率限制: 避免过于频繁的API调用
- 错误处理: 建议对所有API调用进行错误处理
- 数据格式: 返回的数据格式可能随IIROSE更新而变化
- 网络异常: 处理网络超时和连接失败的情况
- 房间权限: 某些操作需要在特定房间或具有特定权限才能执行
获取 Bot 实例
以下所有 bot 均通过这样获取:
const bot = Object.values(ctx.bots).find(b => b.selfId === "your_bot_uid" || b.user?.id === "your_bot_uid");
if (!bot || bot.status !== Universal.Status.ONLINE) {
ctx.logger.error(`机器人离线或未找到。`);
return;
}
if (bot == null) return;
// 在这里继续使用 bot.方法
Bot 通用方法
sendMessage
向指定频道发送消息。
sendMessage(channelId: string, content: Fragment, guildId?: string, options?: SendOptions): Promise<string[]>
参数:
channelId
: 频道ID,格式为public:房间ID
或private:用户ID
content
: 消息内容,支持文本和图片guildId
: 可选的群组IDoptions
: 可选的发送选项
返回值: Promise<string[]>
- 发送成功的消息ID列表
示例:
// 发送公聊消息
await bot.sendMessage('public:room123abc456', 'Hello everyone!')
// 发送私聊消息
await bot.sendMessage('private:user123abc456', 'Hello!')
// 发送图片消息
await bot.sendMessage('public:room123abc456', h.image('https://example.com/image.jpg'))
sendPrivateMessage
向指定用户发送私信。
sendPrivateMessage(userId: string, content: Fragment, guildId?: string, options?: SendOptions): Promise<string[]>
参数:
userId
: 用户IDcontent
: 消息内容guildId
: 可选的群组IDoptions
: 可选的发送选项
返回值: Promise<string[]>
- 发送成功的消息ID列表
示例:
await bot.sendPrivateMessage('user123abc456', 'Hello private!')
getSelf
获取机器人自身信息。
getSelf(): Promise<Universal.User>
返回值: Promise<Universal.User>
- 机器人用户信息
示例:
const selfInfo = await bot.getSelf()
console.log('机器人名称:', selfInfo.name)
console.log('机器人ID:', selfInfo.id)
getUser
获取指定用户信息。
getUser(userId: string, guildId?: string): Promise<Universal.User>
参数:
userId
: 用户IDguildId
: 可选的群组ID
返回值: Promise<Universal.User>
- 用户信息对象
示例:
const userInfo = await bot.getUser('user123abc456')
console.log('用户名:', userInfo.name)
console.log('头像:', userInfo.avatar)
getMessage
获取指定频道中的特定消息详情。
getMessage(channelId: string, messageId: string): Promise<any | undefined>
参数:
channelId
: 频道IDmessageId
: 消息ID
返回值: Promise<any | undefined>
- 消息详情对象或undefined
示例:
const message = await bot.getMessage('public:room123abc456', 'msg_key_123')
deleteMessage
撤回指定频道中的特定消息。
deleteMessage(channelId: string, messageId: string): Promise<void>
参数:
channelId
: 频道IDmessageId
: 消息ID
返回值: Promise<void>
支持的撤回操作:
- 公共频道消息撤回:支持撤回自己发送的消息
- 私信消息撤回:支持撤回自己发送的私信
注意事项:
- 只能撤回自己发送的消息
- 撤回后会触发
message-deleted
事件 - 撤回有时间限制,过久的消息可能无法撤回
示例:
// 撤回公共频道消息
await bot.deleteMessage('public:room123abc456', 'msg_key_123')
// 撤回私信消息
await bot.deleteMessage('private:user123abc456', 'msg_key_456')
kickGuildMember
踢出群组成员。
kickGuildMember(guildId: string, userName: string, permanent?: boolean): Promise<void>
参数:
guildId
: 群组ID(房间ID)userName
: 要踢出的用户名permanent
: 是否永久踢出(可选)
返回值: Promise<void>
示例:
await bot.kickGuildMember('room123abc456', 'baduser')
muteGuildMember
禁言群组成员。
muteGuildMember(guildId: string, userName: string, duration: number, reason?: string): Promise<void>
参数:
guildId
: 群组ID(房间ID)userName
: 要禁言的用户名duration
: 禁言时长(毫秒),超过99999秒视为永久禁言reason
: 禁言原因(可选)
返回值: Promise<void>
示例:
// 禁言10分钟
await bot.muteGuildMember('room123abc456', 'spammer', 10 * 60 * 1000, '刷屏')
// 永久禁言
await bot.muteGuildMember('room123abc456', 'baduser', 999999 * 1000, '违规')
Bot Internal
Bot 的 internal
属性提供了更多高级管理功能:
bot.internal: InternalType
房间管理
kick
踢出用户。
bot.internal.kick(kickData: { username: string }): void
参数:
kickData
: 踢人数据对象username
: 要踢出的用户名
返回值: void
示例:
bot.internal.kick({ username: 'baduser' })
setMaxUser
设置房间最大人数。
bot.internal.setMaxUser(data: { maxMember: number }): void
参数:
data
: 设置数据对象maxMember
: 最大人数
返回值: void
示例:
bot.internal.setMaxUser({ maxMember: 50 })
whiteList
白名单操作。
bot.internal.whiteList(data: { username: string; time: string; intro?: string }): void
参数:
data
: 白名单数据对象username
: 用户名time
: 时间intro
: 说明(可选)
返回值: void
示例:
bot.internal.whiteList({
username: 'vipuser',
time: '24h',
intro: 'VIP用户'
})
音乐管理
cutOne
切歌(单首)。
bot.internal.cutOne(data: { id?: string }): void
参数:
data
: 切歌数据对象id
: 歌曲ID(可选,不提供则切当前歌曲)
返回值: void
示例:
// 切指定歌曲
bot.internal.cutOne({ id: 'song123' })
// 切当前歌曲
bot.internal.cutOne({})
cutAll
清空播放列表。
bot.internal.cutAll(): void
返回值: void
示例:
bot.internal.cutAll()
Bot 的 internal
属性提供了更多高级功能:
bot.internal: InternalType
用户相关
getUserByName
通过用户名获取用户信息。
bot.internal.getUserByName(name: string): Promise<Universal.User | undefined>
参数:
name
: 用户名
返回值: Promise<Universal.User | undefined>
- 用户信息对象或undefined
示例:
const user = await bot.internal.getUserByName('张三')
if (user) {
console.log('用户ID:', user.id)
console.log('用户名:', user.name)
}
getUserById
通过用户ID获取用户信息。
bot.internal.getUserById(id: string): Promise<Universal.User | undefined>
参数:
id
: 用户ID
返回值: Promise<Universal.User | undefined>
- 用户信息对象或undefined
示例:
const user = await bot.internal.getUserById('user123abc456')
if (user) {
console.log('用户名:', user.name)
console.log('头像:', user.avatar)
}
initUserData
初始化用户数据缓存。
bot.internal.initUserData(): void
返回值: void
说明: 此方法会重新构建用户名和ID的映射关系,通常在获取用户列表后自动调用。
getUserList
获取用户列表。
bot.internal.getUserList(): Promise<UserInfo[]>
返回值: Promise<UserInfo[]>
- 用户信息列表
getUserProfile
获取用户详细资料。
bot.internal.getUserProfile(userId: string): Promise<UserProfile>
参数:
userId
: 用户ID
返回值: Promise<UserProfile>
- 用户详细资料
房间相关
moveRoom
切换房间。
bot.internal.moveRoom(moveData: { roomId: string; roomPassword?: string }): Promise<void>
参数:
moveData
: 移动数据对象roomId
: 目标房间IDroomPassword
: 房间密码(如果需要)
返回值: Promise<void>
示例:
// 移动到公开房间
await bot.internal.moveRoom({ roomId: 'newroom123456' })
// 移动到加密房间
await bot.internal.moveRoom({
roomId: 'privateroom123456',
roomPassword: 'room_password'
})
moveRoomStart
房间移动开始函数(内部使用)。
bot.internal.moveRoomStart(): Promise<void>
返回值: Promise<void>
说明: 此方法一般不需要手动调用,在 moveRoom
方法中会自动调用。
getRoomInfo
获取当前房间信息。
bot.internal.getRoomInfo(): Promise<RoomInfo>
返回值: Promise<RoomInfo>
- 房间信息
经济系统
getBank
获取银行信息。
bot.internal.getBank(): Promise<BankInfo>
返回值: Promise<BankInfo>
- 银行信息
payment
进行支付操作。
bot.internal.payment(uid: string, money: number, message?: string): void
参数:
uid
: 收款用户IDmoney
: 支付金额message
: 支付留言(可选)
返回值: void
示例:
// 转账给用户,附带留言
bot.internal.payment('user123abc456', 100, '感谢支持!')
// 转账给用户,不附带留言
bot.internal.payment('user123abc456', 50)
stockBuy
购买股票。
bot.internal.stockBuy(amount: number): void
参数:
amount
: 购买数量
返回值: void
示例:
// 购买100股
bot.internal.stockBuy(100)
stockSell
出售股票。
bot.internal.stockSell(amount: number): void
参数:
amount
: 出售数量
返回值: void
示例:
// 出售50股
bot.internal.stockSell(50)
stockGet
获取股票信息。
bot.internal.stockGet(callback: (stockData: StockSession) => void): void
参数:
callback
: 回调函数,接收股票数据
返回值: void
示例:
// 获取股票信息
bot.internal.stockGet((stockData) => {
console.log('股票价格:', stockData.price)
console.log('涨跌:', stockData.change)
console.log('成交量:', stockData.volume)
// 可以发送消息
if (stockData.send) {
stockData.send({
public: {
message: `当前股价: ${stockData.price} 花瓣`
}
})
}
})
音乐相关
makeMusic
播放音乐或视频。
bot.internal.makeMusic(musicInfo: MusicOrigin): void
参数:
musicInfo
: 音乐信息对象
MusicOrigin 类型定义:
interface MusicOrigin {
type: 'music' | 'video'
name: string
signer: string
cover: string
link: string
url: string
duration: number
bitRate: number
color: string
lyrics: string
origin: 'netease' | 'bilibili' | 'null' | 'undefined' | null
}
返回值: void
示例:
// 播放音乐
bot.internal.makeMusic({
type: 'music',
name: '歌曲名称',
signer: '歌手名称',
cover: 'https://example.com/cover.jpg',
link: 'https://example.com/music.mp3',
url: 'https://example.com/music.mp3',
duration: 240, // 秒
bitRate: 320,
color: '#66ccff',
lyrics: '歌词内容',
origin: 'netease'
})
// 播放视频
bot.internal.makeMusic({
type: 'video',
name: '视频标题',
signer: '作者',
cover: 'https://example.com/thumbnail.jpg',
link: 'https://example.com/video.mp4',
url: 'https://example.com/video.mp4',
duration: 180,
bitRate: 1000,
color: '#ff6666',
lyrics: '',
origin: 'bilibili'
})
playMusic
播放音乐。
bot.internal.playMusic(musicInfo: MusicInfo): Promise<boolean>
参数:
musicInfo
: 音乐信息对象
返回值: Promise<boolean>
- 播放是否成功
getMediaList
获取媒体列表。
bot.internal.getMediaList(): Promise<MediaInfo[]>
返回值: Promise<MediaInfo[]>
- 媒体信息列表
弹幕相关
damaku
发送弹幕。
bot.internal.damaku(damakuData: { message: string; color: string }): void
参数:
damakuData
: 弹幕数据对象message
: 弹幕内容color
: 弹幕颜色(十六进制颜色代码)
返回值: void
示例:
// 发送红色弹幕
bot.internal.damaku({
message: 'Hello World!',
color: '#ff0000'
})
// 发送蓝色弹幕
bot.internal.damaku({
message: '这是一条弹幕',
color: '#0066ff'
})
sendDamaku
发送弹幕(旧版本兼容方法)。
bot.internal.sendDamaku(message: string, color?: string): Promise<boolean>
参数:
message
: 弹幕内容color
: 弹幕颜色(可选)
返回值: Promise<boolean>
- 发送是否成功
示例:
await bot.internal.sendDamaku('Hello World!', '#ff0000')