danaforevr
питонист
Предисловие
У меня появилась вполне простая задача,в определенное время отправить пользователю сообщение. К моему удивлению в интернете нормальных,рабочих решений я не нашел.Благо до меня дошло,что я ж программист и решил написать скрипт для реализации моей задачи,которым решил поделиться со всеми. Код написан конечно же на Python.
Установка Python
Переходим на официальный сайт PythonА - ТЫК. Скачиваем 3+ версию и устанавливаем ее. Суть работы скрипта
С помощью библиотеки 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 #просто продолжаем выполнение кода.
Вот мы и закончили написание нашего скрипта,в итоге пользователь получает такое сообщение
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