Discord bot 如何使用 Node.js 使用个人帐户令牌登录?

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

client.on('ready', () => {
    console.log("Bot is ready!!");
});

client.on('message', message => {
    if (message.author.id != client.user.id) {
        if (talkedRecently.has(message.author.id)) {

        } else {
            message.author.send('Yo');
            talkedRecently.add(message.author.id);
            setTimeout(() => {talkedRecently.delete(message.author.id);}, 1800000);
        }
    }
});

client.login(<TOKEN>)

此源代码与令牌机器人正常工作我想使用个人帐户令牌登录我应该使用或做什么?

stack overflow Discord bot how to login with personal account token with Node.js?
原文答案
author avatar

接受的答案

不幸的是,Discord 不支持这种使用,实际上是禁止的。这主要与用户的SecurityRegulation以及API的使用有关:

你可以阅读它 here

关于“自我机器人”的问题到处出现,我们想表明我们的立场:

Discord 的 API 提供了一种专用于自动化的单独类型的用户帐户,称为机器人帐户。机器人帐户可以通过应用程序页面创建,并使用令牌(而不是用户名和密码)进行身份验证。与正常的 OAuth2 流程不同,机器人帐户无需使用承载令牌即可完全访问所有 API 路由,并且可以连接到实时网关。 禁止在 OAuth2/bot API 之外自动化普通用户帐户(通常称为“self-bots”),如果发现,可能会导致帐户终止。


答案:

作者头像

他们在 v12 中从 discord.js 中删除了对用户令牌(self bot)的支持,并查看了 commit 他们从包中删除了很多内容。

在对 discord.js 包进行了一些研究之后,找到了一种可以通过做来覆盖此功能的方法。

const client = new Discord.Client({_tokenType: ''}); 

这将在调用不和谐网关时删除前缀 bot 并且客户端将成功连接。

这纯粹是为了教育目的,应该负责任地使用。

P.s 他们还将在 apis 中修改一些其他的东西以使其成为不可能。