Как сделать чтобы vk_api могло запоминать с кем общаться

Как сделать чтобы бот в вк мог брать ник пользователя из профиля, и как пример мог писать когда у пользователя день рождения. Писал ему поздравления


Ответы (1 шт):

Автор решения: nomnoms12

Для получения информации о нике и дате рождения можно воспользоваться методом users.get.

Пример:

from vk_api import VkApi


vk_session = VkApi(token='[token]')
vk = vk_session.get_api()

r = vk.users.get(user_ids=1, fields='screen_name, bdate')[0]
print(f"Ник: {r['screen_name']}\nДата рождения: {r['bdate']}")

stdout:

Ник: durov
Дата рождения: 10.10.1984

Пример бота (Long Poll v5.103):

from vk_api import VkApi
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.utils import get_random_id


ACCESS_TOKEN = ''  # Подставьте свой!
GROUP_ID =         # Подставьте свой!


def main():
    vk_session = VkApi(token=ACCESS_TOKEN)
    vk = vk_session.get_api()

    longpoll = VkBotLongPoll(vk_session, GROUP_ID)
    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            message = event.obj['message']
            user_id = message['from_id']

            user_info = vk.users.get(user_ids=user_id, fields='screen_name, bdate')[0]
            screen_name = user_info.get('screen_name')
            bdate = user_info.get('bdate')

            vk.messages.send(
                peer_id=message['peer_id'],
                message=f'Ник: {screen_name}\nДата рождения: {bdate}',
                random_id=get_random_id(),
            )


if __name__ == '__main__':
    main()
→ Ссылка