Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

VK API питон, id стикера в сообщении как узнать (именно через код надо, чтобы сам бот автоматически делал)

Кузнецов Арсений Ученик (144), открыт 2 недели назад
Как сделать чтобы бот мог сохранить в переменную айди стикера, из сообщения присланного в группу в которой он состоит.

Обычные данные я достаточно просто получил:
 id = event.chat_id 
MSG_id = event.object.message["id"]
peer_id = event.object.message["peer_id"]
cmid = event.object.message["conversation_message_id"]
user_id = event.object.message["from_id"]
user_info = vk.users.get(user_ids=user_id, fields="first_name,last_name,sex,domain,universities")
Но вот айди стикеров не понятно, в вк смутно написано, я попытался гуглить и ничего не нашел кроме той фотки которую скинул сюда, которая впринципе мне тоже не сильно помогла, я написал следующее и оно просто выдает ошибку, не понимаю как сделать нормально:
 sticker = vk_session.method("messages.getById", {"sticker_id"},) 
print(sticker)
1 ответ
Татьяна Просветленный (28804) 2 недели назад
 import vk_api 

# Аутентификация и создание сессии
vk_session = vk_api.VkApi(token='ваш_токен_доступа')
vk = vk_session.get_api()

# Пример объекта события
event = {
"object": {
"message": {
"id": 123456,
"peer_id": 123456789,
"conversation_message_id": 987654,
"from_id": 12345678,
}
}
}

# Извлечение необходимой информации из объекта события
msg_id = event['object']['message']['id']
peer_id = event['object']['message']['peer_id']

# Получение деталей сообщения
message_details = vk.messages.getById(message_ids=msg_id)['items'][0]

# Извлечение вложений
attachments = message_details.get('attachments', [])

# Инициализация sticker_id как None
sticker_id = None

# Перебор вложений для поиска стикера
for attachment in attachments:
if attachment['type'] == 'sticker':
sticker_id = attachment['sticker']['sticker_id']
break

# Вывод ID стикера, если найден
if sticker_id:
print(f"ID стикера: {sticker_id}")
else:
print("В сообщении нет стикера.")
Не забудьте заменить 'ваш_токен_доступа' на ваш фактический токен доступа VK API.

Этот скрипт выполняет следующие шаги:

Аутентифицируется в VK API.
Извлекает ID сообщения и peer ID из объекта события.
Получает детали сообщения с помощью метода messages.getById.
Извлекает вложения из деталей сообщения.
Перебирает вложения для поиска стикера и выводит его ID.
Кузнецов АрсенийУченик (144) 2 недели назад
Выдает ошибку почему то
Кузнецов Арсений Ученик (144) Кузнецов Арсений, Может из за изменения msg_id, но если оставить как было, то уже ошибка в нем будет
ТатьянаПросветленный (28804) 2 недели назад
 # Извлечение необходимой информации из объекта события  
msg_id = event['object']['message']['id']
peer_id = event['object']['message']['peer_id']

# Получение деталей сообщения
message_details = vk.messages.getById(message_ids=[msg_id])['items'][0]

# Извлечение вложений
attachments = message_details.get('attachments', [])

# Инициализация sticker_id как None
sticker_id = None

# Перебор вложений для поиска стикера
for attachment in attachments:
if attachment['type'] == 'sticker':
sticker_id = attachment['sticker']['sticker_id']
break

# Вывод ID стикера, если найден
if sticker_id:
print(f"ID стикера: {sticker_id}")
else:
print("В сообщении нет стикера.")
ТатьянаПросветленный (28804) 2 недели назад
 # Извлечение необходимой информации из объекта события 
msg_id = event['object']['message']['id']
peer_id = event['object']['message']['peer_id']

# Получение деталей сообщения
message_details = vk.messages.getById(message_ids=[msg_id])['items'][0]

# Извлечение вложений
attachments = message_details.get('attachments', [])

ТатьянаПросветленный (28804) 2 недели назад
 # Инициализация sticker_id как None  
sticker_id = None

# Перебор вложений для поиска стикера
for attachment in attachments:
if attachment['type'] == 'sticker':
sticker_id = attachment['sticker']['sticker_id']
break

# Вывод ID стикера, если найден
if sticker_id:
print(f"ID стикера: {sticker_id}")
else:
print("В сообщении нет стикера.")
Похожие вопросы