Python调用Discord API时请求头Token转字节对象报错求助
问题解决:Discord API请求时Token带换行导致的无效头错误
核心原因
从tokens.txt读取Token时,默认会保留文本末尾的换行符\n——虽然打印时显示为str类型,但实际字符串包含隐藏的换行符,当请求库将其转为字节对象时就会出现b'exampletoken123\n'的情况,Discord API拒绝接受带有多余空白字符的Token。
解决方案
1. 读取Token时去除换行和空白字符
修改读取tokens.txt的代码,用strip()去除字符串前后的空白(包括换行、空格、制表符等):
# 读取单个Token with open('tokens.txt', 'r') as f: token = f.read().strip() # 彻底去除前后空白 # 读取多个Token(每行一个) with open('tokens.txt', 'r') as f: tokens = [line.strip() for line in f if line.strip()] # 过滤空行并去换行
2. 确保请求头格式正确
Discord API的Authorization头需要匹配Token类型:
- 机器人Token:格式为
Bot {token} - 用户Token:格式为
Bearer {token}
示例请求代码:
import requests headers = { 'Authorization': f'Bot {token}', # 替换为对应格式 'Content-Type': 'application/json' } # 测试请求(获取当前用户信息) response = requests.get('https://discord.com/api/v10/users/@me', headers=headers) print(response.status_code) print(response.json())
3. 避免手动转换字节对象
如果使用requests库,直接传入字符串类型的头值即可,库会自动处理编码,不要手动将头值转为字节对象。
内容的提问来源于stack exchange,提问作者Heisenberg
相关产品推荐
相关产品推荐

