Skip to content

ppagent / QAnythingBot

Class: QAnythingBot

Defined in: src/bot/qanything.bot.ts:10

一个被动接收消息并响应的机器人

Extends

Constructors

Constructor

new QAnythingBot(_options): QAnythingBot

Defined in: src/bot/qanything.bot.ts:67

Parameters

_options

IQAnythingBotOptions

Returns

QAnythingBot

Overrides

BasicBot.constructor

Properties

debug

debug: DebugOptions<Record<PropertyKey, any>>

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:308

Debugging options for the current instance.

Inherited from

BasicBot.debug


isDebugEnabled

static isDebugEnabled: boolean

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:229

Toggle debug mode for all instances.

Default: true if the DEBUG environment variable is set to emittery or *, otherwise false.

Example

import Emittery from 'emittery';

Emittery.isDebugEnabled = true;

const emitter1 = new Emittery({debug: {name: 'myEmitter1'}});
const emitter2 = new Emittery({debug: {name: 'myEmitter2'}});

emitter1.on('test', data => {
	// …
});

emitter2.on('otherTest', data => {
	// …
});

emitter1.emit('test');
//=> [16:43:20.417][emittery:subscribe][myEmitter1] Event Name: test
//	data: undefined

emitter2.emit('otherTest');
//=> [16:43:20.417][emittery:subscribe][myEmitter2] Event Name: otherTest
//	data: undefined

Inherited from

BasicBot.isDebugEnabled


listenerAdded

readonly static listenerAdded: typeof listenerAdded

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:255

Fires when an event listener was added.

An object with listener and eventName (if on or off was used) is provided as event data.

Example

import Emittery from 'emittery';

const emitter = new Emittery();

emitter.on(Emittery.listenerAdded, ({listener, eventName}) => {
	console.log(listener);
	//=> data => {}

	console.log(eventName);
	//=> '🦄'
});

emitter.on('🦄', data => {
	// Handle data
});

Inherited from

BasicBot.listenerAdded


listenerRemoved

readonly static listenerRemoved: typeof listenerRemoved

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:283

Fires when an event listener was removed.

An object with listener and eventName (if on or off was used) is provided as event data.

Example

import Emittery from 'emittery';

const emitter = new Emittery();

const off = emitter.on('🦄', data => {
	// Handle data
});

emitter.on(Emittery.listenerRemoved, ({listener, eventName}) => {
	console.log(listener);
	//=> data => {}

	console.log(eventName);
	//=> '🦄'
});

off();

Inherited from

BasicBot.listenerRemoved


params

static params: IBotParams

Defined in: src/bot/qanything.bot.ts:11

Overrides

BasicBot.params

Accessors

options

Get Signature

get options(): IQAnythingBotOptions

Defined in: src/bot/qanything.bot.ts:76

Returns

IQAnythingBotOptions

Overrides

BasicBot.options


params

Get Signature

get params(): IBotParams

Defined in: src/bot/qanything.bot.ts:79

Returns

IBotParams

Overrides

BasicBot.params


supportConversationOnline

Get Signature

get supportConversationOnline(): boolean

Defined in: src/bot/qanything.bot.ts:82

是否支持线上存储会话信息,默认false。dify和fastgpt这类是支持的,需要设置为true

即采用本系统再带的历史会话的,设置为false,使用后端线上会话的,设置为true

Returns

boolean

Overrides

BasicBot.supportConversationOnline

Methods

anyEvent()

anyEvent(): AsyncIterableIterator<[PropertyKey, any]>

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:562

Get an async iterator which buffers a tuple of an event name and data each time an event is emitted.

Call return() on the iterator to remove the subscription.

In the same way as for events, you can subscribe by using the for await statement.

Returns

AsyncIterableIterator<[PropertyKey, any]>

Example

import Emittery from 'emittery';

const emitter = new Emittery();
const iterator = emitter.anyEvent();

emitter.emit('🦄', '🌈1'); // Buffered
emitter.emit('🌟', '🌈2'); // Buffered

