Skip to content

mohemohe/kokoro.io.js

Repository files navigation

kokoro.io.js (kokoro-io)

kokoro.io SDK for Node.js

breaking changes!

インストール

yarn add kokoro-io

TypeScriptで書かれたソースをpostinstallで自動的にビルドします。
型定義ファイルのd.tsも同時に出力します。

サンプル

stream

import kokoro from 'kokoro-io';
// または const kokoro = require('kokoro-io');

const kokoroIo = new kokoro.io({
  accessToken: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  autoReconnect: true, // Stream切断時に自動再接続を行う
});

kokoroIo.Stream.on(kokoroIo.Stream.Event.Connect, async () => {
  const memberships = await kokoroIo.Api.Memberships.getMemberships();
  const channelIds = kokoroIo.Helper.membershipsToChannelIds(memberships);
  kokoroIo.Helper.subscribeChatChannelByChannelIds(kokoroIo.Stream, channelIds);

  const postChannelId = kokoroIo.Helper.membershipsToChannelIdByChannelName(memberships, "kokoro.io/テスト用");
  if (postChannelId) {
    await kokoroIo.Api.Channels.postChannelMessage(postChannelId, {
      message: 'もこたんインしたお!',
    });
  }
});
kokoroIo.Stream.on(kokoroIo.Stream.Event.Chat, (message) => {
  console.log('message:', message);
});
kokoroIo.Stream.on(kokoroIo.Stream.Event.Event, (event) => {
  console.log('event:', event);
});
kokoroIo.Stream.connect();

bot

import kokoro from 'kokoro-io';
// または const kokoro = require('kokoro-io');

const kokoroIo = new kokoro.io({
  accessToken: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
});

(async () => {
  await kokoroIo.Api.Bot.postChannelMessage('JPERDC16M', {
    message: 'hi',
  });
})();

実装ステータス

Stream

npmのactioncableはイマイチ(今どきCoffeeScriptはちょっと)なので解析して疑似っています。
動作確認は行っているので繋がらないことはないと思いますが、Rails公式ではないので不安定かもしれません。

  • ActionCable
    • connect
    • disconnect
    • welcome
    • ping
    • confirm_subscription
    • reject_subscription
    • send
  • PriparaEvent
    • subscribed
    • message_created
    • ???

API

  • access_tokens

    • get /v1/access_tokens
    • post /v1/access_tokens
    • delete /v1/access_tokens/{access_token_id}
  • bot

    • post /v1/bot/channels/{channel_id}/messages
  • channels

    • get /v1/channels/{channel_id}
    • put /v1/channels/{channel_id}
    • put /v1/channels/{channel_id}/archive
    • put /v1/channels/{channel_id}/unarchive
    • get /v1/channels/{channel_id}/memberships
    • get /v1/channels
    • post /v1/channels
    • post /v1/channels/direct_message
    • put /v1/channels/{channel_id}/manage_members/{member_id}
    • get /v1/channels/{channel_id}/messages
    • post /v1/channels/{channel_id}/messages
  • devices

    • get /v1/devices
    • post /v1/devices
    • delete /v1/devices/{device_identifier}
  • memberships

    • get /v1/memberships
    • post /v1/memberships
    • delete /v1/memberships/{id}
    • put /v1/memberships/{id}
    • put /v1/memberships/{id}/join
  • messages

    • delete /v1/messages/{message_id}
  • profiles

    • get /v1/profiles
    • get /v1/profiles/me
    • put /v1/profiles/me

About

kokoro.io SDK for Node.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published