[discord.js] Slash Commands Google 검색 명령 샘플 만들기

https://zenn.dev/tubuan/articles/discordjs-slash-commands
https://zenn.dev/tubuan/articles/2f998742925526
위 두 기사에 적힌 코드를 조합해서 만들면서.
해설은 앞의 두 문장을 보면 이해하기 때문에 이 문장에서 생략한다.

Discord 에 대한 POST 명령 데이터


{
  "name": "google",
  "description": "Googleで検索します。",
  "options": [
    {
      "name": "検索ワード",
      "description": "検索ワードを入力",
      "type": 3,
      "required": true
    }
  ]
}

Bot 측 코드


index.js
const discord = require('discord.js');
const client = new discord.Client();
const serp = require('serp');

client.on('ready', () => {
	client.ws.on('INTERACTION_CREATE', async interaction => {
		const command = interaction.data.name.toLowerCase();
		const args = interaction.data.options;
		if (command === 'google') {
			try {
				var options = {
					host: 'google.co.jp',
					qs: {
						q: interaction.data.options[0].value,
						filter: 0,
						pws: 0
					},
					num: 3
				};
				const links = await serp.search(options);
				client.api
					.interactions(interaction.id, interaction.token)
					.callback.post({
						data: {
							type: 4,
							data: {
                                embeds: [
                                    {
                                        title: "検索結果",
                                        description: `[${links[0].title}](https://www.google.co.jp${links[0].url})\n\n[${links[1].title}](https://www.google.co.jp${links[1].url})\n\n[${links[2].title}](https://www.google.co.jp${links[2].url})`
                                    }
                                ]
							}
						}
					});
			} catch (error) {
				client.api
					.interactions(interaction.id, interaction.token)
					.callback.post({
						data: {
							type: 3,
							data: {
								flags: 64,
								content: "検索結果が見つからなかったようです…\n検索語句を変えてもう一度試してください。"
							}
						}
					});
			}
		}
	});
});

client.login('<Bot TOKENをここへ>')

좋은 웹페이지 즐겨찾기