Бот с возможностью настройки внутри телеграм
Как реализовать телеграм бота написанного на библиотеке Telebot, с возможностью изменения настроек. Например есть команда -stt и ее код выглядит так
@bot.message_handler(content_types = ["text"])
def text_handler(message):
chat_id = message.chat.id
text = message.text.lower()
user_id = message.from_user.id
if (text == "-stt"):
bot.send_message(chat_id, config.stt_text, parse_mode = "Markdown")
Чтобы поменять текст нужно залезть в код и поменять config.stt_text на другую переменную, а нужно чтобы я мог менять переменную внутри самого бота из уже заданных, например Failstt_text или errStt_text
Ответы (1 шт):
В аналогичной задаче использовал данную конструкцию, решение не самое элегантное, но лучше не нашел при условии что переменная должна была оставаться измененной даже в случае перезапуска.
### Тут открываем изменяемый файл на чтение и временный на запись
with open('config/config.py', 'r') as input, open('output.txt', 'w') as output:
### Собраем все из файла в список
lines = input.readlines()
for line in lines:
### Бежим циклом и если находим нужную переменную, меняем ее значение
if 't1 =' in line:
output.writelines(f't1 = *ТУТ ПРИСВАИВАЕМ НУЖНОЕ ВАМ ЗНАЧЕНИЕ*')
### Если строка не относится к искомому нами, просто перезаписываем ее без изменений
else:
output.write(line)
### Ну и соответсвенно подменяем временный файл на основной
shutil.copy('output.txt', 'config/config.py')
Соответственно, если эта переменная используется в другой функции во время исполнения файла, незабудьте выполнить повторный импорт файла конфигурации для ее изменения importlib.reload(config), для этого понадобится модуль importlib