iterator.next()
	.then(({value, done}) => {
		// done is false
		// value is ['🦄', '🌈1']
		return iterator.next();
	})
	.then(({value, done}) => {
		// done is false
		// value is ['🌟', '🌈2']
		// revoke subscription
		return iterator.return();
	})
	.then(({done}) => {
		// done is true
	});

Inherited from

BasicBot.anyEvent


bindMethods()

bindMethods(target, methodNames?): void

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:602

Bind the given methodNames, or all Emittery methods if methodNames is not defined, into the target object.

Parameters

target

Record<string, unknown>

methodNames?

readonly string[]

Returns

void

Example

import Emittery from 'emittery';

const object = {};

new Emittery().bindMethods(object);

object.emit('event');

Inherited from

BasicBot.bindMethods


clearHistoryRequested()

clearHistoryRequested(data): Promise<string>

Defined in: src/bot/basic.bot.ts:312

请求清除当前聊天对象的历史对话

Parameters

data

IAgentChatEventData

Returns

Promise<string>

如果有异常,返回异常说明。成功清除无需返回信息。

Inherited from

BasicBot.clearHistoryRequested


clearListeners()

clearListeners<Name>(eventName?): void

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:581

Clear all event listeners on the instance.

If eventName is given, only the listeners for that event are cleared.

Type Parameters

Name

Name extends PropertyKey

Parameters

eventName?

Name | readonly Name[]

Returns

void

Inherited from

BasicBot.clearListeners


emit()

Call Signature

emit<Name>(eventName): Promise<void>

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:496

Trigger an event asynchronously, optionally with some data. Listeners are called in the order they were added, but executed concurrently.

Type Parameters
Name

Name extends DatalessEventNames<Record<PropertyKey, any>>

Parameters
eventName

Name

Returns

Promise<void>

A promise that resolves when all the event listeners are done. Done meaning executed if synchronous or resolved when an async/promise-returning function. You usually wouldn't want to wait for this, but you could for example catch possible errors. If any of the listeners throw/reject, the returned promise will be rejected with the error, but the other listeners will not be affected.

Inherited from

BasicBot.emit

Call Signature

emit<Name>(eventName, eventData): Promise<void>

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:497

Trigger an event asynchronously, optionally with some data. Listeners are called in the order they were added, but executed concurrently.

Type Parameters
Name

Name extends PropertyKey

Parameters
eventName

Name

eventData

Record<PropertyKey, any>[Name]

Returns

Promise<void>

A promise that resolves when all the event listeners are done. Done meaning executed if synchronous or resolved when an async/promise-returning function. You usually wouldn't want to wait for this, but you could for example catch possible errors. If any of the listeners throw/reject, the returned promise will be rejected with the error, but the other listeners will not be affected.

Inherited from

BasicBot.emit


emitSerial()

Call Signature

emitSerial<Name>(eventName): Promise<void>

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:509

Same as emit(), but it waits for each listener to resolve before triggering the next one. This can be useful if your events depend on each other. Although ideally they should not. Prefer emit() whenever possible.

If any of the listeners throw/reject, the returned promise will be rejected with the error and the remaining listeners will not be called.

Type Parameters
Name

Name extends DatalessEventNames<Record<PropertyKey, any>>

Parameters
eventName

Name

Returns

Promise<void>

A promise that resolves when all the event listeners are done.

Inherited from

BasicBot.emitSerial

Call Signature

emitSerial<Name>(eventName, eventData): Promise<void>

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:510

Same as emit(), but it waits for each listener to resolve before triggering the next one. This can be useful if your events depend on each other. Although ideally they should not. Prefer emit() whenever possible.

If any of the listeners throw/reject, the returned promise will be rejected with the error and the remaining listeners will not be called.

Type Parameters
Name

Name extends PropertyKey

Parameters
eventName

Name

eventData

Record<PropertyKey, any>[Name]

Returns

Promise<void>

