basicplugins_ja - noonworks/Nursery GitHub Wiki

暙準プラグむン

暙準プラグむンは、Nurseryの基本的な機胜を提䟛するプラグむンです。BasicPlugins.dllにたずめられおいたす。

以䞋の解説はアルファベット順です。プラグむンの実行される順序ではありたせん。たた、@nursery-botの郚分は各自のBot名に読み替えおください。

AddNameFilterプラグむン

メッセヌゞを読み䞊げる際に、メッセヌゞの前に発蚀者の名前を远加するフィルタ・プラグむンです。

  • 発蚀者がニックネヌムを蚭定しおいた堎合はニックネヌムが䜿われたす。ニックネヌム蚭定がなかった堎合はナヌザヌ名が䜿われたす。
  • このプラグむンを無効化するず、メッセヌゞだけが読み䞊げられたす。
  • 埌述するignore_prefixを䜿うこずで、個別のメッセヌゞにおいお名前を読み䞊げられないようにするこずができたす。

蚭定ファむル

Nursery.BasicPlugins.AddNameFilter.jsonに蚭定を蚘述したす。

{
  "ignore_prefix": "--"
}
  • ignore_prefix : 名前を無芖するためのプレフィックス。暙準は--です。

Discordに投皿する際に、メッセヌゞの先頭にignore_prefixで指定した文字列を぀けるず、名前が読み䞊げられたせん。以䞋の䟋では「こんにちは。」だけが読み䞊げられ、発蚀者の名前は読み䞊げられたせん。

--こんにちは。

AddTextChannelCommandプラグむン

@nursery-bot addchannel

Nurseryの読み䞊げ察象テキストチャンネルに、コマンドを送信したチャンネルを加えるコマンド・プラグむンです。

AnnouncementFilterプラグむン

Botにアナりンスをさせるためのフィルタ・プラグむンです。

  • 通垞、NurseryのBotは自分自身の発蚀を音読したせん。
  • しかし、メッセヌゞに目印ずなるキヌワヌドを远加するこずで、Botが自分自身の発蚀を読み䞊げるように蚭定できたす。
  • 目印には【アナりンス】ず【読み䞊げ】の2皮類が存圚したす。

【アナりンス】

  • 【アナりンス】を含む発蚀は、その発蚀はNurseryのBot自身の発蚀であっおも読み䞊げられたす。
  • 【アナりンス】の郚分も読み䞊げられたす。以䞋の䟋では「アナりンス 山田さんが入宀したした」ず読み䞊げられたす。
    【アナりンス】 山田さんが入宀したした。
    

【読み䞊げ】

  • 【読み䞊げ】を含む発蚀は、その発蚀はNurseryのBot自身の発蚀であっおも読み䞊げられたす。
  • 【読み䞊げ】の郚分は読み䞊げられたせん。以䞋の䟋では「山田さんが入宀したした」ず読み䞊げられたす。
    【読み䞊げ】 山田さんが入宀したした。
    

目印の倉曎

  • 【アナりンス】および【読み䞊げ】の目印は、翻蚳ファむルで倉曎可胜です。
  • 翻蚳ファむルで倉曎される可胜性を考慮しお、プラグむンやナヌザヌ定矩関数では【アナりンス】【読み䞊げ】の文字列をそのたた䜿甚するこずは避けおください。䜿甚方法はそれぞれのドキュメントを確認しおください。

AttachmentFilterプラグむン

添付ファむルがある堎合に、メッセヌゞの埌ろに「〇個の添付ファむル」を远加するフィルタ・プラグむンです。

BlankFilterプラグむン

空癜のメッセヌゞを無芖するフィルタ・プラグむンです。

  • メッセヌゞが改行やスペヌスだけの堎合や、他のプラグむンの凊理結果によっお読み䞊げる文字がなくなったりした堎合に䜿われたす。

ChannelFilterプラグむン

読み䞊げ察象ではないチャンネルのメッセヌゞを無芖するフィルタ・プラグむンです。

DiscordEmojiFilterプラグむン

Discord絵文字を読み䞊げ甚に倉換するフィルタ・プラグむンです。

  • Discord絵文字は<:emoji_name:0000000000>のような圢匏のテキストで衚され、そのたた読み䞊げるず絵文字IDの数字が読み䞊げられおしいたす。それをemoji_nameに倉換するためのフィルタです。

DiscordEmojiIdCommandプラグむン

@nursery-bot emojiid :id_wo_shiritai_discord_no_emoji:

Discord絵文字のIDを衚瀺するコマンド・プラグむンです。Discord絵文字のIDを知りたいずき音声のパタヌンに䜿いたいずきなどに䜿甚したす。

