• Как сменить одну из переменных в отдельном файле?

    Vindicar
    @Vindicar
    RTFM!
    Что значит "изменить переменную в файле"?
    Одно дело, если файл был импортирован, и тебе нужно изменить переменную в нём. Это легко.
    import names
    names.name1 = 'Абдурахман ибн Хоттаб'

    Вот только такое изменение не сохранится в файл. Если тебя это устраивает, то вопрос закрыт.

    А если ты хочешь, чтобы оно сохранялось, то всё намного хуже, потому что ты пытаешься использовать питоновский файл как файл конфигурации. Это не дело. И ещё хуже то, что твои переменные name1, name2, name3 намекают, что тебе на самом деле нужен список.
    Тогда у тебя получится что-то такое
    # names.json
    ["Дима", "Маша", "Елена"]
    
    # main.py
    import json  # чтобы легко и удобно сохранять структуры данных в файл
    import sys  # чтобы узнать, где лежит main.py, и сохранить рядом
    from pathlib import Path  # чтобы работать с путями к файлам
    
    MAIN_PY = Path(sys.argv[0])  # путь до main.py
    MAIN_DIR = MAIN_PY.parent.resolve()  # путь до папки, где лежит main.py
    CFG = MAIN_DIR / 'names.json'  # путь до файла, куда сохраняем данные
    
    with CFG.open('rt', encoding='utf-8') as cfg:  # открываем на чтение
        names = json.load(cfg)  # читаем всё содержимое файла
    # пользуемся полученными данными - списком имён
    print(names) 
    names[0] = "Абдурахман ибн Хоттаб"
    # сохраняем список обратно
    with CFG.open('wt', encoding='utf-8') as cfg:  # открываем на запись
        json.dump(  # пишем всё содержимое списка в файл
            names,  # что будет содержимым файла
            cfg,  # в какой файл записать
            ensure_ascii=False,  # чтобы не заменял кириллицу на коды символов
            indent=2,  # чтобы были красивые отступы. Если убрать, файл будет весь в одну строку.
        )
    Ответ написан
    Комментировать
  • Как запретить копирование в боте [Aiogram]?

    febday
    @febday
    Вариант есть такой:
    await bot.send_message(msg.from_user.id, """Hello, world.""", protect_content=True)


    Также, по поводу aiogram2. Если хотите иметь поддержку текущего Telegram Bot API, то можете воспользоваться моей библиотекой aiogram2-fork (да, можно было отправить пул реквест, но ленивый)
    Ответ написан
    Комментировать