Discord トリガーなし自動翻訳Botについて

2023年12月17日日曜日

便利

t f B! P L

翻訳Botの導入方法

前提知識不要で翻訳Botを導入できる記事がないなと思ったので 
1から10まで、まとめたいと思い、今回の投稿に至りました。
ただし、すでに導入済みのため、若干の差異、また、こちらも知識不足のため
誤っている部分もあるかもです。ぐぐってもよくわからない・・・という方向けの記事になります。
また、参考にした記事は下部に載せておきます。

前提

どういったものか

以下のような完全自動翻訳Botを想定しています。



類似の機能について

翻訳Botは、Discord公式にて、すでに提供されているものもあります。(公式ではないかも?)
例をあげると「Translate Bot」「Smoogle Translate」などです。
これらでも翻訳はできるのですが、翻訳のトリガーが「/en」や「国旗のリアクション」をつける必要があったりと完全自動ではできません。
今回は完全自動翻訳ができるものとなります。

今回説明する翻訳Botのデメリット

Discord公式のBotは、チャンネルにbotを追加するだけで基本的には常時稼働します。
ただし、今回はPythonを用いた自作Botであるため、常時稼働させるためには以下の対応が必要になります。
①PCをつけっぱにする
②GitHubなどにソースを上げて、デプロイして、サーバー上で稼働させる

私は②について、めんどかったので①で現在運用しています。(もともとPCはつけっぱだったので)
必要に応じて稼働させるでもいいと思います。

必要な環境

・Discordを導入済み
・Windowsである(Macでもできると思うが未確認)
・インストールできる環境
・クレジットカード保持(後述DeepLの登録に必要、無料です)

必要なダウンロード・インストール

・Python

必要なアカウント登録

・DeepL(APIトークンのため)
・Developer Portal(Botトークンのため)

いざ実践

ここから最後まで全部書いていきます。
漏れあったらすみません。

Pythonのインストール

Pythonの公式
Pythonの非公式 ダウンロードリンク

公式でもいいですが、わかりにくいので非公式のほうを開きます。

最新のバージョンはDiscord.pyが動かない場合があるので
3.11系をダウンロードします。



ダウンロードしたexeでインストールします。
画面の通り、PATHはチェックONにしてください。


完了しましたら、正常にインストールされているか、PATHが有効であるか確認します。
画面の箇所で、「cmd」と入力するか、Windowシステムツール>コマンドプロンプトを開いてください。
開いた後、以下のどちらかを入力してください。
「python --version」
「python3 --version」
この実行結果が、先ほどダウンロードしたバージョンが返ってきたら成功です。

もしここで、どちらも内部コマンドまたは外部コマンド~と返ってきたら
うまくインストールできてないです。(インストール時のPATHにチェックONし忘れ)再インストールしましょう。

もしここで、「Python」という文字が返ってきた場合は
WindowsのデフォルトのPythonがなぜか呼び出されています。(理由不明
その場合は以下のアプリ>エイリアスをクリックしてください。

その後、Python.exeにチェックが入っていると思うので外しましょう。



これで、あなたの環境でPythonが動くようになりました。

Botの登録

Developer Portal

アクセス後に画面の通りクリック。

リセットトークンを押下。
このトークンはとても重要なものです。


Botトークンが発行されました。
こちらは大事にメモしておいてください。
漏洩すると、このトークンだけでBotが操作できます。
(とはいえ、漏洩しても悪用できるかといったらなんともですが)


Botを選択し、Intents関連をすべてONにします。


OAuth2のURLジェネレーターにて、SCOPES>BotチェックON


BOT PERMISSIONS>AdministratorチェックONにし下部のURLにて、追加するサーバーを選択できます。
(今回はSend Messagesだけでも動くかもです)


URLにアクセスすると、追加するサーバーを選択する画面がでてきます。
対象を選択し、OKを押しましょう。


これでBotの追加は完了です。

DeepLの登録

DeepL無料登録(API)

リンク正しいと思いますが、個人利用ではなく、開発者向けのAPI Free版です。


よくあるアカウント登録と同じです。メールアドレス登録後、クレジットカードの登録が必要です。(お金はかかりません。サブ垢対策のためです)


完了しましたが、DeepLホーム画面の右上をクリック


アカウントをクリックします。


そして、アカウントタブをクリックします。


下部にスクロールすると、DeepLトークンが記載されています。
こちらもDiscord同様に大事なものなので、漏洩しないようにしましょう。


これで、DeepLの登録は完了です。

Discord.py

Botを動かすためには Discord.py を動かせるようになる必要があります。
コマンドプロンプト(or cmdコマンド)を開き、以下のように実行してください。

python -m pip install -U discord.py

以下のように「failed」などの文字がでていなければOKです。

ちなみにここでバージョンチェックもしているため、新しすぎるPythonをインストールしているとエラーになります。

続いて今回の翻訳Botのソースを作成します。
テキストで以下のソースをコピペします。

ーーーーーーーー
  1. import discord
  2. import re
  3. import deepl
  4. TOKEN = "DiscordBotのトークン"
  5. Channel_ID = "チャンネル名"
  6. client = discord.Client(intents=discord.Intents.all())
  7. def is_jp(st):
  8.     return True if re.search(r'[ぁ-んァ-ン]', st) else False
  9. @client.event
  10. async def on_ready():
  11.     print('start.')
  12. @client.event
  13. async def on_message(message):
  14.     if message.channel.name != Channel_ID:
  15.         return
  16.     if message.author == client.user:
  17.         return
  18.     msg = message.content
  19.     if is_jp(msg) == True:
  20.         lang = "EN-US"
  21.     else:
  22.         lang = "JA"
  23.     trans = deepl.Translator("DeepLのトークン")
  24.     result = trans.translate_text(msg, target_lang=lang)
  25.     result_txt = result.text
  26.     embed = discord.Embed(description=result,color=discord.Colour.from_rgb(130, 219, 216))
  27.     await message.channel.send(embed=embed)
  28. client.run(TOKEN)
ーーーーーーーー

また、コピペ後、前述で取得した「DiscordBotのトークン」と「DeepLのトークン」、また翻訳が動いてほしい「チャンネル名」を置き換えてください。
その後、実行できるように保存時にファイル名を「bot_tran.py」のように拡張子が「.py」になるようにしましょう。

「.py」形式がおそらくPythonに紐づいていると思うので、そのままダブルクリックしましょう。おそらく初回はライブラリエラーなど出ていると思います。
ちょっとどれが必要か忘れてしまったのですが、以下のような感じでコマンドプロンプト上で実行してみてください。(ライブラリエラーはなんとなくどれがエラーかわかると思います)

ーーーーーーーー
pip install [ライブラリ名]

pip install deepl
ーーーーーーーー

実行

以下のようになっていれば成功です。
ぜひお試しください。

まとめ

いかがでしたでしょうか。
私は、外国の方とチャットで会話する機会があったので今回作成に至りました。
(ほとんど外部の記事を参考にしましたが)
誰でもできるのでオススメです。もっといい方法あれば、ぜひ教えてください。

それでは、アディオス


広告

よければおしてちょ!
にほんブログ村にほんブログ村
FC2ブログFC2ブログ

このブログを検索

自己紹介

gazou
あべどん
 Twitter
 Twitch
Hello guys
最近ゲームにはまっている、あべどんです。 既婚、娘二人います。
日中はITサラリーマン、夜はゲームしてます!

もしよろしければ、配信見に来てね!
(twitchリンクからどうぞ!)

ブログ アーカイブ

QooQ