【问题标题】:Send message to discord via google apps script通过谷歌应用脚​​本向 Discord 发送消息
【发布时间】:2023-03-07 08:27:02
【问题描述】:

当某个事件被触发时,我想通过谷歌应用脚​​本在不和谐频道中发送一条机器人消息,但我不知道从哪里开始。这甚至可能吗?如果没有,有没有办法通过github做到这一点?

编辑:我已经弄清楚如何获取 OAuth 令牌,现在如何让机器人发送消息?

【问题讨论】:

    标签: javascript google-apps-script discord


    【解决方案1】:

    我知道 OP 几乎不可能仍然需要这个答案,但我把它放在这里,以便其他在谷歌上搜索这个问题的人能够找到答案

    var webhooks = {
      test: "Obtain a webhook for the channel you'd like and put it here."
    };
    
    function sendMessage(message, channel)
    {
      if(webhooks.hasOwnProperty(channel))
        var url = webhooks[channel];
      else {
        Logger.log("Error Sending Message to Channel " + channel);
        return "NoStoredWebhookException";
      }
      
      var payload = JSON.stringify({content: message});
      
      var params = {
        headers: {"Content-Type": "application/x-www-form-urlencoded"},
        method: "POST",
        payload: payload,
        muteHttpExceptions: true
      };
      
      var res = UrlFetchApp.fetch(url, params);
      Logger.log(res.getContentText());
    }
    
    // to call and send a message
    sendMessage("Hi!", "test");

    这是我通常用于发送消息的方式。不幸的是,据我所知,无法从 webhook 接收触发器。

    注意:以上答案引用 discord.js,与 Google Apps Script 不兼容

    【讨论】:

      【解决方案2】:

      首先,这是来自discord.js 的文档。

      要让您的应用脚本与 Discord 通信,您可以查看External APIs

      Google Apps 脚本可以与来自整个网络的 API 进行交互。这 指南展示了如何在脚本中使用不同类型的 API。

      提供的文档中提供了示例。

      查看这些有用的链接了解更多详情。

      【讨论】:

        【解决方案3】:

        超级简单。只需转到您的 Discord 频道,选择“编辑频道”>“Webhooks”。您为机器人命名并设置其个人资料图片。它会给你一个已经包含授权令牌的 webhook URL。 然后您只需发布到该公共 URL。 TADA,一条消息将出现在给定的频道中,由机器人发送。

        function postMessageToDiscord(message) {
        
          message = message || "Hello World!";
        
          var discordUrl = 'https://discordapp.com/api/webhooks/labnol/123';
          var payload = JSON.stringify({content: message});
        
          var params = {
            headers: {
              'Content-Type': 'application/x-www-form-urlencoded'
            },
            method: "POST",
            payload: payload,
            muteHttpExceptions: true
          };
        
          var response = UrlFetchApp.fetch(discordUrl, params);
        
          Logger.log(response.getContentText());
        
        }
        

        来源:https://ctrlq.org/code/20563-post-message-to-discord-webhooks

        【讨论】:

          【解决方案4】:

          对于仍在寻找之前的答案但没有运气的人,比如我:

          制作完我的message_string后,这个sn-p成功发送到我想要的频道的webhook:

              // Send the message to the Discord channel webhook.
            let options = {
                    "method": "post",
                    "headers": {
                        "Content-Type": "application/json",
                    },
                    "payload": JSON.stringify({
                        "content": message_string
                    })
                };
                Logger.log(options, null, 2);
                UrlFetchApp.fetch("your_webhook_url_here", options);
          

          【讨论】:

            猜你喜欢
            • 2020-04-07
            • 1970-01-01
            • 2020-05-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-24
            • 2015-01-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多