Discord 上的 HTTP 请求和响应,无需邀请官方 discord 机器人到该服务器

Posted

技术标签:

【中文标题】Discord 上的 HTTP 请求和响应,无需邀请官方 discord 机器人到该服务器【英文标题】:HTTP Requests and Responses on Discord without inviting an official discord bot to that server 【发布时间】:2020-09-10 01:08:36 【问题描述】:

我有一个 Discord 服务器和频道列表,我希望某个程序可以收听。如果在此频道发送的短信中发现特定关键字,我希望程序使用标准文本 DM 联系消息的发件人。它基本上是一个定位机器人。我假设由于服务器不会邀请我的机器人,如果它是一个不和谐的机器人,我将需要一个使用 HTTP 请求和响应的外部程序。这是否适用于不和谐?您对如何实施我的想法有任何想法吗?

【问题讨论】:

你不能在没有实际进入服务器的情况下收听服务器中的消息。在不和谐的情况下,这将是极其糟糕的隐私做法。此外,除非您与该用户共享服务器,否则您无法向该用户发送消息。所以,不,你想要的都行不通。 你有没有让这个工作?我想做类似的事情;让机器人只收听我所属的频道和服务器中的消息,但所有者不想邀请机器人加入 【参考方案1】:

在服务器中查看消息的唯一方法是在该服务器中,这也适用于机器人,因此您必须让他们添加它。另请注意,使用 Discord API 制作“用户机器人”(充当机器人的用户帐户)或发送不需要的直接消息是违反他们的Terms of Service

考虑到这一点,您有两个选择:


使用网关

当您连接到 Discord 网关时,只要在您的机器人可以看到的位置发送新消息,您就会收到 MESSAGE_CREATE 事件。有许多库允许您这样做,例如 discord.js。安装好之后,监听消息就这么简单:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => 
  console.log(`Logged in as $client.user.tag!`);
);

client.on('message', msg => 
  if (msg.content === 'ping') 
    msg.reply('Pong!');
  
);

client.login('token');

查询 REST API

您还可以使用Get Channel Messages 端点获取消息,但我不建议您这样做,因为您必须为您的机器人所在的每个频道发送一个请求,并每隔 X 分钟/秒重复一次以解决问题新消息。如果您的机器人碰巧在许多服务器中,这很容易达到他们的速率限制。

【讨论】:

以上是关于Discord 上的 HTTP 请求和响应,无需邀请官方 discord 机器人到该服务器的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Java 或 JavaScript 中发出 HTTP (POST) 请求而无需等待响应

具有不同响应的命令上的 discord.js-commando 参数

[面试没答上的问题1]http请求,请求头和响应头都有什么信息?

Discord.js 和带有 GET 请求的 http 监听器

discord.js 机器人不响应命令[重复]

网络信息系统,HTTP请求与响应