如何使用gitignore隐藏机器人电报令牌?

时间:2019-04-20 19:00:49

标签: python-3.x github gitignore telegram-bot

在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)

1 个答案:

答案 0 :(得分:2)

更新

如果要部署到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不能用于忽略代码行,而只能用于整个文件。

但是,您可以从文件中读取令牌,然后将那个放入.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变量中,因此您的令牌保持私有状态。