gpt4 book ai didi

python - 无法获取不和谐公会/服务器/ channel 成员

转载 作者:行者123 更新时间:2023-12-03 08:09:42 24 4
gpt4 key购买 nike

尝试使用discord的API端点GET/guilds/{guild.id}/members获取discord成员的数量(请参阅here)。

我正在使用 Postman 来调用它。我设置了授权 header :

Authorization: "Bot ${BOT_TOKEN}"

我得到的回复是

{ "message": "Missing Access", "code": 50001 }

我还尝试了授权:DISCORD_CLIENT_ID。响应为 { "message": "401: Unauthorized", "code": 0 }

我错过了什么吗?请帮我解决这个问题。

enter image description here

最佳答案

首先,您需要确保使用正确的guild ID,而不是channel ID。您可以通过用户设置 -> 高级在Discord上启用开发者模式,这样您就可以获取guild id右键单击公会(服务器),然后单击复制 ID

接下来,通过 Developer Portal 转到您的申请,选择您的应用程序并导航到左侧导航栏上的 Bot 选项卡。从那里,获取您的机器人的身份验证 token ,您需要将其传递到请求的 header 中。在同一个选项卡上 - 因为您需要获取公会成员列表,并且从那时起"endpoint is restricted according to whether the GUILD_MEMBERS Privileged Intent is enabled for your application" - 向下滚动到Privileged Gateway Intents部分并启用SERVER MEMBERS INTENT

下面是使用 Node.js 标准模块的工作示例。请注意,如here所述,返回的最大成员数的默认 limit1。因此,您可以调整查询参数中的限制,如下所示,以便每个请求接收更多结果。每个请求可以获得的最大结果数为 1000。因此,如果guild包含的成员多于这个数量,您可以跟踪每个先前请求中存在的最高用户ID,并将其传递给下一个请求的after参数请求,如 documentation 中所述。这样你就可以获取公会中的所有成员。另外,请确保以正确的方式设置 options 中的属性,如下所示;否则,您可能会遇到 getaddrinfo ENOTFOUND 错误,如下所示 here .

更新

如果您还没有这样做,您应该通过 URL Generator< 为您的 bot 生成邀请链接,将您的 bot 添加到您想要的服务器 在应用程序设置中的 OAuth2 下(从范围中选择 bot)。现在,您可以从浏览器访问该 URL 并将 bot 添加到您的任何服务器。如果需要,您可以与其他人共享相同的邀请链接,以便他们可以将您的机器人添加到他们的服务器。

Node.js 中的示例

const https = require('https')
const url = require('url');

GUILD_ID = "YOUR_GUILD_ID"
BOT_TOKEN = 'YOUR_BOT_TOKEN'
LIMIT = 10

const requestUrl = url.parse(url.format({
protocol: 'https',
hostname: 'discord.com',
pathname: `/api/guilds/${GUILD_ID}/members`,
query: {
'limit': LIMIT
}
}));

const options = {
hostname: requestUrl.hostname,
path: requestUrl.path,
method: 'GET',
headers: {
'Authorization': `Bot ${BOT_TOKEN}`,
}
}
const req = https.request(options, res => {
res.on('data', d => {
process.stdout.write(d)
})
})

req.on('error', error => {
console.error(error)
})

req.end()

Python 示例

import requests
import json

GUILD_ID = "YOUR_GUILD_ID"
BOT_TOKEN = 'YOUR_BOT_TOKEN'
LIMIT = 10
headers = {'Authorization' : 'Bot {}'.format(BOT_TOKEN)}
base_URL = 'https://discord.com/api/guilds/{}/members'.format(GUILD_ID)
params = {"limit": LIMIT}
r = requests.get(base_URL, headers=headers, params=params)
print(r.status_code)
print(r.text,'\n')
#print(r.raise_for_status())
for obj in r.json():
print(obj,'\n')

关于python - 无法获取不和谐公会/服务器/ channel 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71182545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com