これは「334」のような特定の時間に対しての投稿時間の精度を図るようなゲームの集計を行うアプリです。
- 特定時刻のノートの収集・ランキングの集計
- 同着も含め10位以内を表示する(10人ではなく)
- Noteをhttpによる取得で集計する
- Stream API (WebSocket)を使うものより、取得漏れ含め比較的安定して動作する
- 終了後に自分の投稿時刻と順位を表示する
- LTLではなくSTL(Hybrid Timeline)で動かす
し他サーバーにも対応する- 一旦他サーバー対応はしない(競技の公平性を鑑みて)
- 累計でのランクイン回数や(TODO: 累計の合計レーティング)を表示する
Node js v18.17.0
pnpm
pnpm install
(依存関係のインストール)- 環境変数「SERVER_TOKEN」にMisskey.ioで取得したトークンを設定する
- 特定時刻をコード上で変更しておく(あとで変えられるようにする予定です)
- (返信機能を使う場合) DATABASE_URLを設定して、
pnpm run migrate
を実行 - 特定時刻が過ぎた後にコードを実行する(cron等を用いれば自動化できる)
pnpm build
をしておいて(前提なので一回でOK)pnpm start
- 集計結果がノートされる
pnpm run remind
- データベースの設定・migrate必須
pnpm run mentions
環境変数、または.envファイルを用いることでアプリケーションの設定を変更可能です
- Misskeyサーバーのアドレス
- default "https://misskey.io"
- Misskeyから取得したAPIのトークン
- 最低でもノートの作成・削除の権限は与えないと投稿が不可
- PostgreSQLのURL
- 返信機能を使うには必須
- 記録を開始する時刻の時(24時間形式)
- default 3
- 記録を開始する時刻の分(24時間形式)
- default 34
- 投稿時タイトル
- default "Today's 334 Top 10"
- 取得対象となる文字列を変更する場合に使います
- default
/(33-?4|:hanshin:)/
- 自身のusername
自身のノートをフライング含め集計しないために入れています(※今後廃止してBotユーザー全部弾くようにするかも)- リプライの判定に使います
- default
334_t
- 観測時投稿テキストを変更できます
- default "334観測中"
- 値を
TRUE
に設定するとMisskeyにノートが投稿されなくなります - 手元で集計のみ行いたい場合等にお使いください
- 値を
TRUE
に設定すると集計時刻の前後でのメンションに反応しないようにすることが可能です - default FALSE
- DISABLE_MENTION_AROUND_TIME と併用して使うオプションです
- メンションに反応しない時間を設定する際に集計時刻の何ミリ秒前から反応しないかを設定可能です
- default 60000
- DISABLE_MENTION_AROUND_TIME と併用して使うオプションです
- メンションに反応しない時間を設定する際に集計時刻の何ミリ秒後まで反応しないかを設定可能です
- default 60000
- dotenv導入済みなのでローカルなどで試す場合は
.env
のファイルを用意して配置すれば設定変更可能- 開発環境(NODE_ENV=development)の場合は
.env.development
が読み込まれる(.env
は読み込まない)
- 開発環境(NODE_ENV=development)の場合は
// TODO // この方法ではデータベースはローカルのものを使う、もしくは用意しないことも可能です
- (任意)データベースを用意します
- リポジトリよりbuild もしくは
taichanne30/yamag
イメージを利用します docker run
コマンドを用いて実行してください
この方法ではデータベースも同時に用意可能です
※こちらも参考にしてください( https://github.com/taichanNE30/yamag-docker-compose-example )
- 適当なディレクトリを作成します
- リポジトリ内のenv_templatesを参考に
.env.app
,.env.db
を作成します - 以下のdocker-compose.ymlを作成します
version: '3'
services:
app:
image: taichanne30/yamag:master
restart: always
links:
- db
networks:
- int_net
- ext_net
env_file:
- .env.app
db:
image: postgres:15.3-bullseye
networks:
- int_net
env_file:
- .env.db
volumes:
- ./postgres-data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
int_net:
internal: true
ext_net:
- (初回起動時のみ)マイグレーションを実行する
docker-compose run -it app pnpm run migrate
docker-compose up -d
等で起動する
- リポジトリをcloneします
- リポジトリ内のenv_templatesを参考に
.env.app
,.env.db
を作成します - (初回起動時のみ)マイグレーションを実行する
docker-compose run -it app pnpm run migrate
docker-compose up -d
等で起動する
このプロジェクトはMPL-2.0を採用しています。 ライセンスに従った形での利用や改変は大歓迎です