Выдача ключа один раз в одни руки на telebot
import telebot, random
bot = telebot.TeleBot("[токен]")
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
bot.reply_to(message, f"Чтобы получить инвайт, набери команду /код или /code")
@bot.message_handler(commands=['код', 'code'])
def send_key(message):
getkey = open('/home/quote/Documents/Python/test/ServerTg/keys.txt').read().splitlines()
mykey = random.choice(getkey)
idUser = message.from_user.id
bot.reply_to(message,f'Твой ID - {idUser}\n\n ❗️Не передавай этот код никому\nИнвайт-код можно получить только один раз!\n\n Твой код: {mykey}\n')
bot.infinity_polling()
Также нужно сохранить idUser в список и присвоить ему ключ из файла keys.txt. И каждый раз проверять получал ли пользователь ключ. Если получал, то отправить в консоль print('UserAlrealyGetKey')
Ответы (1 шт):
Автор решения: Максим
→ Ссылка
Предлагаю подключить базу данных к этому боту, все достаточно просто
import telebot
import sqlite3
#создание базы данных
base = sqlite3.connect('database.db', check_same_thread=False)
cur = base.cursor()
#создание таблицы
base.execute('CREATE TABLE IF NOT EXISTS {}(id PRIMARY KEY, key TEXT)'.format('key'))
base.commit()
bot = telebot.TeleBot(token)
@bot.message_handler(commands = ['code'])
def add_db(message):
try:
#не хочу писать код по генериации ключа, по это ключ это будет просто переменная key_gen
key_gen = 'Сгенерированый ключ'
#добавление в таблицу данных
cur.execute('INSERT INTO key VALUES(?, ?)', (f'{message.chat.id}', f'{key_gen}'))
base.commit()
bot.send_message(message.chat.id, f'Ваш ключ {key_gen} добавлен в таблицу!')
except:
bot.send_message(message.chat.id, 'Вы уже получили свой ключ')
print('UserAlrealyGetKey')
bot.polling(True)
Советую научится работать с базами данных, в будущем это очень даже пригодится)