API Documentation
Note
The content in this chapter is the API documentation for NeoBot script development, suitable for users with some programming foundation. If you are new to NeoBot, it is recommended to read Quick Start first.
Tip
Most interfaces and methods have been commented with functional descriptions to facilitate developer understanding and use. If you have any questions or suggestions, you are welcome to join the Official Communication Group for discussion.
ts
// filepath: plugins/NeoBot/scripts/NeoBot.d.ts
declare interface Enum {
toString(): string;
}
declare interface QQEvent {
getSelfId(): number
getTime(): number
}
declare interface GroupMessageEvent extends QQEvent {
getGroupId(): number
getMessageId(): number
getSenderId(): number
getRawMessage(): string
getJsonMessage(): string
}
declare interface GroupMessageEvent extends QQEvent {
getMessageId(): number
getSenderId(): number
getRawMessage(): string
}
declare interface FriendAddEvent extends QQEvent {
getUserId(): number
}
declare interface GroupDecreaseEvent extends QQEvent {
getUserId(): number
getOperatorId(): number
getGroupId(): number
}
declare interface GroupIncreaseEvent extends QQEvent {
getUserId(): number
getOperatorId(): number
getGroupId(): number
}
declare interface PokeEvent extends QQEvent {
getUserId(): number
getGroupId(): number
getTargetId(): number
}
declare interface FriendRequestEvent extends QQEvent {
getUserId(): number
getComment(): string
getFlag(): string
}
declare interface GroupRequestEvent extends QQEvent {
getUserId(): number
getGroupId(): number
getComment(): string
getFlag(): string
}
declare interface BasicInfo {
getUserId(): number
getNickname(): string
}
declare interface FriendInfo extends BasicInfo {
getRemark(): string
}
declare interface GroupInfo {
getGroupId(): number
getGroupName(): string
getGroupMemberCount(): number
getGroupMaxMemberCount(): number
}
declare interface GroupMemberInfo {
getGroupId(): number
getUserId(): number
getNickname(): string
getCard(): string
getAge(): number
getArea(): string
getJoinTime(): number
getLastSentTime(): number
getLevel(): string
getTitle(): string
getTitleExpireTime(): number
getCardChangeable(): boolean
getRole(): Enum
getSex(): Enum
}
declare interface QQ {
register(eventName: string, callback: (arg: QQEvent) => void): void
sendGroupMessage(groupId: number, message: string): void
sendPrivateMessage(userId: number, message: string): void
renameGroupMember(groupId: number, userId: number, newName: string): void
muteGroupMember(groupId: number, userId: number, duration: number): void
muteAllGroupMember(groupId: number): void
unMuteAllGroupMember(groupId: number): void
kickGroupMember(groupId: number, userId: number): void
approveGroupRequest(flag: string, type: string): void
rejectGroupRequest(flag: string, type: string): void
rejectFriendRequest(flag: string): void
approveFriendRequest(flag: string): void
setGroupSpecialTitle(groupId: number, userId: number, title: string, duration: number): void
setGroupWholeBan(groupId: number, enable: boolean): void
recallMessage(messageId: number): void
getGroupMemberList(groupId: number, callback: (arg: BasicInfo[]) => void): void
getGroupMemberInfo(groupId: number, userId: number, callback: (arg: GroupMemberInfo) => void): void
getGroupList(callback: (arg: GroupInfo[]) => void): void
getFriendList(callback: (arg: FriendInfo[]) => void): void
getGroupInfo(groupId: number, callback: (arg: GroupInfo) => void): void
}
declare const qq: QQ
declare interface LoginEvent {
getName(): string
disallow(reason: string): void
}
declare interface JoinEvent extends Player {}
declare interface QuitEvent extends Player {}
declare interface ChatEvent {
getPlayer(): Player
getMessage(): string
disallow(): void
}
declare interface Player {
getName(): string
sendMessage(message: string): void
kick(message: string): void
}
declare interface Game {
register(eventName: string, callback: (arg: any[]) => void): void;
}
declare const gameEvent: Game
declare interface CommandSender {
getName(): string
sendMessage(message: string): void
hasPermission(permission: string): boolean
}
declare interface GameCommand {
onCommand(callback: (sender: CommandSender, args: string[]) => void): void;
}
declare const gameCommand: GameCommand
declare interface Config {
getString(node: string): string
getDouble(node: string): number
getInt(node: string): number
getBoolean(node: string): boolean
has(node: string): boolean
put(node: string, value: any): void // 该方法并不将 put 的对象持久化
getKeys(): string[]
getObject(node: string): Config
getArray(node: string): Config[]
getStringArray(node: string): string[]
getNumberArray(node: string): number[]
getMessage(node: string): string
addOption(node: string, defaultValue: any): void
}
declare const generalConfig: Config
declare const messageConfig: Config
declare interface Logger {
info(message: string): void
warn(message: string): void
error(message: string): void
debug(message: string): void
trace(message: string): void
}
declare interface DatabaseCreator {
column(name: string, type: string, extraOptions: string): DatabaseCreator
execute(): void
}
declare interface Row {
getString(column: string): string
getInt(column: string): number
getLong(column: string): number
getFloat(column: string): number
getDouble(column: string): number
getBoolean(column: string): boolean
getObject(column: string): any
getObject<T>(column: string, type: T): T
}
declare interface Result {
map(): Row[]
getFirst(): Row
get(index: number): Row
}
declare interface DatabaseSelector {
all(): DatabaseSelector
column(column: string): DatabaseSelector
column(column: string[]): DatabaseSelector
where(column: string, value: any): DatabaseSelector
where(column: string, operator: string, value: any): DatabaseSelector
execute(): Result
}
declare interface DatabaseUpdater {
set(column: string, value: any): DatabaseUpdater
where(column: string, value: any): DatabaseUpdater
where(column: string, operator: string, value: any): DatabaseUpdater
execute(): void
}
declare interface DatabaseInserter {
column(column: string, value: any): DatabaseInserter
execute(): void
}
declare interface DatabaseModifier {
add(name: string, type: string): DatabaseModifier
add(name: string, type: string, extraOptions: string): DatabaseModifier
remove(name: string): DatabaseModifier
execute(): void
}
declare interface DatabaseDeleter {
where(column: string, value: any): DatabaseDeleter
where(column: string, operator: string, value: any): DatabaseDeleter
execute(): void
}
declare interface DatabaseTable {
drop(): void
delete(): DatabaseDeleter
select(columns: string[]): DatabaseSelector
create(): DatabaseCreator
update(): DatabaseUpdater
insert(): DatabaseInserter
alter(): DatabaseModifier
}
declare interface DatabaseStorage {
table(name: string): DatabaseTable
}
declare interface Player extends OfflinePlayer {
sendMessage(message: string): void
hasPermission(permission: string): boolean
kick(message: string): void
}
declare interface OfflinePlayer {
getName(): string
isOnline(): boolean
}
declare interface ScriptManager {
loadParser(parser: (arg: string) => string): void
parse(content: string): string
addJsMethod(name: string, method: (arg: any[]) => any): void
hasJsMethod(name: string): boolean
callJsMethod(name: string, ...args: any[]): any
}
declare const scriptManager: ScriptManager
declare interface HttpResult {
getStatusCode(): number
getResponseContent(): string
}
declare interface HttpRequest {
timeout(timeout: number): HttpRequest
connectTimeout(timeout: number): HttpRequest
readTimeout(timeout: number): HttpRequest
header(name: string, value: string): HttpRequest
connect(): HttpResult
}
declare interface HttpBuilder {
get(): HttpRequest
post(): HttpRequest
put(): HttpRequest
delete(): HttpRequest
}
declare interface Http {
builder(url: string): HttpBuilder
}
declare const http: Http
declare interface StorageProvider {
getStorage(): DatabaseStorage
getStorageType(): string
}
declare interface Scheduler {
submit(task: () => void): void
submitAsync(task: () => void): void
submit(task: () => void, delay: number): void
submitAsync(task: () => void, delay: number): void
submit(task: () => void, delay: number, period: number): void
submitAsync(task: () => void, delay: number, period: number): void
submit(scriptName: string, functionName: string, delay: number): void
submitAsync(scriptName: string, functionName: string, delay: number): void
submit(scriptName: string, functionName: string, delay: number, period: number): void
submitAsync(scriptName: string, functionName: string, delay: number, period: number): void
}
declare interface NeoBot {
getNeoLogger(): Logger
getStorageProvider(): StorageProvider
getScriptScheduler(): Scheduler
broadcast(message: string): void;
getOnlinePlayers(): Player[]
getOnlinePlayer(name: string): Player
getOfflinePlayer(name: string): OfflinePlayer
parsePlaceholder(message: string, player: Player): string
getPlatform(): string
}
declare const plugin: NeoBot- Save and close the configuration file.