Discordテキストチャンネル読み上げbot、Sherbet(シャーベット)を作成しました。

※随時更新してきます。
更新日:2021/12/25


-----------------------------------------------
 名前と使い方と機能
-----------------------------------------------
名前:Sherbet(シャーベット)

f:id:mattari_ui:20210216000406p:plain

※アイコンは「ねりうめ先生」に描いてもらいました!
使い方:読ませたいテキストチャンネルで「.join」を入力すると、
コマンド入力者が参加しているボイスチャンネルにSherbetが参加します。
以降そのテキストチャンネルの内容を、
ボイスチャンネル内に読み上げてくれます。
botをボイスチャンネルから切断したいときは、
右クリックで切断を選ぶか、
「.bye」を入力すると退出します。
参加しているボイスチャンネルにSherbet以外誰もいないときは自動で切断します。

今現在Sherbetがどれくらい負荷がかかっているのかアクティビティで確認ができます。
X/Y Serverをプレイ中と表示されるので、
XがYの値に到達していなかったら呼び出しが可能です。
(Xが今現在のSherbet呼び出し数。Yが最大呼び出し可能数を表しています。)

機能:
・テキストチャンネルの読み上げ機能。
・ボイスチャンネル入退室通知機能

-----------------------------------------------
 質問されそうなことを予測して先に書いておくQ&Aコーナー
-----------------------------------------------
Q:私のサーバーでも使いたい!
A:現状ういちーが参加しているサーバーのみ使用を許しています。
 第三者のサーバーでの使用を許すと、現存の他読み上げbotみたく性能上限で使用出来なくなるためです。
 コロナ禍の影響かと思われますが、読み上げbotの需要が高まっているようです。
 追記:いつになるかわかりませんが、最終的にサーバ版とローカル版の2種類にしようかなと考えてます。サーバ版は身内以外にも公開予定。
Q:ういちーさんが参加しているサーバーです。botを使いたいです。
A:ういちーにサーバー管理者から連絡をくれれば対応します。
 サーバーにbotを招待するにはサーバー管理者権限の人が招待URLを踏む必要があります。
Q:botの機能しょぼくない?
A:ういちーがDiscordbot作成初心者なので許してください。何でも以下略
 現存の読み上げbotのほうが遥かに優秀です。
 唯一メリットあるとしたら、botのサーバーへの導入を身内限定にしているため、
 性能上限でbotが起動しない!ってことがありません。
 ※ただし現在ういちーPC上でbotを動かしているので、ういちーPC電源オフ時は動きません。
  ある程度安定したらサーバー上にbotを持っていくので、近いうちにこれは改善される予定です。
Q:不具合出ました!
A:下記に懸案と対応一覧を載せています。
 そこに載っているものについては、直るのを気長に待っていてください。
 もし懸案と対応一覧にないものを見つけた場合、ういちー宛に連絡くれればいつか対応します。
Q:単語の読みがおかしい。
A:辞書登録機能をすでに作ってはいますが、1個1個対応するとキリがないので
 どこかで一般的な単語については一括で辞書登録します。
 専門的な単語は対応する気はないです。
 (ういちー自身がよく使うものは対応するかもしれませんが)


-----------------------------------------------
 懸案と対応一覧
-----------------------------------------------
〇 対応済
□ 暫定対応
△ 対応中
・ 懸案未対応
-----------------------------------------------
〇男性の声なので女声の聴きやすい声に変える必要有。
〇ほぼ同時にテキスト書き込まれた時に、最初のテキストしか読まない
〇Sherbet読み上げ中に次の文章が投下されると、読み上げ中断プラスでブッキングした文章もスキップ
〇長文の時途中からゆっくりになって糞笑える。再現しないので完了。
〇複数置換対象あるときに、1回置換すると処理抜けるバグあり。
〇読み上げのチャンネルを全て取得ではなく、ログインコマンドを入力されたチャンネルから取得。
〇読み上げ対象チャンネルが変わるバグあり。(通称ちんぽにゃバグ)
〇ついでにbotのアイコンを専用の何かにしたい
〇ログイン時挨拶
〇PC起動時スタートアップでbot開始するようにしたい
〇リプライ返信機能追加
〇~の対応
〇画像アップロードされた時エラーにせず、画像省略と読み上げ。
〇お別れの挨拶追加
〇特定の条件で無限ループするときがある
〇.join時のエラー処理がひどいので対処必要。
〇設定値の外出し(設定ファイル作成)
〇アクティビティを設定
〇空回りした時のイベント取得時にはログを出力させないように変更。
〇入退室通知
〇入退室時サーバで名前変えてる場合はニックネームで読みたい。
〇入退室通知でサーバすべてのボイスチャンネルを通知しているので参加しているボイスチャンネルのみ通知する
〇複数サーバーでSherbetを使われた時に動かないと思われる。各サーバー毎に変数を持つ。
〇接続数をアクティビティに表示に変更。また最大接続数を設定で持ち、接続数が最大接続数超えるときエラーメッセージを表示に変更。
〇右クリックメニューで切断した時、ログイン情報を持ち続けるため対策。
〇一斉に退室して自動切断発生した時、退室通知読み上げから次の退室通知読み上げするときにもう誰もいなくて再生エラーになることがある。
〇@リプライ時、IDで読み上げるのを名前読みにしたい。
〇自動切断機能(ロールを自動設定も完了)
〇ログのファイル出力
〇ユーザ辞書置換機能(手動教育)
〇手動切断後、再生はしないが入退室通知は動いちゃう件
〇改行ある時に生成エラー発生するのを修正
〇特定の文字の組み合わせで再生エラーが発生していたのを修正。
〇一般的な記号や図形を読めるよう修正。

