@Evanes17

Бот не сохраняет заданные переменные Telebot. Как сохранить переменные telebot?

Попробовал задать переменные, но бот не хочет их сохранять и при попытке вывода их бот просто ничего не пишет. Код не дописан, но уже на этапе проверки всё ломается.

import telebot
import configure
from telebot import types

token = ""
bot = telebot.TeleBot(token)


@bot.message_handler(commands=['start'])
def start(message):
    sent = bot.reply_to(message, 'Напишите ключи шифрования')
    bot.register_next_step_handler(sent, hello)

def hello(message):
    keys = message.text
    sent = bot.send_message(message.chat.id, 'Выбери дейстие (шифрование или дешифрование)')
    bot.register_next_step_handler(sent, get_text)


def get_text(message):
    if message.text.lower() == 'шифрование':
        sent = bot.send_message(message.chat.id, 'Напишите текст')
        bot.register_next_step_handler(sent, crypto)
    elif message.text.lower() == 'дешифрование':
        sent = bot.send_message(message.chat.id, 'Напишите шифр')
        bot.register_next_step_handler(sent, encrypto)
    else:
        bot.send_message(message.chat.id, 'Я тебя не понимаю. Начни заново')

def crypto(message):
    crypted_text = message.text.upper
    sent = bot.send_message(message.chat.id, f'почти готово !')
    bot.register_next_step_handler(sent, answer)
def encrypto(message):
    encrypted_text = message.text.upper
    sent = bot.send_message(message.chat.id, 'уже всё!')
    bot.register_next_step_handler(sent, deanswer)

def answer(message):
    bot.send_message(message.chat.id, f'ваш код {keys}')


bot.polling()
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
1. Код следует оформлять специальной кнопкой в редакторе
2. Вы никакие переменные не передавали в функцию, поэтому они и остались где-то там
3. bot.register_next_step_handler(sent, answer) и bot.register_next_step_handler(sent, deanswer) не нужны, насколько я понимаю Вашу логику

Ключи вы получили в этой же функции, поэтому передаем их дальше
bot.register_next_step_handler(sent, get_text, keys)


Функцию get_text нужно будет доработать, чтобы она принимала ключи
def get_text(message, keys):

и так же их нужно будет передать дальше:
bot.register_next_step_handler(sent, crypto, keys )# с encrypto по аналогии

+ конечно
def crypto(message, keys): # с encrypto по аналогии


Злесь уже есть ключи из первого шага в переменной keys, и зашифрованный текст в crypted_text. Что-то делаем с ним, и печатаем пользователю. Без дальнейших register_next_step_handler
def crypto(message, keys):
    crypted_text = message.text.upper
    result = magic(crypted_text, keys)
    bot.send_message(message.chat.id, f'ваш код {result}')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы