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