A promise that resolves when all the event listeners are done.

Inherited from

BasicBot.emitSerial


events()

events<Name>(eventName): AsyncIterableIterator<Record<PropertyKey, any>[Name]>

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:431

Get an async iterator which buffers data each time an event is emitted.

Call return() on the iterator to remove the subscription.

Type Parameters

Name

Name extends PropertyKey

Parameters

eventName

Name | readonly Name[]

Returns

AsyncIterableIterator<Record<PropertyKey, any>[Name]>

Examples

import Emittery from 'emittery';

const emitter = new Emittery();
const iterator = emitter.events('🦄');

emitter.emit('🦄', '🌈1'); // Buffered
emitter.emit('🦄', '🌈2'); // Buffered

iterator
	.next()
	.then(({value, done}) => {
		// done === false
		// value === '🌈1'
		return iterator.next();
	})
	.then(({value, done}) => {
		// done === false
		// value === '🌈2'
		// Revoke subscription
		return iterator.return();
	})
	.then(({done}) => {
		// done === true
	});

In practice you would usually consume the events using the for await statement. In that case, to revoke the subscription simply break the loop.

import Emittery from 'emittery';

const emitter = new Emittery();
const iterator = emitter.events('🦄');

emitter.emit('🦄', '🌈1'); // Buffered
emitter.emit('🦄', '🌈2'); // Buffered

// In an async context.
for await (const data of iterator) {
	if (data === '🌈2') {
		break; // Revoke the subscription when we see the value `🌈2`.
	}
}

It accepts multiple event names.

import Emittery from 'emittery';

const emitter = new Emittery();
const iterator = emitter.events(['🦄', '🦊']);

emitter.emit('🦄', '🌈1'); // Buffered
emitter.emit('🦊', '🌈2'); // Buffered

iterator
	.next()
	.then(({value, done}) => {
		// done === false
		// value === '🌈1'
		return iterator.next();
	})
	.then(({value, done}) => {
		// done === false
		// value === '🌈2'
		// Revoke subscription
		return iterator.return();
	})
	.then(({done}) => {
		// done === true
	});

Inherited from

BasicBot.events


getResponse()

getResponse(data, receiver, readyMessage, historyBotMessages?): Promise<IBotHistoryMessage>

Defined in: src/bot/basic.bot.ts:534

单聊时,每次对方发来消息都会调用该方法获取回复 群聊时,只有被@或者以指定名称开头呼叫时,才会被调用

该方法请务必等待回复完成后再异步返回。

Parameters

data

IAgentChatEventData

receiver

IMessageContentReceiver

readyMessage

IBotReadyMessage

historyBotMessages?

IBotHistoryMessage[]

当bot支持历史消息,且调用的agent开启了历史消息存储时会传入历史消息

Returns

Promise<IBotHistoryMessage>

返回本次回答的botMessage信息,以便存入历史消息

Inherited from

BasicBot.getResponse


init()

init(): Promise<void>

Defined in: src/bot/qanything.bot.ts:172

bot的初始化代码,支持预加载资源

Returns

Promise<void>

Overrides

BasicBot.init


listenerCount()

listenerCount<Name>(eventName?): number

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:586

The number of listeners for the eventName or all events if not specified.

Type Parameters

Name

Name extends PropertyKey

Parameters

eventName?

Name | readonly Name[]

Returns

number

Inherited from

BasicBot.listenerCount


off()

off<Name>(eventName, listener): void

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:459

Remove one or more event subscriptions.

Type Parameters

Name

Name extends string | number | symbol

Parameters

eventName

Name | readonly Name[]

listener

(eventData) => void | Promise<void>

Returns

void

Example

import Emittery from 'emittery';

const emitter = new Emittery();

const listener = data => {
	console.log(data);
};

