Бот с возможностью настройки внутри телеграм

Рейтинг: -1Ответов: 1Опубликовано: 26.06.2023

Как реализовать телеграм бота написанного на библиотеке 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

Ответы

▲ 0

В аналогичной задаче использовал данную конструкцию, решение не самое элегантное, но лучше не нашел при условии что переменная должна была оставаться измененной даже в случае перезапуска.

### Тут открываем изменяемый файл на чтение и временный на запись
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