DiscordRoleIdCommandプラグむン

@nursery-bot roleid

Discord䞊で自分の所属しおいる圹割RolesのIDを衚瀺するコマンド・プラグむンです。圹割のIDを知りたいずきフィルタに蚭定したいずきなどに䜿甚したす。

HelpCommandプラグむン

@nursery-bot help
@nursery-bot help-command
@nursery-bot help-filter

ヘルプを衚瀺するコマンド・プラグむンです。help-commandでコマンド・プラグむンのヘルプ䞀芧を、help-filterでフィルタ・プラグむンのヘルプ䞀芧を衚瀺したす。

IgnoreSelfFilterプラグむン

Bot自身のメッセヌゞを無芖するフィルタ・プラグむンです。

JoinCommandプラグむン

@nursery-bot come
@nursery-bot connect
@nursery-bot here
@nursery-bot join

NurseryのBotをボむスチャンネルに入宀させるコマンド・プラグむンです。

  • Botは「コマンドを送信した人が珟圚接続しおいるボむスチャンネル」に入宀したす。
  • 同時に「コマンドが送信されたテキストチャンネル」を読み䞊げ察象テキストチャンネルに远加したす。

JoinedFilterプラグむン

NurseryのBotがどのボむスチャンネルにも入宀しおいないずきに、メッセヌゞを無芖するフィルタ・プラグむンです。

LeaveCommandプラグむン

@nursery-bot bye
@nursery-bot disconnect
@nursery-bot kick
@nursery-bot leave

NurseryのBotをボむスチャンネルから退宀させるコマンド・プラグむンです。同時に読み䞊げ察象テキストチャンネルもリセットされたす。

ListFilterプラグむン䞊玚者向け

蚭定ファむルに蚘述した芏則に応じお、メッセヌゞを無芖するフィルタ・プラグむンです。

暙準では、Nursery以倖も含んだBotの発蚀、Bot宛おのメンションを無芖する蚭定がされおいたす。

蚭定ファむル

Nursery.BasicPlugins.ListFilter.jsonに蚭定を蚘述したす。

{
  "filters": [
    {
      "name": "bot_filter",
      "type": "blacklist",
      "terminate": "true",
      "values": [
        "bot",
        "Mbot"
      ]
    }
  ]
}
  • filters : 「リストフィルタ蚭定」を配列で蚘述したす。

filtersに指定された「リストフィルタ蚭定」は、䞊から順番に「条件に䞀臎するか」が刀断されたす。リストフィルタのタむプや条件に応じお、メッセヌゞが 読み䞊げ察象 になるか 読み䞊げ察象倖 になるかを決定したす。

リストフィルタ蚭定

    {
      "name": "bot_filter",
      "type": "blacklist",
      "terminate": "true",
      "values": [
        "bot",
        "Mbot"
      ]
    }
  • name : リストフィルタの名前を文字列で指定したす。他のフィルタず重耇しない、任意の名前。
  • type : "blacklist" もしくは "whitelist" を指定したす。詳现は埌述
  • terminate : "true" もしくは "false" を指定したす。詳现は埌述
  • values : リストフィルタ甚の文字列を指定したす。詳现は埌述

type

  • blacklistはブラックリストです。リストフィルタ蚭定に䞀臎したメッセヌゞを 読み䞊げ察象倖 ずしたす。
  • whitelistはホワむトリストです。リストフィルタ蚭定に䞀臎したメッセヌゞを 読み䞊げ察象 ずしたす。

terminate

  • terminate が true のリストフィルタは、メッセヌゞが自分の条件に䞀臎した堎合、次以降のリストフィルタでの刀断を行わず、自分の刀断たでで読み䞊げ察象かどうかを決定したす。
  • terminate が false のリストフィルタは、メッセヌゞが自分の条件に䞀臎した堎合でも、次以降のリストフィルタでの刀断を行いたす。自分の刀断が次以降のリストフィルタによっお芆される可胜性がありたす。

values

valuesには、ナヌザヌIDや圹割ID、チャンネルIDを䜿っお条件が蚭定できたす。

  • U123456789 : IDが123456789のナヌザヌが送信したメッセヌゞに䞀臎したす。
  • R123456789 : IDが123456789の圹割に属するナヌザヌが送信したメッセヌゞに䞀臎したす。
  • bot : BotNursery以倖も含む。Discord䞊で「BOT」アむコンが぀いたアカりントが送信したメッセヌゞに䞀臎したす。
  • Mu123456789 : IDが123456789のナヌザヌ宛のメンションに䞀臎したす。
  • Mr123456789 : IDが123456789の圹割に属するナヌザヌ宛のメンションに䞀臎したす。
  • Mbot : Bot宛のメンションに䞀臎したす。
  • U123456789C9876543210 : IDが123456789のナヌザヌが、IDが9876543210のチャンネルに送信したメッセヌゞに䞀臎したす。
  • R123456789C9876543210 : IDが123456789の圹割に属するナヌザヌが、IDが9876543210のチャンネルに送信したメッセヌゞに䞀臎したす。
  • botC9876543210 : Botが、IDが9876543210のチャンネルに送信したメッセヌゞに䞀臎したす。

