Вопрос изначально не является вопросом как таковым. Я просто уже не способен увидеть ошибку в данном блоке кода (второй день бьюсь над правками). Суть проблемы проста - есть функция которая создает с помощью проверок пользовательских вводов некое подобие консоли, для настройки бота:
def admin_panel(user): #панель настройки бота
if user == "change key": #если пользователь решил сменить ключ в словаре
with open("text.pickle", "rb") as file: #открываем файл для чтения
bd = pickle.load(file) #записываем в новую переменную то, что было в файле
print(bd) #выводим все что есть в БД
hellp = input("enter the key you want to change: ") #ввод ключа который нужно заменить
hellp_2 = input("enter the key you want to insert: ") #ввод ключа на который нужно заменить старый ключ
firstKey = bd.pop(hellp) #удаление старого ключа и запись хранившихся данных в переменную
bd[hellp_2] = firstKey #создание нового ключа с идентичными данными
with open("text.pickle", "wb") as file: #открываем файл в конструкции with...as..: с авто закрытием файла
pickle.dump(bd, file) #записываем содержимое объекта в файл
return bd #возвращаем получившуюся БД
elif user == "change value": #если пользователь хочет поменять значение
with open("text.pickle", "rb") as file: #открываем файл для чтения
bd = pickle.load(file) #записываем в новую переменную то, что было в файле
print(bd) #выводим все ключи и значения в БД
hellp = input("enter the key to which the value you want to change is assigned :\n") #ввод ключа под которым хранится изменяемое значение
hellp_2 = input("enter a new value :\n") #запрашиваем новое значение
bd[hellp] = hellp_2 #запись ответа и вопроса в словарь в виде ключ(вопрос) : значение(ответ)
with open("text.pickle", "wb") as file: #открываем файл в конструкции with...as..: с авто закрытием файла
pickle.dump(bd, file) #записываем содержимое объекта в файл
return bd #возвращаем получившуюся БД
elif user == "help": #сводка команд
return "main command:\nchange key - изменение ключей к ответам\nchange value - изменение значений под ключами\nout1 - выход из админ_панели\nout - выход из программы"
elif user == "out1": #если пользователь вводит "out1" то мы выходим из админ панели
return 1
elif user == "out": #если пользователь вводит "out" то мы выходим сразу из программы
return 0
#ЗДЕСЬ БУДЕТ ВЫПОЛНЯТЬСЯ ОСНОВНАЯ ФУНКЦИЯ С РАБОТОЙ БОТА
else: #в случае некорректного ввода
return "incorrect command 1" #сообщаем о ошибке пользователю
Естественно я опустил такие моменты как импорт библиотеки "pickle" вызова функции и самого'
user = input()
У меня скорее просьба, нежели вопрос. Скажите почему при попытке сменить значение, или ключ. Моя функция не доходит до return и спрашивает ввод ключа или значения дважды? Причем именно дважды! Нет зацикленного повторения, функция спрашивает одно и тоже ровно два раза и затем срабатывает return и все начинает работать как и предполагалось изначально...
Допускаю возможность отсутствия ошибки в функции. Но даже если это так, я хотя бы буду понимать что ошибка не в функции а в цикле её вызова.