A small tool to make it easy to create an interactive chatbot.
$ npm install promptees
returnPrompt()
is now an async function, to support the loop feature.- Added new feature: loop
- Removed all dependencies.
- Added
PrompteesOpts
type to exported member. - Typescript fixes.
isPrompting()
is now splitted into two,isPrompting()
andreturnPrompt()
. Now it's possible to check first and then do some processing before resolving towaitForResponse()
.returnPrompt()
is behaving the same asisPrompting()
in the previous version. So you should renameisPrompting()
toreturnPrompt()
if you have a working code using the previous version.- Typescript intellisense is now possible using generic type parameter.
- Added new feature: timeout.
// test.ts
import Prompt from 'promptees';
const promptees = new Prompt({
timeout: 3000,
onTimeout: () => 'timed out',
loopWhen: (input) => input === 'roll',
onLoop: (input) => console.log('<BOT>', `What's ${input}?`),
});
async function onMessage(user: string, message: string) {
console.log(`<${user}>`, message);
if (promptees.isPrompting(user)) {
return await promptees.returnPrompt(user, message);
}
console.log('<BOT>', 'Hi, tell me your age.');
const age = await promptees.waitForResponse(user);
if (age === 'timed out') {
console.log('<BOT>', 'Are you still there?');
} else if (+age < 18) {
console.log('<BOT>', 'You are not allowed');
} else {
console.log('<BOT>', 'You are allowed.');
}
}
(async () => {
onMessage('Lina', 'Hi bot');
await pause(500);
onMessage('Lina', '14');
await pause(500);
console.log('============');
onMessage('Jeff', 'Hello');
await pause(5000);
console.log('============');
onMessage('Rick', 'roll');
await pause(500);
onMessage('Rick', 'roll');
await pause(500);
onMessage('Rick', 'roll');
await pause(500);
onMessage('Rick', 'roll');
await pause(500);
onMessage('Rick', '35');
})();
Output:
<Lina> Hi bot
<BOT> Hi, tell me your age.
<Lina> 14
<BOT> You are not allowed
============
<Jeff> Hello
<BOT> Hi, tell me your age.
<BOT> Are you still there?
============
<Rick> roll
<BOT> Hi, tell me your age.
<Rick> roll
<BOT> What's roll?
<Rick> roll
<BOT> What's roll?
<Rick> roll
<BOT> What's roll?
<Rick> 35
<BOT> You are allowed.