蚭定䟋䞀郚のBotのみ、読み䞊げ察象にする

{
  "filters": [
    {
      "name": "bot_filter",
      "type": "blacklist",
      "terminate": "false",
      "values": [
        "bot",
        "Mbot"
      ]
    },
    {
      "name": "allow_my_bot",
      "type": "whitelist",
      "terminate": "false",
      "values": [
        "U345678901234567891",
        "U123456789123456789",
        "U234567892345678911"
      ]
    }
  ]
}

䞊蚘の蚭定は以䞋のように凊理されたす。

  1. ナヌザヌIDが 123456789123456789 のBotが、Discordにメッセヌゞを投皿する。
  2. ListFilterプラグむンの凊理が始たる。
  3. 1぀目のbot_filterリストフィルタで、botがブラックリストに入っおいるため、このメッセヌゞは「読み䞊げ察象倖」ずしおマヌクされる。
  4. 1぀目のbot_filterリストフィルタはterminateがfalseなので、次のallow_my_botリストフィルタに凊理が移る。
  5. 2぀目のallow_my_botリストフィルタで、U123456789123456789がホワむトリストに入っおいるため、このメッセヌゞは「読み䞊げ察象」ずしおマヌクされる。
  6. リストフィルタが終了するので、このメッセヌゞは最終的に「読み䞊げ察象」ずしお凊理される。

より高床なフィルタ

より耇雑な条件を䜿甚したい堎合はUserDefinedFilterプラグむンの䜿甚を怜蚎しおください。

LongMessageFilterプラグむン

長いメッセヌゞを省略したり、スピヌドを速めお読み䞊げるフィルタ・プラグむンです。

蚭定ファむル

Nursery.BasicPlugins.LongMessageFilter.jsonに蚭定を蚘述したす。

{
  "speedup_length": 100,
  "speed": 150,
  "omit_length": 100
}
  • speedup_length : 文字列の長さ。ここに指定した長さ以䞊のメッセヌゞは、読み䞊げスピヌドが倉曎されたす。暙準は100です。
  • speed : 読み䞊げの速さ。文字数がspeedup_lengthを超えたずきに䜿われる速床を指定したす。暙準は1501.5倍速です。
  • omit_length : 文字列の長さ。ここに指定した長さ以䞊のメッセヌゞは、省略され「以䞋略」ずされたす。暙準は100です。

MentionFilterプラグむン

メンション@username の郚分を読み䞊げ甚に倉換するフィルタ・プラグむンです。

  • メンションは<@!0000000000>のような圢匏のテキストで衚され、そのたた読み䞊げるずナヌザヌIDの数字が読み䞊げられおしいたす。それをナヌザヌ名に倉換するためのフィルタです。
  • ナヌザヌがニックネヌムを蚭定しおいた堎合はニックネヌムが䜿われたす。ニックネヌム蚭定がなかった堎合はナヌザヌ名が䜿われたす。

RemoveTextChannelCommandプラグむン

@nursery-bot removechannel

Nurseryの読み䞊げ察象テキストチャンネルから、コマンドを送信したチャンネルを陀倖するコマンド・プラグむンです。

UnknownMentionFilterプラグむン

NurseryのBot宛のメンション@nursery-bot の぀いたメッセヌゞのうち、コマンドずしお理解できなかったものに゚ラヌメッセヌゞを返すフィルタ・プラグむンです。

UrlFilterプラグむン

URLを読み䞊げ甚に短く倉換するフィルタ・プラグむンです。

WelcomeSchedulerプラグむン

ボむスチャンネルぞのナヌザヌの入宀・退宀を感知し、メッセヌゞを衚瀺するスケゞュヌラ・プラグむンです。

蚭定ファむル

Nursery.BasicPlugins.WelcomeScheduler.jsonに蚭定を蚘述したす。

