Как сделать команды кика, бана, варна в боте вк

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
Заблокированный
Регистрация
13 Авг 2024
Сообщения
45
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
Здравствуйте, я пишу своего бота с нуля.
Сделал так, что-бы он работал во всех беседах.
Бот работает, но нету команд бана, кика, варна и т.д.
Мог бы кто-то помочь? Был бы очень благодарен!
 
𝚖𝚘𝚛𝚜 𝚌𝚎𝚛𝚝𝚊, 𝚑𝚘𝚛𝚊 𝚒𝚗𝚌𝚎𝚛𝚝𝚊.
Команда форума
Администратор
Регистрация
21 Янв 2023
Сообщения
1,350
Для начала, создаем функцию, на отправку сообщений ,с помощью методов,
Далее - создаем обработчик событий, где будет прописана команда, обратная связь от бота, и вызов метода (removeChatUser),

Примерно это будет выглядеть так;

Python:
# функция отправки сообщений
def send_message(peer_id, text):
    vk.messages.send(peer_id=peer_id, message=text, random_id=0)

# обработчик событий для команд
for event in longpoll.listen():
    if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat:
        message = event.message
        chat_id = event.chat_id

        # Если команда /kick (прослушиваем вызов команды)
        if message['text'].startswith('/kick'):
            args = message['text'].split()
            if len(args) < 2:
                send_message(message['peer_id'], "Укажи юзера для кика")
                continue
            
            try:
                user_id = int(args[1])
                vk.messages.removeChatUser(chat_id=chat_id, user_id=user_id)
                send_message(message['peer_id'], f"Пользователь с ID {user_id} был кикнут с чата")
            except vk_api.exceptions.ApiError as e:
                send_message(message['peer_id'], f"Ошибка: {e}")

данный код, выступает лишь примером - и не факт, что он будет работать, ибо это лишь сырая база.
 
Заблокированный
Регистрация
13 Авг 2024
Сообщения
45
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
Привет!
Спасибо.
Но есть другая проблема(Она не критичная, но я не знаю как ее решить).
В общем, бот работает, но если я указываю пользователя(упоминаю его) то в консоли ошибка:


Traceback (most recent call last):
File "C:\wekmanager\manager.py", line 27, in <module>
user_id = int(args[1])
ValueError: invalid literal for int() with base 10: '[id630302928|Беєр]'



Помоги, пожалуйста)
 
Пользователь
Регистрация
16 Июл 2024
Сообщения
114
Для кика по юзернейму используй это :
Python:
def extract_user_id(arg):
    if arg.startswith("[id") and "|" in arg:
        user_id = arg[3:].split("|")[0]
        try:
            return int(user_id)
        except ValueError:
            return None
    elif arg.startswith("@"):
        return get_user_id(arg[1:])
    else:
        try:
            return int(arg)
        except ValueError:
            return None
В команду :
Код:
name = args[0].replace('@', '')
                    user_id = extract_user_id(name)
 
𝚖𝚘𝚛𝚜 𝚌𝚎𝚛𝚝𝚊, 𝚑𝚘𝚛𝚊 𝚒𝚗𝚌𝚎𝚛𝚝𝚊.
Команда форума
Администратор
Регистрация
21 Янв 2023
Сообщения
1,350
Для кика по юзернейму используй это :
Python:
def extract_user_id(arg):
    if arg.startswith("[id") and "|" in arg:
        user_id = arg[3:].split("|")[0]
        try:
            return int(user_id)
        except ValueError:
            return None
    elif arg.startswith("@"):
        return get_user_id(arg[1:])
    else:
        try:
            return int(arg)
        except ValueError:
            return None
В команду :
Код:
name = args[0].replace('@', '')
                    user_id = extract_user_id(name)
OFFTOP

это пиздец, я иначе не отвечу...

 
Заблокированный
Регистрация
13 Авг 2024
Сообщения
45
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
Для кика по юзернейму используй это :
Python:
def extract_user_id(arg):
    if arg.startswith("[id") and "|" in arg:
        user_id = arg[3:].split("|")[0]
        try:
            return int(user_id)
        except ValueError:
            return None
    elif arg.startswith("@"):
        return get_user_id(arg[1:])
    else:
        try:
            return int(arg)
        except ValueError:
            return None
В команду :
Код:
name = args[0].replace('@', '')
                    user_id = extract_user_id(name)

Пишет такую ошибку:
NameError: name 'messages' is not defined. Did you mean: 'message'?


Команда:

if message['text'].startswith('/кик'):
args = message['text'].split()
if len(args) < 2:
send_message(message['peer_id'], "Укажи юзера для кика")
continue

try:
name = args[0].replace('@', '')
user_id = extract_user_id(name)

messages.removeChatUser(chat_id=chat_id, user_id=user_id)
send_message(message['peer_id'], f"Пользователь с ID {user_id} был кикнут с чата")
except vk_api.exceptions.ApiError as e:
send_message(message['peer_id'], f"Ошибка: {e}")



Также я вставил твой код в команду:
name = args[0].replace('@', '')
user_id = extract_user_id(name)


Полосами в команде я отметил код, который ты мне сказал вставить
Может я что то не правильно сделал?
 
Сверху