LoginSignup
2
0

More than 1 year has passed since last update.

【10日目】discord.jsで送られてきたメッセージをすべて勝手に英語に翻訳する

Posted at

はじめに

こんにちは、なりかくです。
今回は、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);
            }
        });
    });
}

実際に動かしてみると、このように送ったメッセージがすべて自動で翻訳されるようになりました。
image.png

さいごに

まあ需要は知りませんが、コードをいい感じに改善するといい感じになると思います。
以上です、最後までお読みいただきありがとうございました。

2
0
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
2
0