jeeand0305 / api_vk_test

Обучение и обкат токена в ВК
0 stars 0 forks source link

Vk_bot_work_messange #1

Open jeeand0305 opened 1 year ago

jeeand0305 commented 1 year ago

import json import vk_api import time import random

import vk_users_ide

from message_bot_gpt_izm1 import mes_1

import message_bot_gpt_izm1

25.09

token="vk1.a.aoB6wd8voabpRI7ppT_a9i59rSrc6DWlelTRdtV0j6IyhNpHU4-ymvWdFfAUdeGKeHo-_UT64rcKLr_4_S1dmb8abSEZQNmZvZSY9kckiXBM0-bfgu7EEv-ej69vvqDO_v_QIrru_cpwEv0ieVpTNyuQ4n1OR1WrXd7Ft6GO9uoIxIvBn2CclLXeOn2VsohjGWHIj9VmnOyXsOCxBEELmA"

vk_session = vk_api.VkApi(token=token) vk = vk_session.get_api()

global peremenai

count_send=0

'''

  1. собираем данные аудиторию М или Ж по нужному запросу и возрасту
  2. пишем для них рекламный пост или сообщение
  3. прочитываем ботом полученные ответы
  4. пишем логику ответов лучший вариант о вечаеи ИИ
  5. получаем Лиды
  6. запоковываем фрейм ворк

'''

парсит данные user по критериям отбора

чтобы спарсить максимум count<1000, работа по age

def searh_users_vk( count=20, city=56, sex=1, age_from=21, age_to=45 ): danie_vk=vk.users.search( count=count, city=city, #городам присвоены номера sex=sex, #1жен, 2муж age_from=age_from, #возрост от age_to=age_to #возрост до )

print("function work")

print(danie_vk) 
return danie_vk

&&&&____

получить сообщение пришедшее в ВК

def get_messag_vk( offset = 1, #смеще для выборки int count=10, #количество сообщений

time_offset = 0, # 0 все сообщени

filters = 5 ):# важные сообщения 8

last_message_id есть метод по id но завтсим от count, offset

mne_message = vk.messages.get(

offset = offset, count=count,

time_offset = time_offset,

filters = filters)
print(mne_message)

диалоги из ВК def get_messa_dialig( offset=1, count=5, start_message_id=5, preview_length=10, unread =0): def get_messa_dialig( offset=1, count=5, start_message_id=5, preview_length=10, unread =0):

for i in range( 10):
try: message=get_messag_vk( offset = i*(1), count=5,

time_offset = 0,

filters = 8)
    print (message)
except:
    print ('error')

упаковывает в json, file

def perenos_json(pars_dan): dict_n_json=json.dumps(pars_dan) with open("vk_users_ide.json", "w") as wrem_file:

for index in pars_dan:

    json.dump(pars_dan["items"], wrem_file)

perenos_json(vk_dan)

распаковывает в json id,name -users

def perenos_open(): with open("vk_users_ide.json.son", "r") as wrem_file: file_j=json.load(wrem_file) print(file_j[0]) print(wrem_file)

perenos_open()

text для мессенджера

def prints(nam,mes, drop): name=nam print(mes[drop][0], name, mes[drop][2])

отправка сообщения через id сообщения

не больше 20 сообщений новых пользователей в день

def send_messenge(num_id, message): global count_send count_messe_error=0 try: vk_session.method("messages.send",{ 'user_id':num_id, 'message': message, 'random_id':0 }) count_send+=1 except: count_messe_error+=1

send_messenge(322428004) #zakriti. chat

send_messenge(799172833)# otcrity chat

функция для таймера с рандомоm, для отправки count_id

def sleep_random(count_id): for i in range(1, count_id): number_second = random.randint(2, 5) time.sleep(number_second)

функция чтения сообщение от user

def message_get(): request_m = vk.messages.get(filters=8, count=200) f = vk.messages.getByld(message_ids=7744818) print (f)

message_get()

получение данных по id

def user_parsin_id(id_user): pars_user=vk.users.get(users_ids=id_user, fields='about') print (pars_user)

def main(): count_send_day20=0 count_num_mess=0 users_parsi=searh_users_vk( count=100, city=56, sex=1, age_from=30, age_to=31)

print ("hood", users_parsi['items'][0]['first_name'])

for dict_user in users_parsi['items']:
    sleep_random(3)

чтобы увеличить тайм рандома по времени можно поменять числа

    count_send_day20+=1
    if   count_send_day20 < 20:
        count_num_mess=random.randint(1,5)
        messeng= mes_1[count_num_mess][0]+dict_user['first_name']+mes_1[count_num_mess][2]
        send_messenge(dict_user['id'], messeng)
        print("Количество человек получившие сообщение", count_send)

main()

следующий шаг принимать сообщения

и написать простую логику ответа

пояснения

_____

парсит данные user по критериям отбора

чтобы спарсить максимум count<1000, работа по age

def searh_users_vk(

count=20,

city=56,

sex=1,

age_from=21, ;

age_to=45

):

danie_vk=vk.users.search(

count=count,

city=city, #городам присвоены номера

sex=sex, #1жен, 2муж

age_from=age_from, #возрост от

age_to=age_to #возрост до

)

print("function work")

print(danie_vk)

return danie_vk

searh_users_vk(

count=200.,

city=56,

sex=1,

age_from=30,

age_to=31)

собираем данные из друзей из моей страницы и отбираем женский пол по окончанию фамилии

def frends_messen(): count=0
user_str='' friends =vk_session.method('friends.get') for friend in friends["items"] : user =vk_session.method('users.get', {'user_ids': friend}) status =vk_session.method('status.get', {'status_ids': friend}) user_str = str(user[0] ['last_name'] )

отбираем женский пол по окончание в фамилии

    if user_str[-1] in "а, я":
        count+=1
        print(count, '/',  user_str)

frends_messen()

jeeand0305 commented 1 year ago

ВК работа--c api