import json
from vkbottle.bot import Bot, Message
# Токен группы ВКонтакте
BOT_TOKEN = "ваш_токен"
# Словарь для хранения предупреждений пользователей
warnings = {}
# Путь к файлу для хранения данных
WARNINGS_FILE = "warnings.json"
# Инициализация бота
bot = Bot(token=BOT_TOKEN)
# Загрузка предупреждений из файла при старте бота
def load_warnings():
    global warnings
    try:
        with open(WARNINGS_FILE, "r") as f:
            warnings = json.load(f)
    except FileNotFoundError:
        warnings = {}
# Сохранение предупреждений в файл
def save_warnings():
    with open(WARNINGS_FILE, "w") as f:
        json.dump(warnings, f)
@bot.on.message(text="/warn <user_id>")
async def warn_user(message: Message, user_id: str):
    global warnings
   
    chat_id = message.peer_id
    user_id = int(user_id.strip("[id]"))  # Преобразуем user_id в int
    # Если пользователя еще нет в списке предупреждений для этой беседы, добавляем
    if chat_id not in warnings:
        warnings[chat_id] = {}
    if user_id not in warnings[chat_id]:
        warnings[chat_id][user_id] = 0
    # Увеличиваем количество предупреждений
    warnings[chat_id][user_id] += 1
    warn_count = warnings[chat_id][user_id]
    if warn_count < 3:
        await message.answer(
            f"[id{user_id}|Пользователь] получил {warn_count} предупреждение. Всего 3 до кика."
        )
    else:
        # Кикаем пользователя, если это третье предупреждение
        await bot.api.messages.remove_chat_user(chat_id=chat_id - 2000000000, user_id=user_id)
        await message.answer(
            f"[id{user_id}|Пользователь] получил 3 предупреждения и был удалён из беседы."
        )
        # Удаляем пользователя из списка предупреждений
        warnings[chat_id].pop(user_id)
    # Сохраняем изменения в файл
    save_warnings()
# Запуск бота
if __name__ == "__main__":
    load_warnings()  # Загружаем предупреждения при старте
    bot.run_forever()