Discord OAuth2:如何获取并列出机器人所在的Guilds(服务器)
获取并列出Discord机器人所在服务器(Guilds)的方法
要实现列出机器人所在服务器的功能,需完成以下关键步骤:
1. 确保OAuth2授权包含guilds权限
在引导用户授权的OAuth2链接中,必须添加guilds权限参数,否则无法获取服务器列表。授权链接的scope部分需包含:
scope=identify+guilds
2. 扩展现有代码获取服务器列表
在你已有的用户信息获取代码基础上,添加调用Discord服务器列表接口的逻辑,示例代码如下:
window.onload = () => { const fragment = new URLSearchParams(window.location.hash.slice(1)); const [accessToken, tokenType] = [fragment.get('access_token'), fragment.get('token_type')]; if (!accessToken) { window.location.href = '/'; return; } // 获取用户信息 fetch('https://discord.com/api/users/@me', { headers: { authorization: `${tokenType} ${accessToken}`, }, }) .then(result => result.json()) .then(response => { console.log('用户信息:', response); const { username, discriminator, avatar, id} = response; // 设置欢迎用户名 document.getElementById('h1').innerText = ` ${username}#${discriminator}`; // 设置头像 document.getElementById("avatar").src = `https://cdn.discordapp.com/avatars/${id}/${avatar}.jpg`; }) .catch(console.error); // 获取并渲染服务器列表 fetch('https://discord.com/api/users/@me/guilds', { headers: { authorization: `${tokenType} ${accessToken}`, }, }) .then(result => result.json()) .then(guilds => { console.log('服务器列表:', guilds); // 假设页面存在id为guildList的容器用于展示列表 const guildListContainer = document.getElementById('guildList'); if (!guildListContainer) return; guildListContainer.innerHTML = ''; // 遍历服务器列表生成展示项 guilds.forEach(guild => { const listItem = document.createElement('div'); // 处理服务器图标为空的情况 const iconUrl = guild.icon ? `https://cdn.discordapp.com/icons/${guild.id}/${guild.icon}.jpg` : '默认图标地址'; listItem.innerHTML = ` <img src="${iconUrl}" alt="${guild.name}" width="32" height="32"> <span>${guild.name}</span> `; listItem.style.display = 'flex'; listItem.style.alignItems = 'center'; listItem.style.gap = '8px'; listItem.style.margin = '8px 0'; guildListContainer.appendChild(listItem); }); }) .catch(console.error); };
3. 关键注意事项
- 接口返回的是当前授权用户加入的、且机器人已入驻的服务器,若机器人在某服务器但用户未加入,无法通过该接口获取
- 需处理服务器
icon字段为null的情况,避免图片加载错误 - 确保机器人已正确添加到目标服务器中
内容的提问来源于stack exchange,提问作者Sprint's Utilities
相关产品推荐
相关产品推荐