□自動切断後又は右クリック切断をした後に、再ログインが出来ないことがある。
→例外キャッチして再ログインを促すメッセージを一旦表示
→1分くらいまてばログインできる。対策検討中。

△絵文字対応(200種類ほど発音教育。随時増やします。)
△Sherbetサーバ版を作る。
△手動切断後、.byeでエラーメッセージ出ない
→再現しないので様子見。

・辞書ファイルのサーバごと管理。ユーザ辞書教育コマンド作成
→サーバ化の際対応が厳しいことが判明。保留

 

-----------------------------------------------
 更新履歴
-----------------------------------------------
ver1.24 2021/12/25
・特定の文字の組み合わせで再生エラーが発生していたのを修正。
・一般的な記号や図形を読めるよう修正。

ver1.23 2021/7/03
・改行ある時に生成エラー発生するのを修正

ver1.22 2021/6/05
・入退室通知でサーバすべてのボイスチャンネルを通知しているので参加しているボイスチャンネルのみ通知するを再修正。
・無駄なインポートを削除
・手動切断後、再生はしないが入退室通知は動いちゃうのを修正

ver1.21 2021/5/22
・中間ファイルのテキストファイルを出力しないよう変更

ver1.21 2021/5/16
・自動切断機能のためのロール自動設定対応
・サーバ化にむけた内部修正

ver1.20 2021/5/04
・ログ出力実装。

ver1.19 2021/4/30
・絵文字発音現在200種類ほど対応
・@リプライ時、IDで読み上げるのを名前読みに変更。ニックネームある時はニックネームで読む。
・自動切断後又は右クリック切断をした後に、再ログインが出来ないことがある問題について、
 例外キャッチして再ログインを促すメッセージを一旦表示に変更。

ver1.18 2021/4/29
・絵文字発音現在150種類ほど対応
・接続数をアクティビティに表示に変更。また最大接続数を設定で持ち、接続数が最大接続数超えるときエラーメッセージを表示に変更。
・右クリックメニューで切断した時、ログイン情報を持ち続けるため対策。
・自動切断発生した時、退室通知読み上げから次の退室通知読み上げするときにもう誰もいなくて再生エラーになることがある問題対策。

ver1.17 2021/4/26
・複数サーバからの呼び出しに対応

ver1.16 2021/4/24
・絵文字発音現在90種類ほど対応
・空回りした時のイベント取得時にはログを出力させないように変更。
・join,bye時の例外処理を追加。
・入退室通知でサーバすべてのボイスチャンネルを通知しているので参加しているボイスチャンネルのみ通知する

ver1.15 2021/4/17
・絵文字発音20種類ほど対応。今後随時増やします。
・~の読み上げエラー対応。

ver1.14 2021/4/17
・絵文字仮対応。絵文字をどう発音するかの教育はまだ未実施。

ver1.13 2021/3/24
・アクティビティを設定
・設定値の外出し実装
・無駄に外部モジュールを使用していたところを別のモジュールで実装。それにより起動が微粒子レベルで速くなるはず。

ver1.12 2021/3/20
・ログを大幅に変更
・入退室通知機能追加
・上記の時ニックネームがあるときはニックネームを通知するよう修正。
・特定の条件で無限ループする問題対応
・画像とURL投稿時、省略ではなく投稿されましたと通知するよう変更

ver1.11 2021/3/14
・アレな挨拶を正常化しました。
・自動切断仮実装

ver1.10 2021/2/14
・1度Sherbetを使用して退出させても、処理が動いていた問題を修正。

ver1.09 2021/2/11
・サーバ稼働に向けた内部修正。
・挨拶をEmbed投稿に変更。ある意味改悪化。

ver1.08 2021/2/10
・ほぼ同時にテキスト書き込まれた時に、最初のテキストしか読まない問題解決
・Sherbe読み上げ中に次の文章が投下されると、読み上げ中断プラスでブッキングした文章もスキップ解決

ver1.07 2021/2/10
・お別れの挨拶追加とログイン時の挨拶を修正。
・内部的に処理を改善
ver1.06 2021/2/9
・画像アップロード時のエラーを修正。
・ちんぽにゃバグを起こした部分の初期化処理を内部改善。「.join」からチャンネル取得に変更。

ver1.05 2021/2/2
・ちんぽにゃバグを修正。

ver1.04 2021/1/31
・リプライ返信機能追加
・ユーザ辞書登録機能追加
・辞書置換したあと、1回置換しただけで処理が抜けるバグを修正。

ver1.03 2021/1/31
・ログイン時のチャンネル以外は読み上げしないようになりました

ver1.02 2021/1/30
・設定値最適化
・ガバ回避のためにういちーPC起動時自動でbotも起動するようにした

ver1.01 2021/1/30
・ボイスを女性声
・ボイスチャンネルにbot接続時挨拶するように(ちんぽにゃと言ってくれる)
・名前をSherbet(シャーベット)に変更

Ver1.00  2021/1/30
・稼働
-----------------------------------------------
 問い合わせ先
-----------------------------------------------
Twitter:@uiuifood
Discord:ういちー#8329

-----------------------------------------------
 最後に
-----------------------------------------------
bot作成初心者の自分でも、bot作成の記事を見て作ることが出来たので、
皆さんもDiscordやLine等のBotを作ってみませんか?

Sherbetもbot作成の記事をほぼコピペに近いです。