diff --git a/Dockerfile b/Dockerfile
index b0f4c51..0b54d0f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -5,15 +5,15 @@ WORKDIR /app
RUN apt-get update
RUN apt-get install -y build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
-COPY package.json .
+COPY package.json ./
RUN corepack enable
-RUN pnpm install --prod
+RUN pnpm i --frozen-lockfile --prod
FROM module AS build
-RUN pnpm install
+RUN pnpm i --frozen-lockfile
COPY . .
diff --git a/README.md b/README.md
index 40005a8..7abb7c1 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
## これってなに?
+
Misskey用の[Aiベース](https://github.com/syuilo/ai)のBotです。
+
```
_ __ ____ __ ________ __
/ | / /_ __/ / /________ _/ /_/ ____/ /_ ____ _____ / /
@@ -9,6 +11,7 @@ Misskey用の[Aiベース](https://github.com/syuilo/ai)のBotです。
```
## 大きな変更点
+
- 自動投稿の内容
- pingに対する返答の内容
- 自動返信の内容
@@ -23,10 +26,21 @@ Misskey用の[Aiベース](https://github.com/syuilo/ai)のBotです。
- 怪レい曰本语に変換してくれる機能
## 導入方法
-> Node.js と npm と MeCab がインストールされている必要があります。
-まず適当なディレクトリに `git clone` します。
-次にそのディレクトリに `config.json` を作成します。中身は次のようにします:
+### Dockerを使わずに動かす
+
+#### 必要要件
+
+- [Node.js](https://nodejs.org/) v18
+- [pnpm](https://pnpm.io/) v7
+- [MeCab](https://taku910.github.io/mecab/)
+
+#### インストール
+
+まず適当なディレクトリにこのリポジトリをクローンします。
+
+次にそのディレクトリに`config.json`を作成します。中身は次のようにします。
+
``` json
{
"host": "https:// + あなたのインスタンスのURL (末尾の / は除く)",
@@ -41,12 +55,22 @@ Misskey用の[Aiベース](https://github.com/syuilo/ai)のBotです。
"shellgeiUrl": "シェル芸BotのAPIのURLです(デフォルトではhttps://websh.jiro4989.com/api/shellgei)"
}
```
-`npm install` して `npm run build` して `npm start` すれば起動できます。
+`pnpm fetch`して`pnpm build`して`pnpm start`すれば起動できます。
### Dockerで動かす
-まず適当なディレクトリに `git clone` します。
-次にそのディレクトリに `config.json` を作成します。中身は次のようにします:
+
+#### 必要要件
+
+- [Docker](https://www.docker.com/)
+- [Docker Compose](https://docs.docker.com/compose/) v2
+
+#### インストール
+
+まず適当なディレクトリにこのリポジトリをクローンします。
+
+次にそのディレクトリに`config.json`を作成します。中身は次のようにします。
(MeCabの設定、memoryDirについては触らないでください)
+
``` json
{
"host": "https:// + あなたのインスタンスのURL (末尾の / は除く)",
@@ -55,13 +79,13 @@ Misskey用の[Aiベース](https://github.com/syuilo/ai)のBotです。
"notingEnabled": "ランダムにノートを投稿する機能。true(on) or false(off)",
"keywordEnabled": "キーワードを覚える機能 (MeCab が必要) true or false",
"mecab": "/usr/bin/mecab",
- "mecabDic": "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/",
+ "mecabDic": "/min",
"memoryDir": "data",
"shellgeiUrl": "シェル芸BotのAPIのURLです(デフォルトではhttps://websh.jiro4989.com/api/shellgei)"
}
```
-`npm install` して `npm run docker` すれば起動できます。
-`docker-compose.yml` の `enable_mecab` を `0` にすると、MeCabをインストールしないようにもできます。(メモリが少ない環境など)
+
+`docker compose up -d`すれば起動できます。
#### 一部の機能にはフォントが必要です。NullcatChan!にはフォントは同梱されていないので、ご自身でフォントをインストールしてそのフォントを`font.ttf`という名前でインストールディレクトリに設置してください。
#### NullcatChan!は記憶の保持にインメモリデータベースを使用しており、僕のインストールディレクトリに `memory.json` という名前で永続化されます。
diff --git a/package.json b/package.json
index ff2cfae..5ee4ac7 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,8 @@
{
- "version": "2.2.0",
+ "version": "2.3.0",
"main": "./built/index.js",
"packageManager": "pnpm@7.26.3",
"scripts": {
- "docker:dev": "cross-env DOCKER_ENV=development docker-compose -f docker-compose.yml -f docker-compose_development.yml up -d --build && docker-compose logs -f",
- "docker": "cross-env DOCKER_ENV=production docker-compose up -d --build && docker-compose logs -f",
"dev": "cross-env NODE_ENV=development nodemon --exec ts-node -r tsconfig-paths/register src",
"start": "cross-env NODE_ENV=production node ./built",
"lint": "prettier --write ./src/",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 628ad30..e55c72b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -278,7 +278,6 @@ packages:
/@babel/parser/7.20.13:
resolution: {integrity: sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==}
engines: {node: '>=6.0.0'}
- hasBin: true
dependencies:
'@babel/types': 7.20.7
dev: true
@@ -745,7 +744,6 @@ packages:
/@mapbox/node-pre-gyp/1.0.10:
resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==}
- hasBin: true
dependencies:
detect-libc: 2.0.1
https-proxy-agent: 5.0.1
@@ -1226,7 +1224,6 @@ packages:
/acorn/8.8.2:
resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
engines: {node: '>=0.4.0'}
- hasBin: true
dev: true
/agent-base/6.0.2:
@@ -1457,7 +1454,6 @@ packages:
/browserslist/4.21.5:
resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
dependencies:
caniuse-lite: 1.0.30001449
electron-to-chromium: 1.4.284
@@ -1697,7 +1693,6 @@ packages:
/color-support/1.1.3:
resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
- hasBin: true
dev: false
/commander/2.20.3:
@@ -1760,7 +1755,6 @@ packages:
/cross-env/7.0.3:
resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
- hasBin: true
dependencies:
cross-spawn: 7.0.3
dev: false
@@ -2062,7 +2056,6 @@ packages:
/esprima/4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
- hasBin: true
dev: true
/execa/0.7.0:
@@ -2375,7 +2368,6 @@ packages:
/gomamayo-js/0.2.1:
resolution: {integrity: sha512-3g4sA3TuhYc0uMEyj1cZL2qcqUP4kRcP+DPVstGOj7Nm0RKe28Mwi0IJ4O4F43gUa7dDEhoMdh7TehMx4ILwPQ==}
- hasBin: true
dependencies:
mecab-async: 0.1.2
dev: false
@@ -2529,7 +2521,6 @@ packages:
/import-local/3.1.0:
resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
engines: {node: '>=8'}
- hasBin: true
dependencies:
pkg-dir: 4.2.0
resolve-cwd: 3.0.0
@@ -3130,7 +3121,6 @@ packages:
/js-yaml/3.14.1:
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
- hasBin: true
dependencies:
argparse: 1.0.10
esprima: 4.0.1
@@ -3139,7 +3129,6 @@ packages:
/jsesc/2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
- hasBin: true
dev: true
/json-buffer/3.0.0:
@@ -3157,7 +3146,6 @@ packages:
/json5/2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
- hasBin: true
dev: true
/keygrip/1.1.0:
@@ -3406,7 +3394,6 @@ packages:
/mkdirp/1.0.4:
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
engines: {node: '>=10'}
- hasBin: true
dev: false
/module-alias/2.2.2:
@@ -3461,7 +3448,6 @@ packages:
/node-gyp-build/4.6.0:
resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==}
- hasBin: true
dev: false
/node-int64/0.4.0:
@@ -3475,7 +3461,6 @@ packages:
/nodemon/2.0.20:
resolution: {integrity: sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==}
engines: {node: '>=8.10.0'}
- hasBin: true
dependencies:
chokidar: 3.5.3
debug: 3.2.7_supports-color@5.5.0
@@ -3491,7 +3476,6 @@ packages:
/nopt/1.0.10:
resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==}
- hasBin: true
dependencies:
abbrev: 1.1.1
dev: true
@@ -3499,7 +3483,6 @@ packages:
/nopt/5.0.0:
resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
engines: {node: '>=6'}
- hasBin: true
dependencies:
abbrev: 1.1.1
dev: false
@@ -3748,7 +3731,6 @@ packages:
/prettier/2.8.3:
resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==}
engines: {node: '>=10.13.0'}
- hasBin: true
dev: true
/pretty-format/29.4.1:
@@ -3909,7 +3891,6 @@ packages:
/resolve/1.22.1:
resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
- hasBin: true
dependencies:
is-core-module: 2.11.0
path-parse: 1.0.7
@@ -3934,7 +3915,6 @@ packages:
/rimraf/3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- hasBin: true
dependencies:
glob: 7.2.3
dev: false
@@ -3962,7 +3942,6 @@ packages:
/seek-bzip/1.0.6:
resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==}
- hasBin: true
dependencies:
commander: 2.20.3
dev: true
@@ -3981,22 +3960,18 @@ packages:
/semver/5.7.1:
resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
- hasBin: true
dev: true
/semver/6.3.0:
resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
- hasBin: true
/semver/7.0.0:
resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==}
- hasBin: true
dev: true
/semver/7.3.8:
resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
engines: {node: '>=10'}
- hasBin: true
dependencies:
lru-cache: 6.0.0
@@ -4309,7 +4284,6 @@ packages:
/touch/3.1.0:
resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==}
- hasBin: true
dependencies:
nopt: 1.0.10
dev: true
@@ -4453,7 +4427,6 @@ packages:
/typescript/4.9.5:
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
engines: {node: '>=4.2.0'}
- hasBin: true
dev: true
/unbzip2-stream/1.4.3:
@@ -4508,7 +4481,6 @@ packages:
/uuid/9.0.0:
resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
- hasBin: true
dev: false
/v8-compile-cache-lib/3.0.1:
@@ -4562,7 +4534,6 @@ packages:
/which/1.3.1:
resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
- hasBin: true
dependencies:
isexe: 2.0.0
dev: true
@@ -4570,7 +4541,6 @@ packages:
/which/2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
- hasBin: true
dependencies:
isexe: 2.0.0