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请求,请求头和响应头都有什么信息?