如何在不添加机器人的情况下用Python通过Discord Server ID获取所有Channel ID
解决Discord API 401未授权错误(无需添加机器人获取服务器频道ID)
你的问题核心在于用错了令牌类型,并且误解了Bot Token的权限逻辑:
- 你用的是Bot Token,但Bot必须加入目标服务器并拥有对应权限才能调用
/guilds/{server_id}/channels接口,这和你“无需添加机器人”的需求完全矛盾,所以返回401未授权。 - 要满足无需加机器人的要求,你需要使用个人用户令牌(User Token)——只要你自己的账号在目标服务器里,就能通过用户令牌获取频道列表。
修改后的代码
import requests # 替换成你的个人用户令牌 USER_TOKEN = "your-personal-user-token-here" def get_channels(server_id): headers = { 'Authorization': f'User {USER_TOKEN}' } channels_url = f'https://discord.com/api/v10/guilds/{server_id}/channels' response = requests.get(channels_url, headers=headers) if response.status_code == 200: # 提取所有频道ID channel_ids = [channel['id'] for channel in response.json()] print(channel_ids) else: print(f"请求失败: {response.json()}") get_channels(1454583875786506444)
关键注意事项
- 令牌安全:用户令牌相当于账号的钥匙,绝对不能泄露给他人,否则对方可以完全控制你的Discord账号。
- 服务条款限制:Discord官方不鼓励使用用户令牌做自动化操作,这种方式仅限个人自用场景,大规模或违规使用可能导致账号封禁。
- 基础权限要求:确保你的账号在目标服务器中拥有查看频道的权限(普通成员默认都具备),否则依然会返回权限错误。
内容的提问来源于stack exchange,提问作者TheGamerInMyBasement
相关产品推荐
相关产品推荐

