如何用 gitignore 隐藏机器人 Telegram 令牌?

How to hide bot Telegram token with gitignore?

在 public 域中的 GitHub 上是我的电报机器人的代码,我的令牌在哪里。我想隐藏它,我该怎么办?我知道这应该用 gitignore

来完成
import telebot
import time
TOKEN = "872521057:AAF2Kx4Y3WC-cs................"
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
    bot.reply_to(message, "Hello")
@bot.message_handler(func=lambda m: True)
def echo_all(message):
    bot.reply_to(message, message.text)
bot.polling(none_stop=True)

更新

如果要部署到 Heroku,更好的方法是使用环境变量。

变化:

TOKEN = None

with open("token.txt") as f:
    TOKEN = f.read().strip()

至:

import os

TOKEN = os.environ["TOKEN"]

然后,使用命令heroku config:add TOKEN=…设置环境变量

要在本地 运行 您的机器人,请使用:

TOKEN=… python3 bot.py

希望对您有所帮助!


原回答

.gitignore 不能用于忽略代码行,只能忽略整个文件。

但是,您可以从文件中读取令牌,然后将 that 放入您的 .gitignore.

这是我的做法:

  1. 为了安全起见,首先通过向 @BotFather on Telegram 发送 /revoke 命令来撤销您的令牌。

  2. token.txt 放入您的 .gitignore 并提交。

  3. 在您的机器人代码旁边创建一个文件 token.txt 并将您的 其中有新令牌。

  4. 之后,将 TOKEN = … 行更改为:

    TOKEN = None
    
    with open("token.txt") as f:
        TOKEN = f.read().strip()
    

    这将读取您之前创建的 token.txt 文件,并存储 它在 TOKEN 变量中,因此您的令牌保持私密。