如何在不硬编码令牌的情况下运行discord.py机器人?
如何在不硬编码令牌的情况下运行discord.py机器人?
嘿,我完全懂你不想把机器人token硬写在代码里的想法——这绝对是个值得养成的好习惯,能避免不小心把敏感信息泄露到版本控制或者其他地方!针对你的需求,我给你几个简单易上手的方法,都适配你的Python 3.11.1版本:
方法一:用普通文本文件(config.txt)
这个方法最直接,完全不需要额外安装库:
- 先在你的项目根目录新建一个
config.txt文件,里面只放你的机器人token就行,别加引号,就纯纯一行内容:
你的Discord机器人token
- 然后在你的Python代码里,把原来硬编码token的部分改成读取这个文件的内容:
# 你的其他导入和intents设置代码 # imports blahblah # intents blahblah # 读取config.txt里的token with open('config.txt', 'r') as f: token = f.read().strip() # strip()用来去掉可能的换行或空格 client.run(token)
注意:一定要把
config.txt加入到.gitignore文件里(如果用Git的话),别把它提交到代码仓库!
方法二:用.env文件(更推荐,支持多配置项)
如果之后你还需要添加其他配置(比如数据库密码、API密钥),用.env文件会更方便:
- 先安装
python-dotenv库:
pip install python-dotenv
- 在项目根目录新建一个
.env文件,内容格式如下:
DISCORD_TOKEN=你的Discord机器人token
- 修改你的Python代码来加载这个文件:
# 你的其他导入和intents设置代码 # imports blahblah # intents blahblah from dotenv import load_dotenv import os # 加载.env文件里的配置 load_dotenv() token = os.getenv('DISCORD_TOKEN') client.run(token)
同样,记得把.env加入.gitignore,保护敏感信息。
方法三:用configparser(适合复杂配置场景)
如果你的机器人需要很多结构化的配置项,比如不同环境的设置,用configparser会更合适(这个是Python标准库,不用额外安装):
- 新建一个
config.ini文件,内容如下:
[Discord] token = 你的Discord机器人token
- 在代码里读取这个配置:
# 你的其他导入和intents设置代码 # imports blahblah # intents blahblah import configparser config = configparser.ConfigParser() config.read('config.ini') token = config.get('Discord', 'token') client.run(token)
这几个方法都能完美解决你的问题,选最适合你当前需求的就行~
备注:内容来源于stack exchange,提问作者Eino S




