Q&A
実現したいこと
glitchサーバーのdiscord.js v14において、node.jsを使って受け取った値を別のjsに渡したい
・postを受け取る->"server.js"
・受け取った値によってイロイロ処理をわける->"code.js"
やりたいこととしては
discord -> glitch -> GAS -> スプレッドシート参照
________________________________________↓
discord <- glitch <- GAS <- スプレッドシート集計
みたいなことがしたいです。
前提
「Discord.js Japan User Group」の「Glitchで開発を始める人のためのテンプレート」
を参考にしました。
ありがたいことにテンプレートが用意されていたので真似てみたのですが、
server.jsで受け取った値を利用する方法がわかりませんでした。
server.js
server.js
1const http = require("http"); 2const querystring = require("node:querystring"); 3 4//GASでwakeさせること。 5 6http 7 .createServer(function(req, res) { 8 if (req.method == "POST") { 9 var data = ""; 10 req.on("data", function(chunk) { 11 data += chunk; 12 }); 13 req.on("end", function() { 14 if (!data) { 15 res.end("No post data"); 16 return; 17 } 18 var dataObject = querystring.parse(data); 19 console.log("post:" + dataObject.type); 20 21 if (dataObject.type == 'test') { 22 //--> たとえばdataObjectをそのままcode.jsに渡したい 23 } 24 25 26 if (dataObject.type == "wake") { 27 console.log("Woke up in post"); 28 res.end(); 29 return; 30 } 31 res.end(); 32 }); 33 } else if (req.method == "GET") { 34 res.writeHead(200, { "Content-Type": "text/plain" }); 35 res.end("Discord Bot is Oprateing!"); 36 } 37 }) 38 .listen(3000); 39 40if (process.env.DISCORD_BOT_TOKEN == undefined || process.env.DISCORD_BOT_TOKEN == "") { 41 console.log("DISCORD_BOT_TOKENを設定してください。"); 42 process.exit(0); 43} 44 45require("./code.js")
code.js
code.js
1const {Client, GatewayIntentBits} = require("discord.js"); 2const client = new Client({ 3 intents: [ 4 GatewayIntentBits.Guilds, 5 GatewayIntentBits.GuildMembers, 6 GatewayIntentBits.GuildMessages, 7 GatewayIntentBits.MessageContent 8 ] 9}); 10 11client.on("ready", () => { 12 console.log("Bot準備完了!"); 13}); 14 15//ここから 16 17client.on("messageCreate", message =>{ 18 if (message.content === "hello."){ 19 message.channel.send(`hello! ${message.author}`) 20 } 21 22 // server.jsから受け取った値をもとにイロイロ処理したい 23 if (message.content.match(/んちゃ/)) { 24 const reply = await message.channel.send('ほよよ?') 25 await setTimeout(500); 26 await reply.delete() 27 } 28 29 30}) 31 32//ここまで 33 34client.login(process.env.DISCORD_BOT_TOKEN);
試したこと
知ってる方からすると当然かもですが
server.jsの末尾において
module.exports.content='test';
require("./code.js")
では値を渡せませんでした。
補足情報(FW/ツールのバージョンなど)
テンプレを参考にglitchでサーバーを立て、GASでwakeしてます。
別途スプレッドシートをデータベースみたいに使って、値をGAS->glitchに渡してdiscordへ渡して
botとして発言させたい、という狙いです。
js不慣れなのでツッコミ所多いかもですが、何卒アドバイスお願いいたしますm(_ _)m
"dependencies": {
"discord.js": "^14.7.0",
"querystring": "^0.2.1",
},
"engines": {
"node": "16.x"
},
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/03/03 09:37