Как создать переменные в Telegram боте с использованием библиотеки aiogram?

Как можно создать переменные, которые будут общими для всех пользователей, но при этом хранить их значения в отдельном файле, не используя базу данных?
  • 20 июля 2024 г. 17:22
Ответы на вопрос 2
Для создания переменных в Telegram боте с использованием библиотеки aiogram, можно использовать объекты State, которые предоставляют возможность хранить значения переменных для каждого пользователя.

Пример создания переменной для конкретного пользователя:
```python
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.types import CallbackQuery
from aiogram.contrib.middlewares.states import State, StatesGroup

API_TOKEN = 'YOUR_API_TOKEN'
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

class ExampleState(StatesGroup):
    variable = State()

@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    await ExampleState.variable.set()
    await message.answer("Переменная создана")

@dp.message_handler(commands=['get_variable'])
async def get_variable(message: types.Message):
    variable_value = await ExampleState.variable.get()
    await message.answer(f"Значение переменной: {variable_value}")
```

Чтобы создать переменные, которые будут общими для всех пользователей и хранить их значения в отдельном файле, можно использовать модуль configparser для чтения и записи данных в файл конфигурации.

Пример создания общей переменной и хранения ее значения в файле:
```python
import configparser

config = configparser.ConfigParser()
config.read('config.ini')

# Чтение значения переменной
variable_value = config['Variables']['common_variable']

# Запись значения переменной
config['Variables']['common_variable'] = 'new_value'
with open('config.ini', 'w') as configfile:
    config.write(configfile)
```

Таким образом, переменная `common_variable` будет доступна для всех пользователей и ее значение будет храниться в файле `config.ini`.
Словарь, где ключ - id пользователя, а значение - данные, которые ты хочешь хранить для этого пользователя. 
Но такой словарь не переживёт перезапуска бота.
Похожие вопросы