License: MIT Downloads Version

Node.js Kaomoji for Interactive Terminal Apps

Quick Start API Install

Make Your CLI Alive

askiimon adds kaomoji animations to your Node.js terminal apps. Perfect for CLI tools, scripts, and bots.

npm i askiimon

100+ Kaomojis

Animated faces for every mood

Zero Dependencies

Lightweight & fast

Terminal Ready

Perfect for CLI apps

Custom Training

Teach new moods

Quick Start {#quick-start}

const askiimon = require('askiimon')

// Birth your personal goblin
const goblin = askiimon.birth('happy', 'Hello!', 'nodejs')

console.log(goblin.kaomoji)  // Current face
console.log(goblin.mood)     // Current mood

// Give it mood swings
goblin.setMood('excited')

Real Examples

Loading Animation

const askiimon = require('askiimon')
const goblin = askiimon.birth('idle')

const moods = ['idle', 'thinking', 'happy']
let i = 0

const spin = setInterval(() => {
  goblin.setMood(moods[i % 3])
  process.stdout.clearLine()
  process.stdout.cursorTo(0)
  process.stdout.write(`${goblin.kaomoji} Loading ${i++}%`)
  if (i > 100) clearInterval(spin)
}, 100)

CLI Progress

const goblin = askiimon.birth('idle')

for (let i = 0; i <= 100; i += 10) {
  goblin.setMood(i > 50 ? 'happy' : 'thinking')
  process.stdout.clearLine()
  process.stdout.cursorTo(0)
  process.stdout.write(`${goblin.kaomoji} ${i}%`)
  await new Promise(r => setTimeout(r, 150))
}

Interactive CLI

const readline = require('readline')
const askiimon = require('askiimon')
const goblin = askiimon.birth('idle')

const rl = readline.createInterface({
  input: process.stdin, output: process.stdout
})

goblin.setShowWarnings(true)

rl.on('line', input => {
  const [cmd, ...args] = input.trim().split(' ')
  
  if (cmd === 'mood') goblin.setMood(args[0])
  else if (cmd === 'msg') goblin.setMessage(args.join(' '))
  else if (cmd === 'warn') goblin.setShowWarnings(!goblin.showWarnings)
  else if (cmd === 'learn') goblin.learnMood(args[0], args[1])
  else if (cmd === 'exit') process.exit()
  
  process.stdout.moveCursor(0, -2)
  process.stdout.clearLine(0)
  process.stdout.write(`${goblin.kaomoji} ${goblin.mood} | ${goblin.message || ''}`)
  process.stdout.write('\n$ ')
})

API {#api}

Full docs in sidebar!

Birth Initialization

const mon = askiimon.birth(state, message, env)
// Defaults:        'idle', '', 'nodejs'

Mood Swings

goblin.setMood('happy')
goblin.setMood('angry') 
goblin.setMood('sad')
goblin.setMood('excited')
goblin.setMood('crush')
goblin.setMood('laughing')

error handling

goblin.setShowWarnings(true)  // Enable warnings
goblin.setMood('puppy-eyes')  // Unknown mood

learn new Moods

goblin.learnMood('puppy-eyes', '(^◕.◕^)')

make it talk

goblin.setMessage('Hello World!')
goblin.setMessage('Processing...')

Methods

setMood('happy');
setMessage('text');
setShowWarning(true);
learnMood('name', 'face');
setIntervals(true, 5000);
//      boolean  interval

Kaomoji Gallery

^_^ happy
:( sad
>.< excited
(?_?) confused
>:( angry
O.O surprised

Custom Moods

// Train new moods
askiimon.learnMood('super', '(*≧ω≦*)')
askiimon.learnMood('cry', '(ಥ﹏ಥ)')

// Use them
askiimon.setMood('super')

Start Now!

npm i askiimon
node your-cli.js