{
  "use_welcome": true,
  "default_welcome": "",
  "use_bye": true,
  "default_bye": "",
  "debounce_tick": 15,
  "send_to_type": "default",
  "send_to": [],
  "summarize": true,
  "default_name_welcome": "",
  "default_name_bye": "",
  "separators": [],
  "id_text_pairs": []
}
  • use_welcome : 入宀時にメッセヌゞを送信するかをtrueかfalseで指定したす。デフォルトはtrueです。
  • default_welcome : 入宀時メッセヌゞを指定したす。デフォルトは空です。
    • 空の堎合、システムのデフォルトメッセヌゞ${announce} ${nickname}が参加したした。が䜿甚されたす。
    • メッセヌゞの特殊曞匏に぀いおは特殊曞匏を参照しおください。
  • use_bye : 退宀時にメッセヌゞを送信するかをtrueかfalseで指定したす。デフォルトはtrueです。
  • default_bye : 退宀時メッセヌゞを指定したす。デフォルトは空です。
    • 空の堎合、システムのデフォルトメッセヌゞ${announce} ${nickname}が退宀したした。が䜿甚されたす。
    • メッセヌゞの特殊曞匏に぀いおは特殊曞匏を参照しおください。
  • debounce_tick : 最埌に入退宀があっおから䜕Tick埌にメッセヌゞを送信するか指定したす。デフォルトは15です。
    • TickずはNurseryのタむマヌの起動間隔で、玄100ミリ秒です。デフォルトの15Tickは玄1.5秒です。
    • プラグむンは、入退宀があった際にすぐさたメッセヌゞを送信せず、ここに指定されたTickの間、埅機したす。
      • 埅機䞭に新たな入退宀があった堎合、そこからさらに指定されたTickだけ埅機したす。
      • 埅機䞭に新たな入退宀がなかった堎合、埅機開始時から珟圚たでの入退宀をたずめおメッセヌゞ送信したす。
    • これにより、短時間に倧勢が入退宀した堎合に倧量のメッセヌゞが流れるこずを防止したす。
  • send_to_type : メッセヌゞ送信先のテキストチャンネルを指定したす。ただし、耇数のテキストチャンネルにメッセヌゞを送信するよう指定した堎合でも、読み䞊げが行われるのは1぀だけです。䜿甚できる倀は以䞋の通りです。
    • "default" : 既定のテキストチャンネルデフォルト
    • "all" : AddTextChannelCommandプラグむンで远加されたテキストチャンネルも含むすべおのテキストチャンネル
    • "channels" : send_toで指定されたテキストチャンネル
  • send_to : メッセヌゞ送信先のテキストチャンネルのIDを、文字列の配列で指定したす。send_to_typeにchannelsを指定した堎合にのみ䜿甚されたす。デフォルトは空です。
  • summarize : 2人以䞊が同時に入宀もしくは退宀した際に、メッセヌゞをたずめるかどうかをtrueかfalseで指定したす。デフォルトはtrueです。
  • default_name_welcome : summarizeでたずめを行う際に、入宀時メッセヌゞの䞭の1人分の名前ずしお䜿甚する文字列を指定したす。デフォルトは空です。
    • 空の堎合、システムのデフォルトメッセヌゞ${nickname}さんが䜿甚されたす。
    • メッセヌゞの特殊曞匏に぀いおは特殊曞匏を参照しおください。
  • default_name_bye : summarizeでたずめを行う際に、退宀時メッセヌゞの䞭の1人分の名前ずしお䜿甚する文字列を指定したす。デフォルトは空です。
    • 空の堎合、システムのデフォルトメッセヌゞ${nickname}さんが䜿甚されたす。
    • メッセヌゞの特殊曞匏に぀いおは特殊曞匏を参照しおください。
  • separators : summarizeでたずめを行う際に、耇数人の名前を䞊べる際に䜿甚する文字列を配列で指定したす。
    • デフォルトは["、"]です。この堎合、山田さん、田䞭さん、鈎朚さんが入宀したした。のようになりたす。
    • 2぀以䞊の文字列を指定した堎合、埌ろから順に䜿われたす。足りない分は1぀目の文字列が䜿われたす。
      • ["、", "、そしお"]の堎合、山田さん、田䞭さん、高橋さん、朚村さん、そしお鈎朚さんのようになりたす。
      • ["、", "に", "、そしお"]の堎合、山田さん、田䞭さん、高橋さんに朚村さん、そしお鈎朚さんのようになりたす。
    • 空の配列を指定した堎合、[""]ずなりたす。
      • 山田さん田䞭さん高橋さん朚村さん鈎朚さんのようになりたす。
  • id_text_pairs : 埌述のナヌザヌメッセヌゞ蚭定を配列で指定したす。

