はじめに
こんにちは、なりかくです。
今回は、discord.jsで受け取ったメッセージをすべて勝手に英語に翻訳するプログラムを作っていこうと思います。
翻訳に使うAPI
今回使う翻訳APIは、GAS(Google Apps Script)の中にあるGoogle翻訳のAPIです。
今回はこの記事にあるコードを活用して作成していきます。
翻訳するのに今回作ったコードは以下のようになります。(URLは自身で作成したものに置き換えてください。)
簡単に使えるように作っています。コードの解説は...まあ省略します。
function gasTranslate(text, source, target) {
return new Promise((resolve, reject) => {
request({
url: `https://script.google.com/macros/s/<自身のやつ>/exec?text=${encodeURIComponent(text)}&source=${encodeURIComponent(source)}&target=${encodeURIComponent(target)}`,
json: true
}, function (error, response, body) {
if (error) {
reject(error);
} else {
resolve(body);
}
});
});
}
メッセージを受け取る
メッセージを受け取るには、メッセージインテントを有効にする必要があります。このことについては6日目の記事に詳しく記載しているのでそちらをお読みください。
出来上がったコード
出来上がったコードがこちらになります。
index.js
const request = require("request");
const { Client, GatewayIntentBits, IntentsBitField } = require('discord.js');
const { token } = require('./config.json');
const client = new Client({ intents: [GatewayIntentBits.Guilds, IntentsBitField.Flags.GuildMessages, IntentsBitField.Flags.MessageContent] });
client.on('ready', () => {
console.log(`${client.user.tag}でログインしました。`);
});
client.login(token);
client.on('messageCreate', async message => {
try {
if (message.author.bot) return;
let trans = await gasTranslate(message.content, "ja", "en");
message.reply(trans);
} catch (error) {
console.error(error);
}
});
function gasTranslate (text, source, target) {
return new Promise((resolve, reject) => {
request({
url: `https://script.google.com/macros/s/<自身のやつ>/exec?text=${encodeURIComponent(text)}&source=${encodeURIComponent(source)}&target=${encodeURIComponent(target)}`,
json: true
}, function (error, response, body) {
if (error) {
reject(error);
} else {
resolve(body);
}
});
});
}
実際に動かしてみると、このように送ったメッセージがすべて自動で翻訳されるようになりました。
さいごに
まあ需要は知りませんが、コードをいい感じに改善するといい感じになると思います。
以上です、最後までお読みいただきありがとうございました。