1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Discord.pyで翻訳Botを作る

Posted at

前置き

今回はPythonとgoogletransというGoogle翻訳のAPIを使用して、メッセージを翻訳してくれるDiscordBotを作ります

環境 / インストールするもの

環境

  • MacOS 11.2.3
  • VisualStudioCode
  • Python 3.9.4

インストールするもの

流れ

① ユーザーがメッセージを送信
② そのメッセージをbotが取得
③ googletransを使用して翻訳
④ 翻訳したものをメッセージとして送信

コード

import discord
from googletrans import Translator

token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

client = discord.Client()
translator = Translator()

@client.event
async def on_ready():
    print("run")

@client.event
async def on_message(message):
    # botの発言には反応しない
    if message.author.bot:
        return

    # メッセージの言語判別
    lang = translator.detect(message.content).lang

    # 言語が日本語だったら
    if lang == "ja":
        trans_text = translator.translate(message.content, src = lang, dest = "en").text
        await message.channel.send(trans_text)

    # 言語が英語だったら
    elif lang == "en":
        trans_text = translator.translate(message.content, src = lang, dest = "ja").text
        await message.channel.send(trans_text)

client.run(token)

コードはこれだけです

実行結果

image.png

いい感じ、毎日お肉食べたい

戦ったエラー達

もし同じエラーになった人がいたらすぐに解決できるようざっと書いておきます

AttributeError: 'NoneType' object has no attribute 'group'

このエラーはgoogletrans側の問題のようで下記のバージョンをインストールしたら解決しました

pip install googletrans==4.0.0-rc1

参考
https://qiita.com/maboy/items/9a1336ece11db4630858

TypeError: Object of type Message is not JSON serializable

これに関しては自分の問題で、言語判別の記述を

- lang = translator.detect(message).lang
+ lang = translator.detect(message.content).lang

こう書いてしまっていました
これだとtranslator.detectの引数をstr型で渡せていないのでそれが原因です、恥ずかしい

最後に

流石にスラングなどの精度が微妙ではあるので、今度は普段お世話になっているDeepL翻訳のAPIを使ってみて記事も上げようと思います

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?