• Stars
    star
    245
  • Rank 165,304 (Top 4 %)
  • Language
    TypeScript
  • License
    GNU Affero Genera...
  • Created over 4 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔧 Mirai(QQ Bot) JavaScript/TypeScript SDK for Node.js/Browser

mirai-ts

docs Compatible Version npm GitHub Codacy Badge

mirai-api-http 的 JavaScript/TypeScript SDK,附带声明文件,拥有良好的注释和类型提示。可运行于 Node.js 与浏览器端。

shindo-ai.gif

除了 Node.js,它还兼容浏览器端。这意味着你可以使用它来开发 Web 界面与你的 mirai 机器人进行交互。(可以参考还在咕的 el-bot-web

如何使用

自行配置好你的 miraimirai-api-http,确保 localhost:你配置的端口号/about 是可访问的。 settings.ymladapterSettingshttpws 是必须的。

npm install mirai-ts
# yarn add mirai-ts

# 尝试新版本(比如 ES Module)
npm i mirai-ts@next

由于 mirai-api-http 2.x 已经稳定,mirai-ts@latest 为 2.x 版本,如果您想使用 mirai-api-http 1.x,请安装 [email protected] 版本。

快速开始

JavaScript

示例代码

node demo/index.js

TypeScript

示例代码

ts-node demo/index.ts

Browser

基于 mirai-ts 开发面向浏览器端的应用程序时,您还需要安装 events 以在浏览器端替代 Node.js 原生 events 模块。

pnpm i events
# yarn add events
# npm install events mirai-ts

Why Typescript & mirai-ts?

Make JavaScript Great Again!

  • 更友好的提示:TypeScript 配合 VSCode 代码提示有奇效。
  • 更清晰的语义:函数命名与 mirai-api-http 保持一致。
  • 更易懂的注释:因为会用到 QQ 机器人 99.99% 是国人,所以是全中文注释。
  • 更优雅的结构:看起来是在自吹自擂,但自我感觉良好。
  • 更广泛的平台:支持 Node.js 与浏览器端,以及 WebSocket。

简介

结构

types 目录下为对应类型定义

  • api: API 发送与响应
    • response: API 响应格式
  • contact: 用户信息格式(如 Friend, Member, Group 等)
  • event-type: 事件类型
  • message-type: 消息类型

工具类

const { Message, Logger, check, MessageType, EventType } = require('mirai-ts')
import { EventType, Logger, Message, MessageType, check } from 'mirai-ts'

详情请参见 API 文档

Message

  • Message: 生成对应消息的辅助方法,如生成艾特某人的消息 Message.At(qq)

消息链应当是一个数组,如 messageChain = [Message.At(qq), Message.Plain('来点色图')]

Logger

简单的日志工具,当然你可以自由使用其他工具替代它。

import { Logger } from 'mirai-ts'
// 你可以自定义你的前缀
const logger = new Logger({ prefix: '[mirai-ts]' })
logger.success('We are free!')

check

消息匹配与检测。

如判断消息链是否有艾特某人:

const { check } = require('mirai-ts')
// msg 为消息链 MessageChain
// qq 为 QQ 号
check.isAt(msg, qq)

// or just
msg.isAt(qq)
// 留空则判断是否艾特机器人自身

示例模版

  • el-bot:你可以参考它的使用方式,你也可以直接使用它。

el-bot 展示了整个 mirai-ts 的使用流程,并内置了一些如自动应答、转发、命令行、RSS 等常用功能(默认插件),开箱即用。

你只需要一些自定义的配置,而不再需要编写繁琐的脚本内容。

但这并不是束缚,在插件系统中你仍然可以调用机器人所有的上下文,并通过编写插件的形式快速实现你想要的功能。

更多请参见文档 el-bot | El Bot Docs

开发

# clone 本项目
git clone https://github.com/YunYouJun/mirai-ts
cd mirai-ts

# 安装 mirai-console-loader,放置于 `mirai-ts/mcl` 文件夹下
# https://github.com/iTXTech/mirai-console-loader
mkdir mcl
cd mcl
# 修改链接下载 mcl 对应版本
wget https://github.com/iTXTech/mirai-console-loader/releases/download/v2.1.1/mcl-2.1.1.zip
unzip mcl-2.1.1.zip
chmod +x mcl
./mcl

# 使用 mcl 安装 mirai-api-http
# https://github.com/project-mirai/mirai-api-http#%E5%AE%89%E8%A3%85mirai-api-http
./mcl --update-package net.mamoe:mirai-api-http --channel stable-v2 --type plugin
# mcl 自动更新
./mcl -u

cd ..
pnpm mcl

# 参考 https://github.com/project-mirai/mirai-login-solver-selenium 获取 ticket

# 开发(监听文件变动并构建)(打开新终端窗口)
pnpm dev

# 启动 demo(打开新终端窗口)
pnpm demo

More Repositories

1

cook

🍲 好的,今天我们来做菜!OK, Let's Cook!
Vue
5,043
star
2

air-conditioner

❄️ Yun Portable Air Conditoner. 云空调,便携小空调,为你的夏日带去清凉!
TypeScript
3,429
star
3

hexo-theme-yun

☁️ A fast & light & lovely theme for Hexo. 一个对可爱自以为是的 Hexo 主题。
Stylus
1,237
star
4

valaxy

🌌 Next Generation Static Blog Framework (Beta) 下一代静态博客框架(支持页面/配置热重载)
TypeScript
722
star
5

advjs

🎮 ADV.JS Web AVG Engine 面向未来与前端的文字冒险游戏引擎(WIP)
TypeScript
267
star
6

sese-engine-ui

🔍 Sese engine ui. 色色搜索引擎 UI
Vue
258
star
7

ai-sfc

AI 春联 / Spring Festival Couplets
Vue
255
star
8

web-resume

📄 Display your resume by web. 可以被打印成 PDF 的 Web 简历。
Vue
221
star
9

cocos-creator-joystick

🕹 Cocos Creator Joystick Demo 虚拟摇杆
TypeScript
213
star
10

el-bot

🤖 基于 Node.js,可配置、可自定义插件的 QQ 机器人框架。(Refactoring...)
TypeScript
160
star
11

vtuber

👻 Make a vtuber from one. 从一开始的 Vtuber
TypeScript
146
star
12

char-dust

📝 Convert image to char. 在线图片转字符画~
TypeScript
134
star
13

nnrm

🔧 New nrm (NPM registry manager). Use smaller dependencies.
TypeScript
131
star
14

yunyoujun.github.io

🌐 云游君的小站,一个自言自语的地方。
TypeScript
123
star
15

yun

☁️ 小云设定资源大公开!
85
star
16

kotodama

💬 掌控言灵的魔法,一个优雅的纯静态评论管理后台
Vue
75
star
17

give-me-money

💰 I'm so cute. Please give me money. 我很可爱,请给我钱。
Vue
60
star
18

wc-github-corners

:octocat: A web component for github corners. Can be used anywhere.
TypeScript
44
star
19

tauri-vite-vue

🌰 Vite + Vue Starter for Tauri.
TypeScript
31
star
20

girid

❤ 动画角色喜好表生成器 Lovely girls grid. Inspired by anime-grid.
TypeScript
31
star
21

sponsors

💰 Sponsors of @YunYouJun. 云游君的赞助者们
TypeScript
27
star
22

cucthesis

CUC 硕士毕业论文 LaTeX 模版
TeX
26
star
23

birthday

🎂 Happy Birthday To You!
Vue
26
star
24

augma

🎨 AR UI Framework 刀剑神域:序列之争
TypeScript
22
star
25

ak-ui

🔫 UI components for arknights. Deving... 在咕了
SCSS
22
star
26

export-nideriji

🔧 导出《你的日记》JSON 格式
JavaScript
20
star
27

element-theme-ink

✒️ Element theme ink. (Support Element-Plus)
SCSS
18
star
28

friends

👥 Friends of @YunYouJun.
JavaScript
17
star
29

vitepress-theme-you

🎮 A theme for vitepress. Sister of hexo-theme-yun.
Vue
17
star
30

YunYouJun

🤡 About Me.
TypeScript
16
star
31

explosions

My daily 「Explosion」 about HTML & CSS & JavaScript.
Vue
16
star
32

pixi-painter

🎨 Painter canvas based on PixiJS.
TypeScript
14
star
33

evil-eye

👀 邪王真眼,在浏览器端跟踪你的眼部观察内容
TypeScript
12
star
34

fe-notes

📒 小云的八股文前端笔记
TypeScript
12
star
35

star-markdown-css

🌟 Markdown Css about violet wandering planet.
SCSS
11
star
36

valine-to-disqus

⏩ Migrate from valine to disqus. 将 Valine 评论数据转换为 Disqus 可导入的格式。
JavaScript
11
star
37

vue-d3-demo

🌰 Vue + Vite + D3 Demo
Vue
11
star
38

vuepress-plugin-google-adsense

Google adsense plugin for vuepress
JavaScript
10
star
39

utils

🔧 Custom utils. 供日常使用的脚本小工具。
TypeScript
10
star
40

dotfiles

🔧 My dotfiles.
Shell
9
star
41

se-notes

软件工程应试笔记 | Software Engineering Notes
9
star
42

teachers-day

给教师节的老师们写个网页,顺带试试 Vue3。
Vue
9
star
43

color-dust

Image theme color extraction. 色尘知有数,劫烬岂无年。
Vue
8
star
44

unplugin-glsl

🔌 Import, inline (and compress) GLSL shader files
TypeScript
7
star
45

hexo-widget-tree

🌲 Tree preview widget for hexo.
JavaScript
7
star
46

gaussian-blur

✍️ Handwritten Gaussian Blur for JavaScript. 手写一个高斯模糊。
Vue
7
star
47

LeetCode

💻 LeetCode Practice
Python
6
star
48

.github

:octocat: The default community health files for all my repos on GitHub
6
star
49

hexo-tag-common

🏷️ Common tags for hexo.
JavaScript
6
star
50

awesome

😎 Custom Awesome
6
star
51

baidu-image-spider

🕷️ 百度图片爬虫小工具 By Node.js.
JavaScript
5
star
52

webgl-learn

Learn WebGL Notes
JavaScript
5
star
53

cocos-creator-ik

Cocos Creator IK Demo 逆向动力学
TypeScript
5
star
54

xiao-ai

QQ 机器人 - 小爱
Python
4
star
55

vue-parcel-demo

🌰 vue-parcel-demo
Vue
4
star
56

wives

💗 Data for my favourite girls.
TypeScript
4
star
57

valaxy-theme-starter

🎨 Starter template for valaxy-theme.
Vue
4
star
58

unplugin-mockery

😛 Let's manage your mock.
TypeScript
3
star
59

vue-about-me

ℹ️ Display your copyright & social links.
Vue
3
star
60

chat-generator

💬 聊天记录合集
Vue
2
star
61

vite-bug-report-1364

https://github.com/vitejs/vite/issues/1364
Vue
2
star
62

go-far-away

🗺 Go to the farthest place. 去远方
Vue
2
star
63

nasa-vis

🌍 NASA API Visualization. (Example Asteroids - NeoWs)
Vue
2
star
64

unocss-issue-1262

Minimal repo for unocss issue #1262.
TypeScript
2
star
65

1diary-api

Guess 1diary api.
2
star
66

Advanced-Windows-Network-Programming

Lab Project about Advanced-Windows-Network-Programming
C
2
star
67

webgl-radiosity

💡 Implement radiosity by WebGL.
JavaScript
2
star
68

star-orbit

A annulus star orbit.
2
star
69

my-DIARY

MyDiary 君の名は。
Vue
2
star
70

github-stargazers

A script for getting all stargazers of a repo.
JavaScript
2
star
71

ais-json

A npm package about AIS text decoding.
JavaScript
2
star
72

umami

2
star
73

coc

Use coc(clash of clans) API to display and analyze
Vue
2
star
74

xiao-you

🔧 el-bot xiao-yun config
1
star
75

cdn

☁️ CDN by jsDelivr, for Open Source Projects.
Shell
1
star
76

model-viewer-player

I want to write a controller based on google model-viewer.
1
star
77

element-theme-ink-preview

Preview element-theme-ink.
JavaScript
1
star
78

Accel-World

I want to design a style about accel world.
1
star
79

learn-tfjs

Learn tfjs.
1
star
80

shut-up

Shut up!
Vue
1
star
81

cg-demo

Demo for Computer Graphics.
TypeScript
1
star
82

blender-scripts

Blender Python Scripts
Python
1
star
83

bookmarks

My custom bookmarks.
1
star
84

p5-lab

Lab space for p5.js.
JavaScript
1
star
85

pac-man

Console pac-man.
HTML
1
star
86

eslint-config

🔧 My custom eslint config.
JavaScript
1
star
87

webgl-lab

Learn webgl
JavaScript
1
star
88

test

TypeScript
1
star
89

ClashOfClans-GameGear

A assist web about clash of clans.Record clan information,manage your clan,calculate clan pk match value and orange lottery judge.
PHP
1
star