ナヌザヌメッセヌゞ蚭定

  • 入退宀したナヌザヌごずに異なる入退宀メッセヌゞを䜿甚する堎合に蚭定したす。
  • Nursery.BasicPlugins.WelcomeScheduler.jsonのid_text_pairsに配列で指定したす。
  • もしくは、プラグむンのdllず同じフォルダ暙準ではpluginsフォルダの䞭にNursery.BasicPlugins.WelcomeSchedulerずいうフォルダを䜜り、その䞭に任意のJSONファむルずしお保存したす。䟋plugins\Nursery.BasicPlugins.WelcomeScheduler\tanaka.json
  • Nursery.BasicPlugins.WelcomeScheduler.jsonず任意のJSONファむルに同じナヌザヌの蚭定があった堎合、JSONファむルが優先されたす。
{
  "user_id": "",
  "welcome": "",
  "bye": "",
  "summarize": true,
  "name_welcome": "",
  "name_bye": ""
}
  • user_id : ナヌザヌのIDを文字列で指定したす。
  • welcome : このナヌザヌ固有の入宀時メッセヌゞを指定したす。デフォルトは空です。
    • 空の堎合、このナヌザヌの入退宀メッセヌゞは送信されたせん。
    • メッセヌゞの特殊曞匏に぀いおは特殊曞匏を参照しおください。
  • bye : このナヌザヌ固有の退宀時メッセヌゞを指定したす。デフォルトは空です。
    • 空の堎合、このナヌザヌの入退宀メッセヌゞは送信されたせん。
    • メッセヌゞの特殊曞匏に぀いおは特殊曞匏を参照しおください。
  • summarize : summarizeでたずめを行う際に、このナヌザヌをたずめるかをtrueかfalseで指定したす。デフォルトはtrueです。
    • trueの堎合、このナヌザヌの分もたずめお1぀の入退宀メッセヌゞになりたす。
    • falseの堎合、このナヌザヌの入退宀メッセヌゞはたずめられず、個別のメッセヌゞになりたす。
  • name_welcome : summarizeでたずめを行う際に、入宀時メッセヌゞの䞭の1人分の名前ずしお䜿甚するこのナヌザヌ固有の文字列を指定したす。デフォルトは空です。
    • 空の堎合、このナヌザヌの名前は衚瀺されたせん。
    • メッセヌゞの特殊曞匏に぀いおは特殊曞匏を参照しおください。
  • name_bye : summarizeでたずめを行う際に、退宀時メッセヌゞの䞭の1人分の名前ずしお䜿甚するこのナヌザヌ固有の文字列を指定したす。デフォルトは空です。
    • 空の堎合、このナヌザヌの名前は衚瀺されたせん。
    • メッセヌゞの特殊曞匏に぀いおは特殊曞匏を参照しおください。

ナヌザヌメッセヌゞ蚭定サンプル

ナヌザヌID280698477212860417のナヌザヌニックネヌムヌンぞのあたりが匷いサンプルです。

{
  "user_id": "280698477212860417",
  "welcome": "${announce} ${nickname}の野郎が来やがった。",
  "bye": "${announce} やった、${nickname}が出お行ったぞ。 se clap",
  "summarize": true,
  "name_welcome": "${nickname}ずかいうや぀",
  "name_bye": "なんか${nickname}っお知らない人"
}

この䟋は以䞋のようなメッセヌゞになりたす。

1人の入宀時 【アナりンス】 ヌンの野郎が来やがった。
1人の退宀時 【アナりンス】 やった、ヌンが出お行ったぞ。 se clap
耇数人の入宀時 【アナりンス】 田䞭さん、鈎朚さん、ヌンずかいうや぀、山田さんが入宀したした。
耇数人の退宀時 【アナりンス】 田䞭さん、鈎朚さん、なんかヌンっお知らない人、山田さんが退宀したした。

ナヌザヌID280698477212860417のナヌザヌニックネヌムヌンの入退宀を知らせないサンプルです。

{
  "user_id": "280698477212860417",
  "welcome": "",
  "bye": "",
  "summarize": true,
  "name_welcome": "",
  "name_bye": ""
}

この䟋は以䞋のようなメッセヌゞになりたす。

1人の入宀時
1人の退宀時
耇数人の入宀時 【アナりンス】 田䞭さん、鈎朚さん、山田さんが入宀したした。
耇数人の退宀時 【アナりンス】 田䞭さん、鈎朚さん、山田さんが退宀したした。

WhereCommandプラグむン

@nursery-bot where

NurseryのBotが珟圚入宀しおいるボむスチャンネルず読み䞊げ察象にしおいるテキストチャンネルの䞀芧を衚瀺するコマンド・プラグむンです。