Answer the question
In order to leave comments, you need to log in
Mentioning a user in a message. Vk bot?
I create a bot for VK. So far I'm learning the basics, but I haven't figured out how to make the bot mention the user: in the line send_message(vk, 'user_id', event.user_id, message= 'Hi, {mention user}! Write "Help"'
) , how to do it. It is necessary that the user name be displayed in the message, and when clicked, it will redirect to his page
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)
Answer the question
In order to leave comments, you need to log in
Get a name
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)}]"
Greetings, to start, to just mention the user in the dialog you need to write: [id267698587|FirstName LastName]
Now you need to add 'id' to event.user_id, then get the user's first and last name, personally I do it like this:
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 + ']') #вызов функции для отправки сообщения
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question