如何修改Google Script代码以仅向Discord发送指定交易信号消息
如何修改Google Script代码以仅向Discord发送指定交易信号消息
嘿,我完全懂你的困扰——现在你的脚本会把TradingView发来的所有内容(比如"Eat""Run"这种无关消息)都转发去Discord,而你只想让它发送"Long USDJPY TF1"和"Short USDJPY TF1"这两个指定信号对吧?别担心,咱们只需要给代码加几道"关卡",过滤掉所有非目标内容就行。
核心思路是:只有当输入消息经过验证,最终生成了你想要的那两个交易信号时,才执行Discord发送操作;其他所有情况直接忽略,不发送任何内容。
下面是修改后的完整代码,我标注了关键改动的地方:
function doPost(e) { // ตรวจสอบว่ามีข้อมูลส่งมาจาก Tradingview เข้ามาหรือไม่ if (!e || !e.postData || !e.postData.contents) { return ContentService.createTextOutput("No POST data received."); } // Discord Webhook URL const discordWebhookUrl = "ME"; // 记得替换成你的实际Webhook URL // รับข้อความจาก post data และตัดช่องว่างหัวท้ายออก let inputMessage = e.postData.contents.trim(); // ใช้ PropertiesService ในการเก็บสถานะ Trend (Bullish หรือ Bearish) const scriptProperties = PropertiesService.getScriptProperties(); let currentTrend = scriptProperties.getProperty("currentTrend"); // 初始化要发送的消息为空,只有符合条件时才赋值 let messageToSend = ""; // ตรวจสอบข้อความสำหรับเปลี่ยน Trend (只更新趋势,不发送消息) if (inputMessage === "Bullish") { currentTrend = "Bullish"; scriptProperties.setProperty("currentTrend", currentTrend); } else if (inputMessage === "Bearish") { currentTrend = "Bearish"; scriptProperties.setProperty("currentTrend", currentTrend); } // 只有当趋势存在,且输入是合法的交易信号时,才生成要发送的消息 else if ((inputMessage === "Buy" || inputMessage === "Strong Buy") && currentTrend === "Bullish") { messageToSend = "Long USDJPY TF1"; } else if ((inputMessage === "Sell" || inputMessage === "Strong Sell") && currentTrend === "Bearish") { messageToSend = "Short USDJPY TF1"; } // 只有当有合法的要发送消息时,才执行Discord发送逻辑 if (messageToSend) { // เตรียม payload สำหรับส่งไปยัง Discord const payload = { content: messageToSend }; // กำหนด options สำหรับ UrlFetchApp.fetch const options = { method: "post", contentType: "application/json", payload: JSON.stringify(payload), muteHttpExceptions: true }; // ส่งข้อความไปที่ Discord ผ่าน Webhook try { const response = UrlFetchApp.fetch(discordWebhookUrl, options); return ContentService.createTextOutput("Success: " + response.getContentText()); } catch (error) { return ContentService.createTextOutput("Error: " + error); } } else { // 收到无关消息或不符合条件的信号,直接返回不处理 return ContentService.createTextOutput("Invalid message, no content sent to Discord."); } }
关键改动说明:
- 新增
messageToSend变量:用来存储最终要发送的合法消息,初始为空,只有符合条件时才被赋值。 - 趋势更新不触发消息发送:原来的代码里趋势更新时可能会修改
inputMessage,现在我们只更新后台存储的趋势状态,不生成发送内容。 - 严格的消息过滤逻辑:只有当输入是
Buy/Strong Buy且趋势为Bullish,或者Sell/Strong Sell且趋势为Bearish时,才会生成目标消息;其他所有情况(包括"Eat""Run"这类无关内容)都不会触发发送。 - 发送前置判断:只有当
messageToSend有值时,才执行Discord发送操作,否则直接返回提示,不做任何发送动作。
这样修改后,你的脚本就只会把你想要的两个交易信号发送到Discord,其他乱七八糟的内容都会被直接过滤掉啦!
备注:内容来源于stack exchange,提问作者Gfour
相关产品推荐
相关产品推荐

