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()