Бот возвращает всем один и тот же ключ

import telebot
import RSA_KEYS
from RSA_ENCR import encript
from RSA_DECR import Decript
import base64

bot = telebot.TeleBot('<TOKEN>')

keyboard1 = telebot.types.ReplyKeyboardMarkup()
keyboard1.row('?Сгенерировать ключ?')


#  ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ
# функция расшифровки введенного ключа
def decr_import_key(encript_msg):
    try:
        byte_str = base64.b64decode(encript_msg)
        restored = [int.from_bytes(byte_str[i:i + 2], byteorder='big') for i in range(0, len(byte_str), 2)]
        return restored
    except:
        return False


@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, '?Здравствуйте, для начала работы RSA_CRIPT_bot нужно '
                                      'сгенерировать открытый ключ и передать его собеседнику, '
                                      'собеседник так же должен это сделать, просто скопируйте и отправте его боту?'
                                      '', reply_markup=keyboard1)


@bot.message_handler(content_types=['text'])
def key(message):
    if message.text.lower() == '?сгенерировать ключ?':
        bot.send_message(message.chat.id, 'Открытый ключ:')
        bot.send_message(message.chat.id, RSA_KEYS.KeyEncript_MY)
        bot.send_message(message.chat.id, 'Теперь введите ключ который передал вам ваш собеседник')
    # f = str(message.from_user).replace("'", '').split(',')
    # first_name = str(f[2]).split(':')
    # last_name = str(f[4]).split(':')
    # print(f'{first_name[-1]}{last_name[-1]}: {message.text}')
    if decr_import_key(message.text):
        if len(decr_import_key(message.text)) == 2 and message.text != RSA_KEYS.KeyEncript_MY:
            global KeyEncript_Import
            KeyEncript_Import = str(message.text)
            bot.send_message(message.chat.id,
                             'Отлично, теперь можем приступать к шифровке и расшифровке сообщений ??')

    elif message.text == RSA_KEYS.KeyEncript_MY:
        bot.send_message(message.chat.id, 'Введите другой ключ')

    if message.text.lower() != '?сгенерировать ключ?' and decr_import_key(message.text) == False:
        bot.send_message(message.chat.id, f'Зашифрованный текст: {encript(message.text, KeyEncript_Import)}')
        f = str(message.from_user).replace("'", '').split(',')
        first_name = str(f[2]).split(':')
        last_name = str(f[4]).split(':')
        print(f'{first_name[-1]}{last_name[-1]}: {message.text}')

    if message.text.lower() != '?сгенерировать ключ?' and len(decr_import_key(message.text)) > 2:
        # lenth = len(Decript(message.text, KeyDecript))
        bot.reply_to(message, Decript(message.text, RSA_KEYS.KeyDecript))


if __name__ == '__main__':
    bot.infinity_polling(True)

Моя проблема в том что при запуске бота и вводе команды "сгенерировать ключ" собеседникам отсылается один и тот же ключ. Я думаю что это из за того что она вызывается один раз и поэтому ключ будет одинаков для всех. Но как это исправить я не знаю. Файл RSA_KEYS возвращает две переменные KeyDecript и KeyEncript_MY(каждому человеку они должны быть разные). Строго не судите мой первый ТГ бот


Ответы (0 шт):