From 1ebf2c7d372fcd74d5798003b371293047fb67fd Mon Sep 17 00:00:00 2001 From: tetsuya-k <64536338+tetsuya-ki@users.noreply.github.com> Date: Mon, 8 Jan 2024 13:18:11 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=AB=E3=82=B9=E3=82=BF=E3=83=A0=E7=B5=B5?= =?UTF-8?q?=E6=96=87=E5=AD=97=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF=E3=83=A2?= =?UTF-8?q?=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README.mdやtorisetu.mdに記載 - カスタム絵文字投稿をまとめる設定を追加(checkEmojisAtOnce) --- README.md | 4 ++ src/config.ts | 5 ++- src/modules/check-custom-emojis/index.ts | 54 +++++++++++++++--------- src/serifs.ts | 4 +- torisetu.md | 3 ++ 5 files changed, 48 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 87dcf11..042e75e 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ Misskey用の日本語Botです。 "chartEnabled": "チャート機能を無効化する場合は false を入れてください", "reversiEnabled": "藍とリバーシで対局できる機能を有効にする場合は true を入れる (無効にする場合は false)", "serverMonitoring": "サーバー監視の機能を有効にする場合は true を入れる (無効にする場合は false)", + "checkEmojisEnabled": "カスタム絵文字チェック機能を有効にする場合は true を入れる (無効にする場合は false)", + "checkEmojisAtOnce": "カスタム絵文字チェック機能で投稿をまとめる場合は true を入れる (まとめない場合は false)", "mecab": "MeCab のインストールパス (ソースからインストールした場合、大体は /usr/local/bin/mecab)", "mecabDic": "MeCab の辞書ファイルパス (オプション)", "memoryDir": "memory.jsonの保存先(オプション、デフォルトは'.'(レポジトリのルートです))" @@ -40,6 +42,8 @@ Misskey用の日本語Botです。 "chartEnabled": "チャート機能を無効化する場合は false を入れてください", "reversiEnabled": "藍とリバーシで対局できる機能を有効にする場合は true を入れる (無効にする場合は false)", "serverMonitoring": "サーバー監視の機能を有効にする場合は true を入れる (無効にする場合は false)", + "checkEmojisEnabled": "カスタム絵文字チェック機能を有効にする場合は true を入れる (無効にする場合は false)", + "checkEmojisAtOnce": "カスタム絵文字チェック機能で投稿をまとめる場合は true を入れる (まとめない場合は false)", "mecab": "/usr/bin/mecab", "mecabDic": "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/", "memoryDir": "data" diff --git a/src/config.ts b/src/config.ts index a404782..59154a3 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,6 +1,6 @@ type Config = { host: string; - serverName: string; + serverName?: string; i: string; master?: string; wsUrl: string; @@ -10,7 +10,8 @@ type Config = { notingEnabled: boolean; chartEnabled: boolean; serverMonitoring: boolean; - checkEmojisEnabled: boolean; + checkEmojisEnabled?: boolean; + checkEmojisAtOnce?: boolean; mecab?: string; mecabDic?: string; memoryDir?: string; diff --git a/src/modules/check-custom-emojis/index.ts b/src/modules/check-custom-emojis/index.ts index 70653be..d164c59 100644 --- a/src/modules/check-custom-emojis/index.ts +++ b/src/modules/check-custom-emojis/index.ts @@ -15,7 +15,7 @@ export default class extends Module { @autobind public install() { - if (config.checkEmojisEnabled === false) return {}; + if (!config.checkEmojisEnabled) return {}; this.lastEmoji = this.ai.getCollection('lastEmoji', { indices: ['id'] }); @@ -38,49 +38,65 @@ export default class extends Module { data.lastPosted = date; this.setData(data); - this.log('Time to check custom emojis!'); + this.log('Time to Check CustomEmojis!'); this.post(); } @autobind private async post() { - this.log('Start to check custom emojis.'); + this.log('Start to Check CustomEmojis.'); const lastEmoji = this.lastEmoji.find({}); - // this.log('lastEmoji'); - // this.log(JSON.stringify(lastEmoji,null,'\t')); const lastId = lastEmoji.length != 0 ? lastEmoji[0].id : null; const emojisData = await this.checkCumstomEmojis(lastId); - if (emojisData.length == 0) return; + if (emojisData.length == 0) { + this.log('No CustomEmojis Added.'); + return; + } // 絵文字データが取得された場合、元々のデータを削除しておく const emojiSize = emojisData.length; this.lastEmoji.remove(lastEmoji); - // 概要について投稿 const server_name = config.serverName ? config.serverName : 'このサーバー'; this.log('Posting...'); - this.log(serifs.checkCustomEmojis.post(server_name, emojiSize)); - await this.ai.post({ - text: serifs.checkCustomEmojis.post(server_name, emojiSize) - }); - // 各絵文字について投稿 - for (const emoji of emojisData){ + // 一気に投稿しないver + if (!config.checkEmojisAtOnce){ + // 概要について投稿 + this.log(serifs.checkCustomEmojis.post(server_name, emojiSize)); await this.ai.post({ - text: serifs.checkCustomEmojis.emojiPost(emoji.name) + text: serifs.checkCustomEmojis.post(server_name, emojiSize) + }); + + // 各絵文字について投稿 + for (const emoji of emojisData){ + await this.ai.post({ + text: serifs.checkCustomEmojis.emojiPost(emoji.name) + }); + this.log(serifs.checkCustomEmojis.emojiPost(emoji.name)); + } + } else { + // 一気に投稿ver + let text = ''; + for (const emoji of emojisData){ + text += serifs.checkCustomEmojis.emojiOnce(emoji.name); + } + const message = serifs.checkCustomEmojis.postOnce(server_name, emojiSize, text); + this.log(message); + await this.ai.post({ + text: message }); - this.log(serifs.checkCustomEmojis.emojiPost(emoji.name)); } // データの保存 - this.log('Last custom emoji data saving...'); + this.log('Last CustomEmojis data saving...'); this.log(JSON.stringify(emojisData[emojiSize-1],null,'\t')); this.lastEmoji.insertOne({ id: emojisData[emojiSize-1].id, updatedAt: Date.now() }); - this.log('Check custom emojis finished!'); + this.log('Check CustomEmojis finished!'); } @autobind @@ -126,10 +142,10 @@ export default class extends Module { @autobind private async mentionHook(msg: Message) { - if (!msg.includes(['カスタムえもじチェック'])) { + if (!msg.includes(['カスタムえもじチェック','カスタムえもじを調べて','カスタムえもじを確認'])) { return false; } else { - this.log('Check custom emojis requested'); + this.log('Check CustomEmojis requested'); } await this.post(); diff --git a/src/serifs.ts b/src/serifs.ts index 32515d5..49fc8d4 100644 --- a/src/serifs.ts +++ b/src/serifs.ts @@ -383,7 +383,9 @@ export default { checkCustomEmojis: { post: (server_name, num) => `${server_name}に${num}件の絵文字が追加されました!`, - emojiPost: emoji => `:${emoji}:\n(\`${emoji}\`) #AddCustomEmojis` + emojiPost: emoji => `:${emoji}:\n(\`${emoji}\`) #AddCustomEmojis`, + postOnce: (server_name, num, text) => `${server_name}に${num}件の絵文字が追加されました!\n${text} #AddCustomEmojis`, + emojiOnce: emoji => `:${emoji}:(\`${emoji}\`)` }, sleepReport: { diff --git a/torisetu.md b/torisetu.md index 3b1c13b..0d29985 100644 --- a/torisetu.md +++ b/torisetu.md @@ -75,6 +75,9 @@ Misskeyにアカウントを作成して初めて投稿を行うと、藍がネ ### ping PONGを返します。生存確認にどうぞ +### カスタム絵文字チェック +1日に1回、カスタム絵文字の追加を監視してくれます。「カスタムえもじチェック」または「カスタムえもじを確認して」ですぐに確認してくれます。 + ### その他反応するフレーズ (トークのみ) * かわいい * なでなで