Упоминание пользователя в сообщении. Вк бот?

Создаю бота для вк. Пока что учу основы, но я не разобрался, как сделать так, чтобы бот упоминал пользователя: в строчке send_message(vk, 'user_id', event.user_id, message= 'Приветствую, {упоминание пользователя}! Напиши "Помощь"')

Подскажите, как это сделать. Нужно именно чтобы высвечивалось в сообщении имя пользователя, а при нажатии перекидывало на его страницу
import sys
sys.path.insert(0, '../')

from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
import vk_api
from datetime import datetime
import random
import os
import time

# DEFAULT, NEGATIVE, POSITIVE, PRIMARY
# API-ключ созданный ранее
token = "секрет"

# Авторизуемся как сообщество
vk = vk_api.VkApi(token=token)

longpoll = VkLongPoll(vk)

def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'помощь':

        keyboard.add_button('Привет', color=VkKeyboardColor.POSITIVE)


    elif response == 'закрыть':
        print('закрываем клавиатуру')
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard


def send_message(vk, id_type, id, message=None, keyboard=None, rar=None):
    vk.method('messages.send',{id_type: id, 'message': message, 'random_id': random.randint(-2147483648, +2147483648), 'keyboard': keyboard, 'rar' : rar})

def get_user_info(user_id):
    return vk.method('users.get', {'user_ids': user_id})

for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        print('Сообщение пришло в: ' + str(datetime.strftime(datetime.now(), "%H:%M:%S")))
        print('Текст сообщения: ' + str(event.text))
        print('Сообщение от пользователя: ' + str(event.user_id))
        response = event.text.lower()
        keyboard = create_keyboard(response)

        if event.from_user and not event.from_me:
            if response == "начать": #НАЧАТЬ
                send_message(vk, 'user_id', event.user_id, message= 'Приветствую, {упоминание пользователя}! Напиши "Помощь"')

            elif response=='закрыть':
                send_message(vk, 'user_id', event.user_id, message='Закрываю клавиатуру',keyboard=keyboard)
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
WolfInChains
@WolfInChains
Получаете имя
def get_name(uid: int) -> str:
    data = vk.method("users.get", {"user_ids": uid})[0]
    return "{} {}".format(data["first_name"], data["last_name"])

Далее в строку отправки сообщения вставляете
f"Приветствую [id{event.user_id}|{get_name(event.user_id)}]"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
limontasher
@limontasher
Начинающий программист
Приветствую, для начала, чтобы просто упомянуть пользователя в диалоге нужно прописать: [id267698587|Имя Фамилия]
Теперь вам нужно добавить 'id' к event.user_id, затем получить имя и фамилию пользователя, лично я делаю это так:
getting = vks.get_api()
nam = getting.users.get(user_ids=senders, fields='first_name')[0]['first_name']
fam = getting.users.get(user_ids=senders, fields='last_name')[0]['last_name']
fname = nam + ' ' + fam

#и затем все складываем:

senders = event.message.get("from_id")
sender = event.chat_id
idus = 'id' + str(senders)

wrsms(sender, '[' + idus + ('|') + fname + ']') #вызов функции для отправки сообщения

Удачной разработки на языке python!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 ₽
OnederX Москва
от 100 000 до 120 000 ₽
Кенарий Санкт-Петербург
от 120 000 до 250 000 ₽
28 сент. 2020, в 00:10
15000 руб./за проект
27 сент. 2020, в 21:54
15000 руб./за проект