You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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.");
  }
}

关键改动说明:

  1. 新增messageToSend变量:用来存储最终要发送的合法消息,初始为空,只有符合条件时才被赋值。
  2. 趋势更新不触发消息发送:原来的代码里趋势更新时可能会修改inputMessage,现在我们只更新后台存储的趋势状态,不生成发送内容。
  3. 严格的消息过滤逻辑:只有当输入是Buy/Strong Buy且趋势为Bullish,或者Sell/Strong Sell且趋势为Bearish时,才会生成目标消息;其他所有情况(包括"Eat""Run"这类无关内容)都不会触发发送。
  4. 发送前置判断:只有当messageToSend有值时,才执行Discord发送操作,否则直接返回提示,不做任何发送动作。

这样修改后,你的脚本就只会把你想要的两个交易信号发送到Discord,其他乱七八糟的内容都会被直接过滤掉啦!

备注:内容来源于stack exchange,提问作者Gfour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 09:14:32