Misskey で動く日本語Botです。
TLから言葉を学び、それをおいしいかまずいか決めて、投稿するBotです。
Docker を使う場合は、Docker を参照してください。
この ID じゃないと動きません
Node.js のバージョンは v16 以上にしてください
OS によってインストール方法が異なるので、各自調べてください
aptなどのパッケージインストーラーからインストールするか、自分でビルドしてください
cp example.json5 config.json5config.json5 を下にあるように編集する
vi config.json5
# OR
emacs config.json5
# OR
nano config.json5
# ...etcnpm i
npm run build起動時に自動実行されます。
npm start{
// MisskeyのURL
url: 'https://misskey.io',
// 多分アクセストークンでも行ける(未検証)
// アクセストークンでやる場合は、すべての権限をオンにしたほうが楽かも
apiKey: '',
// 大文字のところを書き換える
databaseUrl: 'postgresql://USER:PASSWORD@HOST:PORT/DATABASE',
// DBのSSL
dbSSL: false,
// オーナーのUsername オーナーのみが使えるコマンドを使う人を配列で指定する
ownerUsernames: ['kabo'],
post: {
// 何分毎に投稿するか
autoPostInterval: 60,
// TLに(フォロー / 3)数流れてきたときに食べ物を言う確率
tlPostProbability: 0.4,
// レートリミットの解除秒数
rateLimitSec: 60,
// レートリミットの最大数
rateLimitPost: 5,
},
mecab: {
// mecabのインストールパス (`which mecab`)
binPath: '/usr/bin/mecab',
// mecabの辞書ファイル
dicPath: '',
},
denyRoleIds: [
// ここにロールIDを追加すると、そのロールを持っているユーザーの投稿は無視される
'abcdefghij0123',
],
// (オプション) 追加のNGワードソース
// ローカルファイルパス(相対/絶対)またはHTTP(S) URLを指定
// 除外ワード(-プレフィックス)でデフォルトのNGワードを無効化可能
ngWordSources: [
'./custom-ngwords.txt',
// 'https://example.com/ngwords.txt',
],
}Xeltica さんの Citrine から参考にさせていただきました。
https://github.com/Xeltica/Citrine/blob/master/Resources/ngwords.txt
config.json5 の ngWordSources に追加のNGワードファイルやURLを指定できます。
ngwords.txtの形式に従ってください(1行に1ワード、-プレフィックスで除外ワード)- ローカルファイルパス(相対パス/絶対パス)または HTTP(S) URL が使用可能
- URLの場合、プレーンテキストでアクセスできる必要があります
- デフォルトの
ngwords.txtに追加される形で読み込まれます - デフォルトのNGワードを上書きすることができます(例:
-ばかで「ばか」を除外) /ng reloadコマンドで全ソースを再読み込みできます(オーナーのみ)
Docker 環境では、ローカルファイルパスはVolumeでマウントする必要があります。
Dockerを使う場合は、以下の手順で起動できます。
example.docker.json5をconfig.json5にコピーして編集する (上記の config.json5 を参照)db_password.secret.exampleのようにdb_password.secretにDBのパスワードを書くdocker compose up -dで起動する
デフォルトでは、既にビルドされたイメージを使うようになっています。
ローカルのソースコードを使いたい場合は、compose.yaml内のservices.bot.imageをコメントアウトしてください。
ビルドするときは、docker compose build --build-arg GIT_SHA=$(git rev-parse HEAD) を実行してください。