emitter.on(['🦄', '🐶', '🦊'], listener);
await emitter.emit('🦄', 'a');
await emitter.emit('🐶', 'b');
await emitter.emit('🦊', 'c');
emitter.off('🦄', listener);
emitter.off(['🐶', '🦊'], listener);
await emitter.emit('🦄', 'a'); // nothing happens
await emitter.emit('🐶', 'b'); // nothing happens
await emitter.emit('🦊', 'c'); // nothing happens

Inherited from

BasicBot.off


offAny()

offAny(listener): void

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:569

Remove an onAny subscription.

Parameters

listener

(eventName, eventData) => void | Promise<void>

Returns

void

Inherited from

BasicBot.offAny


on()

on<Name>(eventName, listener, options?): UnsubscribeFunction

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:342

Subscribe to one or more events.

Using the same listener multiple times for the same event will result in only one method call per emitted event.

Type Parameters

Name

Name extends string | number | symbol

Parameters

eventName

Name | readonly Name[]

listener

(eventData) => void | Promise<void>

options?
signal?

AbortSignal

Returns

UnsubscribeFunction

An unsubscribe method.

Example

import Emittery from 'emittery';

const emitter = new Emittery();

emitter.on('🦄', data => {
	console.log(data);
});

emitter.on(['🦄', '🐶'], data => {
	console.log(data);
});

emitter.emit('🦄', '🌈'); // log => '🌈' x2
emitter.emit('🐶', '🍖'); // log => '🍖'

Inherited from

BasicBot.on


onAny()

onAny(listener, options?): UnsubscribeFunction

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:520

Subscribe to be notified about any event.

Parameters

listener

(eventName, eventData) => void | Promise<void>

options?
signal?

AbortSignal

Returns

UnsubscribeFunction

A method to unsubscribe.

Inherited from

BasicBot.onAny


once()

once<Name>(eventName): EmitteryOncePromise<Record<PropertyKey, any> & OmnipresentEventData[Name]>

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:489

Subscribe to one or more events only once. It will be unsubscribed after the first event.

Type Parameters

Name

Name extends string | number | symbol

Parameters

eventName

Name | readonly Name[]

Returns

EmitteryOncePromise<Record<PropertyKey, any> & OmnipresentEventData[Name]>

The promise of event data when eventName is emitted. This promise is extended with an off method.

Example

import Emittery from 'emittery';

const emitter = new Emittery();

emitter.once('🦄').then(data => {
	console.log(data);
	//=> '🌈'
});

emitter.once(['🦄', '🐶']).then(data => {
	console.log(data);
});

emitter.emit('🦄', '🌈'); // Logs `🌈` twice
emitter.emit('🐶', '🍖'); // Nothing happens

Inherited from

BasicBot.once


prepareMessage()

prepareMessage(data): Promise<IBotReadyMessage>

Defined in: src/bot/basic.bot.ts:332

仅仅对消息实现一个平台化的转换。 如果涉及到图片或者文件的上传,应该在用户提问的时候,识别提问中是否存在引用消息(即针对文件图片的提问,必须使用引用消息实现),如果存在,在获取回复之前执行上传等异步动作,而不是一收到文件消息就上传 该接口返回的IBotMessage的type应该都是user

Parameters

data

IAgentChatEventData

Returns

Promise<IBotReadyMessage>

Inherited from

BasicBot.prepareMessage


mixin()

static mixin(emitteryPropertyName, methodNames?): <T>(klass) => T

Defined in: node_modules/.pnpm/emittery@1.1.0/node_modules/emittery/index.d.ts:300

In TypeScript, it returns a decorator which mixins Emittery as property emitteryPropertyName and methodNames, or all Emittery methods if methodNames is not defined, into the target class.

Parameters

emitteryPropertyName

string | symbol

methodNames?

readonly string[]

Returns

<T>(klass): T

Type Parameters
T

T extends (...arguments_) => any

Parameters
klass

T

Returns

T

Example

import Emittery from 'emittery';

@Emittery.mixin('emittery')
class MyClass {}

const instance = new MyClass();

instance.emit('event');

Inherited from

BasicBot.mixin