• VLMI - форум по обмену информацией. На форуме можете найти способы заработка, разнообразную информацию по интернет-безопасности, обмен знаниями, курсы/сливы.

    После регистрации будут доступны основные разделы.

    Контент форума создают пользователи, администрация за действия пользователей не несёт ответственности, отказ от ответственности. Так же перед использованием форума необходимо ознакомиться с правилами ресурса. Продолжая использовать ресурс вы соглашаетесь с правилами.
  • Подпишись на наш канал в Telegram для информации о актуальных зеркалах форума: https://t.me/vlmiclub

Авторская статья Запланированная отправка сообщений в VK

danaforevr

питонист

danaforevr

питонист
Резидент
Сообщения
269
Реакции
516
0 руб.
Предисловие
У меня появилась вполне простая задача,в определенное время отправить пользователю сообщение. К моему удивлению в интернете нормальных,рабочих решений я не нашел.
Благо до меня дошло,что я ж программист и решил написать скрипт для реализации моей задачи,которым решил поделиться со всеми. Код написан конечно же на Python.

Установка Python
Переходим на официальный сайт PythonА - ТЫК. Скачиваем 3+ версию и устанавливаем ее.
1541584559686.png1541584569987.png1541584578936.png
Суть работы скрипта
С помощью библиотеки vk_api мы подключаемся к нашему аккаунту,а с помощью библиотеки datetime получаем текущее время, дальше бесконечный цикл проверяет не равняется ли текущее время нужному значению,если это так то отправляем пользователю наше сообщение и завершаем программу,иначе продолжаем работу цикла.
Начинаем кодить
С помощью питоновского установщика пакетов установим библиотеку vk_api,для этого запустим терминал(cmd) и введем туда такую команду
Код:
pip install vk_api
_____________________________________________________________________________________________________________________________________
В самом начале программы, мы должны подключить библиотеки, которые мы будем использовать в нашем скрипте.
Код:
import vk_api,datetime #подключаем библиотеку vk_api(для работы с vk) и datatime(для получения реального времени)
_____________________________________________________________________________________________________________________________________
Создадим функцию для отправки сообщения пользователю с определенным id.
Код:
def send_mes():  #создаем функцию, которая называется send_mes
    try:  #попробовать сделать следующие действия, если не получится, то выполнить действия после except
        vk_session = vk_api.VkApi('+7xxxxxxxxx', 'пароль') #создаем переменную vk_session, которая равняется логину и паролю от нашего аккаунта вк
        vk_session.auth() #по значениям переменной vk_session подлючаемся к аккаунту.
        vk = vk_session.get_api() #создаем переменную vk,которая равняется получению api для работы с вк.
        vk.messages.send(user_id=id_пользователя,message='Скинни,займи деняк! https://a.kal.ru/a426.ng') #с помощью функции messages.send отправляем пользователю с id указанным после user_id,сообщение записанное в переменной message.
        sys.exit() #закрывает/выходит из скрипта
    except: #если действие после try не заработало/выдало ошибку, то выполнить действие после except
        pass #просто продолжаем выполнение кода.
_____________________________________________________________________________________________________________________________________
Теперь создаем функцию для отправки для получения текущего времени.
Код:
def realtim():  #создаем функцию, которая называется realtim
    global realtime #говорим что переменная realtime будет доступна не только в данной функции.
    now = datetime.datetime.now() #переменная now равняется получения реального времени с помощью функции библиотеки  datatime
    realtime=str(now.hour)+":"+str(now.minute) #переведем полученное время в удобный для нас вид и запишем это в переменную realtime равняется
_____________________________________________________________________________________________________________________________________
Осталось запустить бесконечный цикл,который будет ждать нужное время
Код:
while True: #Запускаем бесконечный цикл
    realtim() #запускаем функцию realtim
    if realtime == '10:11': #если переменная realtime равняется  нужному нам времени(10:11),то
        try: #попробовать сделать следующие действия, если не получится, то выполнить действия после except
            send_mes() #запускаем функцию send_mes
            break #завершаем цикл
        except: #если действие после try не заработало/выдало ошибку, то выполнить действие после except
            pass #просто продолжаем выполнение кода.
    else: #иначе
        pass #просто продолжаем выполнение кода.
_____________________________________________________________________________________________________________________________________
Вот мы и закончили написание нашего скрипта,в итоге пользователь получает такое сообщение
1541589937145.png
P.s.
Если вы хотите отправить картинку,то советую использовать какой-либо фотохостинг и отправлять ссылку на загруженное фото,а вк сам загрузит превью в диалог.
Просто метод отправки изображения vk_api довольно сложный,и мне просто было лень в нем разбираться)
Код:
import vk_api,datetime
def send_mes():
    try:
        vk_session = vk_api.VkApi('+7xxxxxxxxx', 'пароль')
        vk_session.auth()
        vk = vk_session.get_api()
        vk.messages.send(user_id=id_пользователя,message='Скинни,займи деняк! https://a.kal.ru/a426.ng')
        sys.exit()
    except:
        pass

def realtim():
    global realtime
    now = datetime.datetime.now()
    realtime=str(now.hour)+":"+str(now.minute)
while True:
    realtim()
    if realtime == '10:11':
        try:
            send_mes()
            break
        except:
            pass
    else:
        pass
 

Morfius

Новичок
Сообщения
2
Реакции
0
0 руб.
хм прикольно конечно но для этого надо что бы ПК всё время работал пока тайм не сработает потому что по другому никак он не будет проводить цикл
 

danaforevr

питонист

danaforevr

питонист
Резидент
Сообщения
269
Реакции
516
0 руб.
хм прикольно конечно но для этого надо что бы ПК всё время работал пока тайм не сработает потому что по другому никак он не будет проводить цикл
Конечно,а как иначе?
Скрипт должен быть запущен(хоть на телефоне(pydroid3) )
 

belapko231

Новичок
Сообщения
1
Реакции
0
0 руб.
Как правильно вводить id пользователя?
user_id=*************
user_id=id************
user_id=id_**********

Хоть и пробовал все эти варианты, всё равно ничего не работает

Можете, пожалуйста, привести пример программы, заполнив всё как надо рандомными данными? (Я обыкновенный ничего непонимающий человек)
 

emilyrudd122

Новичок
Сообщения
2
Реакции
0
0 руб.
Telegram
Как правильно вводить id пользователя?
user_id=*************
user_id=id************
user_id=id_**********

Хоть и пробовал все эти варианты, всё равно ничего не работает

Можете, пожалуйста, привести пример программы, заполнив всё как надо рандомными данными? (Я обыкновенный ничего непонимающий человек)

user_id=12345
если не работает - ошибка в другом
 
Сверху Снизу