Skip to content

wechaty/bot5-assistant

Repository files navigation

BOT5 Club Assistant Bot Plugin

NPM Version NPM Powered by Wechaty

BOT5 Meeting Assistant BOT powered by RSVP.ai & Wechaty & XState.

BOT5 Club

Blog post: 基于Wechaty+轻语实现会议主持助手,崔安颀,Oct 29, 2021, BOT5 Club

BOT5 Club Seminar Flow Chart

flowchart LR
  Initializing --> Preparing
  Preparing --> Talking
  Talking --> Membershiping
  Membershiping --> Chairshiping
  Chairshiping --> Afterparty
  Afterparty --> Minuting
Loading

0. Initializing

graph LR
  subgraph Initializing
    Loading --> Restoring
  end
Loading
journey
  title Initializing
  section Loading
    Load state from storage: 3: Bot
  section Restoring
    Set context: 4: Bot
    Set state: 5: Bot
  section Saving
    Save state to storage: 3: Bot
Loading

1. Preparing

graph LR
  subgraph Preparing
    Calling --> Publicity
    Publicity --> Registering
    Registering --> Checkining
    Checkining --> Starting
  end
Loading
journey
  title Preparing
  section Calling
    Call for chairs/talks: 3: Bot
    Set chairs: 4: Admin
    Set talks: 5: Chair
    Set schedule: 4: Chair
  section Publicity
    Send post image twice per day: 3: Bot
  section Registering
    Register: 3: Member
    Send register image: 4: Bot
  section Checkining
    8/4/2/1h: 3: Bot
    20/10m: 3: Bot
    Check in: 3: Member
    Send checkin image: 4: Bot
  section Starting
    Start: 4: Bot
Loading

2. Talking

graph LR
  subgraph Talking
    Introducing --> Welcoming
    Welcoming --> Retrospecting
    Retrospecting --> Presenting
  end
Loading
journey
  title Talking
  section Introducing
    Introcude Club: 3: Bot
    Introduce Talks: 4: Admin
  section Welcoming
    Welcome newcomers: 4: Chair
    Self introduction: 3: Newcomer
  section Retrospecting
    Retrospect past seminar: 3: Chair
  section Presenting
    Present talks: 4: Speaker
Loading

3. Membershiping

graph LR
  subgraph Membershiping
    Thanking --> Upgrading
    Upgrading --> Brainstorming
    Brainstorming --> Photoing
  end
Loading
journey
  title Membershiping
  section Thanking
    Thank speakers: 3: Chair
    Send certificate image: 4: Bot
  section Upgrading
    Newcomer upgrade: 3: Newcomer
    Trail member upgrade: 3: Member
    Member upgrade: 4: Member
    Trail chair upgrade: 4: Chair
    Chair upgrade: 5: Chair
  section Brainstorming
    Brainstorm: 3: Member
  section Photoing
    Photo: 4: Member
Loading

4. Chairshiping

graph LR
  subgraph Chairshiping
    Rotating --> Summerizing
    Summerizing --> Roasting
    Roasting --> Pledging
    Pledging --> Photoing
  end
Loading
journey
  title Chairshiping
  section Rotating
    Naming: 3: Member
    Voting: 3: Member
    Deciding: 4: Member
  section Summerizing
    Summerize: 3: Chair
  section Roasting
    Roast: 2: Member
  section Pledging
    Pledge: 3: Vice
  section Photoing
    Photo: 4: Member
Loading

5. Afterparty

graph LR
  subgraph Afterparty
    Housekeeping --> Drinking
    Drinking --> Photoing
    Photoing --> Paying
  end
Loading
journey
  title Afterparty
  section Housekeeping
    Housekeep: 3: Member
  section Drinking
    Drink: 5: Member
  section Photoing
    Photo: 5: Member
  section Paying
    Pay: 3: Member
Loading

6. Minuting

graph LR
  subgraph Minuting
    Recording --> Uploading
    Uploading --> Blogging
  end
Loading
journey
  title Minuting
  section Downloading
    Download video: 3: Bot
  section Uploading
    Upload video: 3: Bot
  section Blogging
    Post blog PR: 4: Bot
Loading

See also: BOT5 Club Chair Manual

Getting Started

Step 1: Install

npm install wechaty-bot5-assistant --save

Step 2: Make a bot

$ vim mybot.js

import { WechatyBuilder } from 'wechaty'
import { Bot5Assistant } from 'wechaty-bot5-assistant'

const bot = WechatyBuilder.build()

bot.use(Bot5Assistant({
  room: [
    /^BOT5/,
  ]
}))
.on('scan', (url, code) => console.log(`Scan QR Code to login: ${code}\n${url}`))
.on('login', user => console.log(`User ${user} logged in`))
.start()

Step 3: Run

node mybot.js

Options

const DEFAULT_CONFIG = {
  // Which room(s) you want the bot to work with.
  // Can be a RegExp (for topic) or a function (filter room instance)
  // E.g. room: function (room) { room.topic().indexOf('我的') > -1 }
  room: [/BOT5/i, 'room_id@chatroom'],
}

RSVP.ai

RSVP.ai is a machine-learning company that provides deep natural language understanding services for conversation-styled applications. It grew out of a collaboration between Tsinghua University and University of Waterloo.

RSVP.ai is a small and dedicated team making the smart machines today become the thinking machines tomorrow.

Finate State Machine (FSM)

It's a finite state machine, which means it has a finite number of states.

Huan(202110): the above line is auto generated by GitHub Pilot.

We are trying to use XState to implement the FSM and using FSM to manage our meeting state transitions.

Currently we are just getting started, you can learn more about the BOT5 Club Meeting FSM at https://wechaty.github.io/bot5-assistant/

Resources

Projects

Papers

History

main v0.3 (Nov 29, 2021)

  1. add stt() for convert speech to text

v0.2 (Oct 29, 2021)

  1. Code init in Bot Friday Club meeting
  2. Code clean for integrating with Friday BOT
  3. Add XState FSM support

Author

Reference

Silk to Text

Copyright & License

  • Code & Docs © 2021-now Wechaty Contributors
  • Code released under the Apache-2.0 License
  • Docs released under Creative Commons