繁体   English   中英

通过谷歌应用脚本向 discord 发送消息

[英]Send message to discord via google apps script

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

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

我知道 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");

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

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

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

要让您的应用程序脚本与不和谐进行通信,您可以检查外部 API

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

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

有关更多详细信息,请参阅这些有用的链接。

超级容易。 只需转到您的 Discord 频道,选择“编辑频道”>“Webhooks”。 您为机器人命名并设置其个人资料图片。 它会给你一个已经包含授权令牌的 webhook URL。 然后您只需 POST 到该公共 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

对于仍在寻找并且对以前的答案不满意的任何人,例如我:

制作完我的 message_string 后,此代码段成功发送到我想要的频道的 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);

我还不能发表评论,但如果您对上述答案之一有疑问 - 尝试将内容类型从: 'Content-Type':"application/x-www-form-urlencoded"更改为'Content-Type':"application/json"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM