Discordで自動翻訳BOTを作った話
マカです。
Discordの翻訳BOT「MTS」(MakaTranslateService)を作りました!
なんで作ったかというと、
無料の翻訳BOTがない!!!(あっても10000文字まで無料とかだった)
あれ、これ自分で作れば無料じゃね!?!?!?
ってことで作りました。
サポートサーバー↓
お知らせ
2024/05/02 /noticeを追加しました。サーバー個別のお知らせも載せているので定期的に見てあげてください。
2024/06/01 二代目翻訳bot「太郎」を作成しました。
導入方法のところにリンクあります。
2024/06/02 チャンネルごとの言語設定をできるようにしました。
詳細はこちらの記事から
2024/06/04 三代目翻訳bot「次郎」を作成しました。
導入方法
2024/07/04 三代目翻訳bot「次郎」↓
https://discord.com/oauth2/authorize?client_id=1258420632811602051&permissions=294742223888&integration_type=0&scope=bot+applications.commands
2024/06/01 二代目翻訳bot「太郎」↓https://discord.com/oauth2/authorize?client_id=1246107625599533166&permissions=827318430800&scope=bot+applications.commands
MTS↓
下記リンクを押して導入してください。(認証Botではないです。)(Botを制作しているアカウントでの2FA認証は有効にしてます。)https://discord.com/oauth2/authorize?client_id=1154813675803263076&permissions=9624485194896&scope=bot+applications.commands
(2024/04/12なんかパーミッションエラー出てました。招待コード下の方で多分いけます。)
使用方法
prefix(接頭語) はv!です。
サーバーに導入したら、まずは
v!set [第一言語] [第二言語]
で言語を指定してください。(管理者権限があるアカウントのみ有効)
[]内はGoogle翻訳ISO-639 コードで指定してください。
(Deepl翻訳が対応していない言語には自動翻訳は対応していません。)
対応していない言語であれば対応していない旨が表示されます。
v!setをしない場合自動翻訳はできません。(コマンドを打った場合に警告が出ます。)
また、サーバーごとの言語設定なので、チャンネルごとでの設定はできません。
自動翻訳を開始する場合
v!startでGoogle翻訳を使用した自動翻訳を、コマンドを打ったチャンネルで開始することができます。
v!start deepl でDeepl翻訳を使用した自動翻訳をプレミアサーバーの場合は開始できます。
自動翻訳を終了する場合は
v!stop
で止めることができます。
また、スラッシュコマンドで開始、終了することもできます。
/automatictranslation
スラッシュコマンドを使用した場合、プレミアサーバーではデフォルトでDeepl翻訳での自動翻訳が有効になります。
プレミアサーバー以外ではGoogle翻訳になります。
また、プレミアサーバーであってもDeepl翻訳の上限に達した場合は自動でGoogle翻訳に指定されます。
翻訳したメッセージを表示するまでにかかる目安の時間は
Google翻訳2500ms(2.5秒) / Deepl翻訳800ms(0.8秒)
です。
一時的な翻訳
v!tr [言語コード] [翻訳する文]
でGoogle翻訳します。
言語コードはv!setで使用するGoogle翻訳ISO-639 コードで指定してください。
このコマンドの場合はGoogle翻訳ISO-639 すべてが使用できます。
v!usage
Deepl翻訳の全サーバーでの利用度を表示します。
v!payment
あなたの寄付状況およびプレミア使用率を表示します。
仕様とか
このBotでは、Google翻訳はGAS(GoogleAppsScript)を使用しています。
自動翻訳時、Google翻訳を使用する場合2.5秒ぐらい翻訳に時間がかかります。
Deepl翻訳の場合はモノによりますが、0.8秒ぐらいで翻訳されます。
自動翻訳した文章は、Bot側で翻訳元のメッセージidと翻訳後のメッセージidを一定時間キャッシュ(一時ファイル)に保存します。
メッセージidは0秒から12時間ほど保持されます。
メッセージ自体の保存、保持はされません。
なぜキャッシュにメッセージidを保存するかというと、翻訳元メッセージが削除された場合、翻訳後のメッセージも削除するため、あと翻訳元メッセージが編集された場合、翻訳後のメッセージも編集するためです。
メッセージが連投された場合は翻訳されないことがあります。
あとURLなどは省略されます。
Deepl翻訳は、APIが無料ではないので寄付してくださった方が指定したサーバーでのみ有効です。
指定できるサーバーの数及び期間は寄付してくださった量によって変わります。
寄付はPayPay一口¥2,500(JPY)の予定です(要相談)(Deepl APIが¥2,500/100万文字なので)(寄付が多かったら¥500(JPY)とかも考えます)
あまりにも使用量が多かったらDeeplを使用した自動翻訳できる期間を変更する場合があります。
なお、Deeplを使用した自動翻訳であっても、メッセージを編集した場合は編集後のメッセージはGoogle翻訳で翻訳されます。
個人制作なのと、使用しているサーバーの性能があまり良くないのでbotが止まる場合やエラーが発生する場合がありますが、目をつぶってください、、、
10分以上止まってたらサポートサーバーまでお願いします。
また、導入する際に一部権限を無効にした場合はBOTが機能しない場合があります。
またBOT自体完全ではないのでバグって落ちることがあります。
あなたもBOTを作ってみませんか?
自分で作れば無料なこと結構あります!
あとこのBOTではGAS(GoogleAppsScript)を使用してGoogle翻訳を行っていますが、利用頻度が高くなるとGASへのリクエストが多くなり、結構エラー吐きます
なので自分で作ったほうがいいですはい。
このBOTの原型となるソースコードをおいておくのでぜひ作ってみてください!(コードはそんなにきれいじゃない)
https://github.com/makamaika/discord-automatictranslation-v13
githubにも注意書きがありますが、GASで作ったAPIはmaka(この記事の作者)が作ったものなので、適宜変更してください。(変更しなくても多分使えますが動作保証はしません。)
ついでにGASでGoogle翻訳Webアプリケーションの作り方
1, https://script.google.com/home にアクセスします(Googleアカウントが必要)
2, 左上の「新しいプロジェクト」を押して新規プロジェクトを作成します。
3, プロジェクト名を変えます(後々わからなくなるので)
4, コードを書きます
以下のコードに書き換えてください。
function doGet(e){
var p = e.parameter;
var translatedText = LanguageApp.translate(p.text, p.source,p.target,{contentType: 'text'});
return ContentService.createTextOutput(translatedText);
}
5, 保存します。
フロッピーディスクマーク(戻る進むの一個右、実行ボタンの一個左)をクリックしてください。
6, 右上のデプロイボタン押してデプロイを管理を押してください。
7, デプロイメントの作成を押してください。
8, 左上の歯車を押してウェブアプリを選択してください。
9, アクセスできるユーザーを全員に変更して、右下のデプロイボタンを押してください。
10, ウェブアプリのurlをコピーしてください。
11, botのコードのhttps://script.google.com/macros/s/からexecまでのurlを変更してください。
保存して完了です。
お疲れ様でした。
この記事が気に入ったらサポートをしてみませんか?