button.js 3.31 KB
const { MessageActionRow, MessageButton, Interaction } = require('discord.js');
var disabled_var={
	en:true,
	ko:false,
	jp:false
};
var label_var={
	en:'😛', // 초기값 영어(disabled),  버튼 선택시 함수가 돌아가는 것이므로 처음엔 X표시
	ko:'한국어',
	jp:'일본어',
};
var current_country='영어' // 초기값 영어
function trans_disabled_var(input_str){
	if (input_str == "en"){
		disabled_var.en=true;
		disabled_var.ko=false;
		disabled_var.jp=false;
		label_var.en = '😛';
		label_var.ko = '한국어';
		label_var.jp = '일본어';
		current_country = '영어'; 
	}
	else if (input_str == "ko"){
		disabled_var.en=false;
		disabled_var.ko=true;
		disabled_var.jp=false;
		label_var.en = '영어';
		label_var.ko = '😛';
		label_var.jp = '일본어';
		current_country = '한국어';
	}
	else if (input_str == "jp"){
		disabled_var.en=false;
		disabled_var.ko=false;
		disabled_var.jp=true;
		label_var.en = '영어';
		label_var.ko = '한국어';
		label_var.jp = '😛';
		current_country = '일본어'; 
	}
	// 변수가 3개밖에 안되니깐, 가시성위해서 / 어느 언어로부터 바뀌었는지 모르기 때문에, 편하게 변수에 일일이 할당함.
	
	// 변수가 100개였다면, 임시 변수 만들고 추적해서 어느 언어에서 바뀌었는지 확인하고, if(임시변수)써서 이모지 할당하고, 
	// 그전꺼, 바뀌어야 할 국가변수 바꿈(받은 str값 label_var 배열(?) for 문 돌려서 찾음)
}
exports.run = async (client, msg, args, prefix) => {
    const row = new MessageActionRow()
		.addComponents(
			new MessageButton()
				.setCustomId('korean')
				.setLabel(label_var.ko)
				.setStyle('PRIMARY')
				.setDisabled(disabled_var.ko),
			new MessageButton()
				.setCustomId('japanese')
				.setLabel(label_var.jp)
				.setStyle('PRIMARY')
				.setDisabled(disabled_var.jp),
			new MessageButton()
				.setCustomId('english')
				.setLabel(label_var.en)
				.setStyle('PRIMARY')
				.setDisabled(disabled_var.en),
		); //버튼 생성
	await msg.reply({ content: '번역하고 싶은 언어를 골라주세요. 현재 언어는 '+ current_country+ '입니다.', components: [row] });
		//버튼 출력
	client.on('interactionCreate', interaction => {
		if (!interaction.isButton()) return;
		
		if(interaction.customId === 'korean'){
			global.trans_var ='ko';
			trans_disabled_var('ko');
		}
		
		else if(interaction.customId === 'japanese'){
			global.trans_var ='jp';
			trans_disabled_var('jp');
		}
		else if(interaction.customId === 'english'){
			global.trans_var ='en';
			trans_disabled_var('en');
		}

		interaction.update({
			components: [
				new MessageActionRow()
				.addComponents(
					new MessageButton()
						.setCustomId('korean')
						.setLabel(label_var.ko)
						.setStyle('PRIMARY')
						.setDisabled(disabled_var.ko),
					new MessageButton()
						.setCustomId('japanese')
						.setLabel(label_var.jp)
						.setStyle('PRIMARY')
						.setDisabled(disabled_var.jp),
					new MessageButton()
						.setCustomId('english')
						.setLabel(label_var.en)
						.setStyle('PRIMARY')
						.setDisabled(disabled_var.en),
				)
			]
		})
		
	});
};


exports.config = {
    name: '나라',
    aliases: [],
    category: ['Translate'],
    des: ['봇이 띄워주는 버튼을 눌러서 번역할 언어(나라)를 선택합니다.'],
    use: ['!나라']
};