Skip to content

arpabot/ohno-bot

Repository files navigation

ohno-bot

このリポジトリは ohno-old を TypeScript で書き換えたものです

セルフホストが面倒なら OHNO を導入すると幸せになれます

コマンドのヘルプ

/join

  • ボイスチャンネルに参加します
  • 権限がない場合は参加できません

/leave

  • ボイスチャンネルから退出します
  • 同じボイスチャンネルにいない場合は実行できません

/user-settings show

  • 現在のユーザー設定を表示します

/user-settings speaker <話者>

  • 話者を設定します
  • 現在日本語ネイティブの話者しか対応していません

/user-settings speed <数値>

  • 読み上げるスピードを 0.5 から 2.0 の数値で指定します
  • デフォルトは 1 です

/user-settings pitch <数値>

  • 読み上げる高さを 0.5 から 1.5 の数値で指定します
  • デフォルトは 1 です

/user-settings reset

  • ユーザー設定をデフォルトにリセットします

/guild-settings show

  • 現在のサーバー設定を表示します

/guild-settings reset

  • サーバー設定をデフォルトにリセットします

/guild-settings dict-put <単語> <読み>

  • 辞書を編集します
  • 単語が既に存在する場合は上書きされます

/guild-settings dict-delete <単語>

  • 辞書を削除します
  • 単語が存在しない場合はエラーを返します

/guild-settings dict-list

  • 辞書のリストを CSV で送信します
  • 一応 Excel で開くことができるはずです

/guild-settings の各種トグル

以下のサブコマンドで読み上げる内容を個別に ON/OFF できます:

  • join-leave - 入退室アナウンス
  • move - チャンネル移動アナウンス
  • screen-share - 画面共有アナウンス
  • camera - カメラ ON/OFF アナウンス
  • mute - ミュートアナウンス
  • deafen - スピーカーミュートアナウンス
  • bot-messages - Bot メッセージ読み上げ
  • stickers - スタンプ名読み上げ
  • attachments - 添付ファイル種別読み上げ
  • urls - URL 省略アナウンス

/help [コマンド名]

  • 簡易的なヘルプを見られます

読み上げるコンテンツについて

この Bot は,メッセージのテキストだけではなく,そのテキスト以外のコンテンツやボイスチャンネルに関連する操作についても読み上げます.以下がそのリストです.

  • 添付ファイルとその種類
  • スタンプや絵文字の名前
  • URL(「URL省略」と読み上げます)
  • ユーザー・チャンネルのメンション
  • ユーザーの入退室・移動(移動先のチャンネルも含む)
  • 画面共有 (GoLive) とカメラ配信の開始・終了
  • ミュート・スピーカーミュートの ON/OFF

また,s 単体で読み上げ対象のチャンネルにメッセージが投稿された場合,現在読み上げているコンテンツと読み上げのキューに入っているコンテンツを破棄し,読み上げを停止します.

乱用を防止するため,一つのメッセージにつき読み上げする字数・秒数の制限があります.辞書などによる置換後の字数で 200 文字か,5 秒以内どちらか短い方で読み上げが強制的に停止されます.

バグかなと思ったら

  • Bot のメッセージが読み上げられる!
    • /guild-settings bot-messages で Bot メッセージの読み上げを無効にできます
  • 人間が全員ボイスチャンネルからいなくなったのに OHNO が退出しない
    • 仕様です.これは開発者である yuimaru の思想によってそうされていて,読み上げ Bot がボイスチャンネルを退出するべきタイミングは,ボイスチャンネルを移動するタイミングのみだと思っているのでそうしています.

思想とモチベーション

言語を Rust から TypeScript に変えた理由

誤字ではないです.普通逆だろと思いましたよね.

これには私自身のスキルに問題があって,もっと Rust のことを深く理解してから Rust を使って Bot を作成したいと思ったからです.

モチベーション

なぜ TypeScript なのかというと,薄い Discord API Wrapper の @discordjs/next (@discordjs/{core, ws, rest, util}) を推したいからです.

これらのパッケージは(おそらく,動かそうと思えば)どのランタイムでも動くからです.

まあ Bot の用途によってどの情報が欲しいとか,どの情報が不要とかあるじゃないですか, discord.js 本体は全ての情報をキャッシュしたりとかするわけですよ.

これらのパッケージにはキャッシュとかいう概念もありませんから,自分で実装するとかそういうことをするわけで,これができるとパフォーマンスの面でも嬉しいです.

About

Discord Japanese text-to-speech bot

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •