discord.pyで翻訳Botを作る方法
1. 今回やること
今回は、discord.pyで翻訳Botを作っていきたいと思います。
基本的にPythonのインストールされたWindowsPCが必要です。
また、discord.pyもインストールしておいてください。
2. 翻訳システムを書く
まず、main.pyに以下の内容を書いてください。
import aiohttp
import urllib.parse
def targetToSource(target: str):
return {"ja": "en", "en": "ja", "zh-CN": "ja", "ko": "ja", "ru": "ja"}.get(
target, "en"
)
async def translate(source: str, target: str, text: str):
async with aiohttp.ClientSession() as session:
async with session.get(
f"https://translate.googleapis.com/translate_a/single?client=gtx&sl={source}&tl={target}&dt=t&dj=1&q={urllib.parse.quote(text)}"
) as response:
data = await response.json()
translated_text = "".join(
sentence["trans"] for sentence in data.get("sentences", [])
)
source_language = data.get("src", source)
return {"text": translated_text, "source": source_language}3. DiscordBotの根幹と、コマンドを作る
今回のDiscordBotは、特権インテントを使用します。
先に有効にしておいてください。
また、DiscordBotのTokenを取得しておいてください。
※絶対に流出させないでください。
import discord
from discord.ext import commands
intents = discord.Intents.all()
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.command(name="translate")
async def translate_command(self, ctx: commands.Bot, source: str, target: str, text: str):
data = await translate(source, target, text)
text = data['text']
await ctx.reply(f"{text}")
bot.run("DiscordBotのToken")4. 最終的なソースコード
※main.pyというファイル名で保存してください。
import discord
from discord.ext import commands
import aiohttp
import urllib.parse
def targetToSource(target: str):
return {"ja": "en", "en": "ja", "zh-CN": "ja", "ko": "ja", "ru": "ja"}.get(
target, "en"
)
async def translate(source: str, target: str, text: str):
async with aiohttp.ClientSession() as session:
async with session.get(
f"https://translate.googleapis.com/translate_a/single?client=gtx&sl={source}&tl={target}&dt=t&dj=1&q={urllib.parse.quote(text)}"
) as response:
data = await response.json()
translated_text = "".join(
sentence["trans"] for sentence in data.get("sentences", [])
)
source_language = data.get("src", source)
return {"text": translated_text, "source": source_language}
intents = discord.Intents.all()
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.command(name="translate")
async def translate_command(self, ctx: commands.Bot, source: str, target: str, text: str):
data = await translate(source, target, text)
text = data['text']
await ctx.reply(f"{text}")
bot.run("DiscordBotのToken")5. 実行してみる
py main.py実行し、何もエラーが出なければ成功です。
Botをサーバーにインストールし、
!translate ja en こんにちは!と入力し送信すると、
Hello!と返信されるはずです。
6. エラーが出た!どうしよう
まず、以下の点を確認してください。
Botに適切な権限があるか
BotのTokenが間違っていないか
7. 最後に
翻訳Botが動いてくれたらうれしいです。
ここまで読んでいただきありがとうございました。
最後に、この記事へのいいねとフォローもよろしくお願いします
最後に、この記事へのいいねとフォローもよろしくお願いします。
7. 番外編
投稿主は、以下のDiscordBotを作成しています。
便利なので入れてみてね!
