Как написать бота ВК для группы на питоне

Для создания чат-бота нам нужен сам python и библиотека vk_api. Ее можно установить через cmd или bash.С помощью команды:

pip install vk_api

После успешной установки приступим к написанию чат-бота.

Импортируем библиотеку в наш проект.

import vk_api

Для создания чат-бота вам нужен токен api вк. Управление группой / работа с api и нажимаем получить ключ доступа.

Подключаем остальные модули.

import json import re import time import requests from random import randint
token = ‘Ваш ключ доступа’ vk = vk_api.VkApi(token = token) vk._auth_token() value =

Пишем цикл для отслеживания сообщений по api.

while True: messages = vk.method(‘messages.getConversations’,value) if messages[‘count’] >= 1: user_id = messages[‘items’][0][‘last_message’][‘from_id’] text = messages[‘items’][0][‘last_message’][‘text’] # Переменная в , которой содержится сообщение print(text)

Пишем скрипт по отправке фото.

Как написать бота на Python для ВКонтакте? Часть 1. Установка и начало программы.


uploader = vk_api.upload.VkUpload(vk) img = uploader.photo_messages(‘astronaut-11080_1920.jpg’)[0] vk.method(‘messages.send’,)

Источник: vkontaktbot.ru

Простой бот для приложений Вконтакте на Python

Думаю все знают про приложения-игралки, со всяким рейтингом среди друзей, популярные среди обитателей вконтакта. В этом топике я расскажу, как можно быть в них на первом месте, при этом не задрачиваясь, и не отупляя свой мозг.

Бот для Вконтакте

В большинстве случаев, приложения обмениваются с сервером информацией по HTTP, посылая информацию POST-запросом, в ответ получая XML. Наша задача состоит в том, чтобы эмитировать эти запросы. Нашим подопытным кроликом будет приложение «Тюгяга»

Какие инструменты нам потребуются:

  • Python — Любимый всеми язык. Будем использовать только стандартную библиотеку.
  • Charles — простой HTTP-прокси. Его мы будем использовать для перехвата и анализа запросов.

Итак, приступим:

Для начала запустим Charles. Разобраться в нём сможет даже ребёнок. Приложение советую запускать в Firefox’е. Попробуйте выполнить какое-нибудь действие в «Тюряге», например собрать сигареты, и посмотрите на последний запрос. В общем случае вы увидите что-то вроде этого:

POST /prison/universal.php?office HTTP/1.1
Host: 109.234.156.250
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Referer: xxxxx
Content-type: application/x-www-form-urlencoded

Мастер-класс «DSR Corporation: Как написать бота на Python для группы ВКонтакте»


Content-length: 111

method=officeuser=xxxxxxxxxkey=xxxxxxxxxxxxxx

Тут мы имеем URI, HTTP-заголовки, пустую строку, и данные, отправленные на сервер. Что же отправляется на сервер:

key — Ключ, необходимый для идентификации вас именно в этом приложении. Предоставляется контактом, для каждого приложения разный. По этому ключу невозможно взломать вашу страницу или узнать какие-нибудь ваши данные. Периодически меняется, кстати.

sig — Сигнатура, генерируемая тюрягой. Честно говоря, я не разобрался для чего она служит и по какому принципу генерируется. Но без неё никак. Лично я просто отловил их несколько штук и рандомно подставляю для каждого запроса. 🙂

Еще по теме:  Как отметить группу в ВК

method — Сообщает серверу, что за действие вы совершили.

Отправляются ещё и дополнительные данные, такие как getidea — сообщает сколько сигарет вы собрали.

Переходим к питону:

#!/usr/bin/env python3 # t.py import urllib, time, http.client, random, threading from xml.dom import minidom

Импортируем необходимые модули из стандартной библиотеки
xml.dom.minidom нужен если вы собирайтесь обрабатывать XML-ответ.

sigs = (’21ddcf3ea352f24ebdfe65bce51258da’,’4b8874255d3f868e4e9f4006e51635de’,’8dbedd3e931c8fd4fc97fa0fa74a1a20′, ‘2243effc5a45a32c67b06898fb0b9548′,’7f47c0b6e9e385b8234ca9dce375a0c5′,’bdab387b62bed654492b8c93670a537e’, ‘f17687ea1a535d61124dadb30887d14c’,’938b2f649aec28319ae2433ead41dae5′) h = < ‘Host’:’188.93.20.139′, ‘User-Agent’:’Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15′, ‘Accept’:’text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8′, ‘Accept-Language’:’ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3′, ‘Accept-Charset’:’windows-1251,utf-8;q=0.7,*;q=0.7′, ‘Keep-Alive’:’115′, ‘Content-type’:’application/x-www-form-urlencoded’, >u = ‘Ваш_ID’ k = ‘Ваш key, для идентификации в приложении’

Создаём кортеж из сигнатур, заголовки в форме словаря(лишние я удалил), и две переменные.

def request(post): global h # используем в функции глобальную переменную h connection = http.client.HTTPConnection(‘109.234.155.196:80’) # Создаём объект соединения connection.request(‘POST’, ‘/prison/universal.php’, body = post, headers = h) # отправляем запрос resp = connection.getresponse() # получаем ответ return resp.read() # возвращаем ответ из функции

Т.к. отправлять данные на придётся часто, создадим для этого отдельную функцию

def take_sigareties(): global sigs, u, k # используем в функции глобальные переменные post = urllib.parse.urlencode(< ‘method’ : ‘office’, ‘getidea’ : ‘5’, ‘sig’ : random.choice(sigs), ‘user’ : u, ‘key’ : k >) # с помощью метода urllib.parse.urlencode подготавливаем данные для отправки. данные скармливаем методу в виде словаря while True: # запускаем бесконечный цикл for _ in range(0,20): # запускае цикл for на 20 раз request(post) # с помощью функции, которую мы создали ранее, отправляем данные на сервер print(‘Собрал сиги’) time.sleep(5*20*60+15) # усыпляем поток выполнения на 6015 секунд. т.е. следующая итерация for произойдёт через указанное время. time.sleep(8*60*60) # после того как собрали 20 раз сиги, усыпляем поток на 8 часиков, чтобы нас не спалили 😉

Создаём функцию для сбора сигареток

По аналогии создадим функцию для сбора прибыли раз в 8 часов:

def take_rewards(): global sigs, u, k post = urllib.parse.urlencode(< ‘method’ : ‘getAllBuildingsRewards’, ‘sig’ : random.choice(sigs), ‘user’ : u, ‘key’ : k >) while True: request(post) print(‘Собрал прибыль’) time.sleep(8*60*60+15)

Т.к. нам надо чтобы функции работали независимо друг от друга, запустим их в отдельных потоках:

t1 = threading.Thread(target = take_sigareties) # создаём объект потока, target’у подаётся созданная функция t1.deamon = True # это нужно для того, чтобы при закрытии основного потока, дочерний поток тоже закрывался t2 = threading.Thread(target = take_rewards) t2.deamon = True t1.start() # запускаем поток на выполнение t2.start()

На этом собственно всё, запускаем скрипт, и радуемся, что больше не надо заходить в приложение каждые 20 минут, чтобы собрать сигоретки.

По аналогии можно писать ботов для других приложений.

Вот полный код бота.

#!/usr/bin/env python3 # t.py import urllib, time, http.client, random, threading from xml.dom import minidom sigs = (’21ddcf3ea352f24ebdfe65bce51258da’,’4b8874255d3f868e4e9f4006e51635de’,’8dbedd3e931c8fd4fc97fa0fa74a1a20′, ‘2243effc5a45a32c67b06898fb0b9548′,’7f47c0b6e9e385b8234ca9dce375a0c5′,’bdab387b62bed654492b8c93670a537e’, ‘f17687ea1a535d61124dadb30887d14c’,’938b2f649aec28319ae2433ead41dae5′) h = < ‘Host’:’188.93.20.139′, ‘User-Agent’:’Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15′, ‘Accept’:’text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8′, ‘Accept-Language’:’ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3′, ‘Accept-Charset’:’windows-1251,utf-8;q=0.7,*;q=0.7′, ‘Keep-Alive’:’115′, ‘Content-type’:’application/x-www-form-urlencoded’, >u = ‘Ваш_ID’ k = ‘Ваш key’ def request(post): global h # используем в функции глобальную переменную h connection = http.client.HTTPConnection(‘109.234.155.196:80’) # Создаём объект соединения connection.request(‘POST’, ‘/prison/universal.php’, body = post, headers = h) # отправляем запрос resp = connection.getresponse() # получаем ответ return resp.read() # возвращаем ответ из функции def take_rewards(): global sigs, u, k post = urllib.parse.urlencode(< ‘method’ : ‘getAllBuildingsRewards’, ‘sig’ : random.choice(sigs), ‘user’ : u, ‘key’ : k >) while True: request(post) print(‘Собрал прибыль’) time.sleep(8*60*60+15) def take_sigareties(): global sigs, u, k # используем в функции глобальные переменные post = urllib.parse.urlencode(< ‘method’ : ‘office’, ‘getidea’ : ‘5’, ‘sig’ : random.choice(sigs), ‘user’ : u, ‘key’ : k >) # с помощью метода urllib.parse.urlencode подготавливаем данные для отправки. данные скармливаем методу в виде словаря while True: # запускаем бесконечный цикл for _ in range(0,20): # запускае цикл for на 20 раз request(post) # с помощью функции, которую мы создали ранее, отправляем данные на сервер print(‘Собрал сиги’) time.sleep(5*20*60+15) # усыпляем поток выполнения на 6015 секунд. т.е. следующая итерация for произойдёт через указанное время. time.sleep(8*60*60) # после того как собрали 20 раз сиги, усыпляем поток на 8 часиков, чтобы нас не спалили 😉 def do_city_action(): global sigs, u, k while True: action_id = 1 while action_id < 8: for _ in range(0,5): post = urllib.parse.urlencode(< ‘method’ : ‘doCityAction’, ‘city’ : ‘1’, ‘action_id’ : str(action_id), ‘action_type’ : ‘3’, ‘sig’ : random.choice(sigs), ‘user’ : u, ‘key’ : k >) response = request(post) print(‘Выполнил задание’) if int(minidom.parseString(str(response, ‘utf8’)).getElementsByTagName(‘energy’)[0].firstChild.data) < 10: time.sleep(40*5*60) action_id +=1 def vote_friends_to_gym(): global sigs, u, k friends = () # кортеж друзей, которых вы хотите позвать в спортзал while True: for friend in friends: post = urllib.parse.urlencode(< ‘method’ : ‘voteForFriend’, ‘model_id’ : ‘1’, ‘sex’ : ‘0’, ‘friend_uid’ : friend, ‘vote’ : ‘5’, ‘username’ : ‘London Eyes’, ‘sig’ : random.choice(sigs), ‘user’ : u, ‘key’ : k >) request(post) print(‘Позвал ‘ + friend + ‘ в спортзал’) time.sleep(24*60*60+15) def break_terpilas_faces(): global sigs, u, k terpilas = () # кортеж друзей, на которых вы хотите наехать while True: for terpila in terpilas: post = urllib.parse.urlencode(< ‘method’ : ‘challengeToDuel’, ‘enemy’ : terpilas, ‘sig’ : random.choice(sigs), ‘user’ : u, ‘key’ : k >) request(post) print(‘Наехал на ‘ + terpila) time.sleep(24*60*60+15) def send_presents(): recipients = » # чезез запятую id друзей, которым вы хотите заслать подогрев while True: post = urllib.parse.urlencode(< ‘method’ : ‘sendPresent’, ‘recipients’ : recipients, ‘present_id’ : ‘5’, ‘sig’ : random.choice(sigs), ‘user’ : u, ‘key’ : k >) request(post) print(‘Послал подогревы’) time.sleep(24*60*60+15) t1 = threading.Thread(target = take_rewards) # создаём объект потока, target’у подаётся созданная функция t1.deamon = True # это нужно для того, чтобы при закрытии основного потока, дочерний поток тоже закрывался t2 = threading.Thread(target = take_sigareties) t2.deamon = True t3 = threading.Thread(target = do_city_action) t3.deamon = True t4 = threading.Thread(target = vote_friends_to_gym) t4.deamon = True t5 = threading.Thread(target = break_terpilas_faces) t5.deamon = True t6 = threading.Thread(target = send_presents) t6.deamon = True t1.start() # запускаем поток на выполнение t2.start() t3.start() t4.start() t5.start() t6.start()

Еще по теме:  Как можно удалить страницу в ВК

Источник: korzh.net

Питоном по телеграму! Пишем пять простых Telegram-ботов на Python

В этой статье мы реали­зуем прос­той, но край­не полез­ный про­ект на Python — бота для Telegram. Боты — это неболь­шие скрип­ты, которые могут вза­имо­дей­ство­вать с API, что­бы получать сооб­щения от поль­зовате­ля и отправ­лять информа­цию в раз­ные чаты и каналы.

Python для новичков

Ес­ли ты сов­сем не ори­енти­руешь­ся в Python, то отличным началом будет проч­тение трех ввод­ных ста­тей, которые я пуб­ликовал в «Хакере» этим летом, либо посеще­ние кур­са «Python для нович­ков», который я нач­ну вес­ти для читате­лей «Хакера» уже сов­сем ско­ро — 30 нояб­ря.

  • Python с абсо­лют­ного нуля. Учим­ся кодить без скуч­ных кни­жек
  • Python с абсо­лют­ного нуля. Учим­ся работать со стро­ками, фай­лами и интерне­том
  • Python с абсо­лют­ного нуля. Работа­ем с ОС, изу­чаем регуляр­ные выраже­ния и фун­кции

Что­бы соз­дать бота, нам нуж­но дать ему наз­вание, адрес и получить токен — стро­ку, которая будет однознач­но иден­тифици­ровать нашего бота для сер­веров Telegram. Зай­дем в Telegram под сво­им акка­унтом и откро­ем «отца всех ботов», BotFather.

Жмем кноп­ку «Запус­тить» (или отпра­вим / start ), в ответ BotFather приш­лет нам спи­сок дос­тупных команд:

  • / newbot — соз­дать нового бота;
  • / mybots — редак­тировать ваших ботов;
  • / setname — сме­нить имя бота;
  • / setdescription — изме­нить опи­сание бота;
  • / setabouttext — изме­нить информа­цию о боте;
  • / setuserpic — изме­нить фото ава­тар­ки бота;
  • / setcommands — изме­нить спи­сок команд бота;
  • / deletebot — уда­лить бота.

От­пра­вим бате‑боту коман­ду / newbot , что­бы соз­дать нового бота. В ответ он поп­росит ввес­ти имя будуще­го бота, его мож­но писать на рус­ском. Пос­ле вво­да име­ни нуж­но будет отпра­вить адрес бота, при­чем он дол­жен закан­чивать­ся на сло­во bot. Нап­ример, xakepbot или xakep_bot . Если адрес будет уже кем‑то занят, BotFather нач­нет изви­нять­ся и про­сить при­думать что‑нибудь дру­гое.

Еще по теме:  Что значит vk me

Ког­да мы наконец най­дем сво­бод­ный и кра­сивый адрес для нашего бота, в ответ получим сооб­щение, в котором пос­ле фра­зы Use this token to access the HTTP API будет написа­на стро­ка из букв и цифр — это и есть необ­ходимый нам токен. Сох­раним ее где‑нибудь на сво­ем компь­юте­ре, что­бы потом исполь­зовать в скрип­те бота.

Для вза­имо­дей­ствия с Telegram API есть нес­коль­ко готовых модулей. Самый прос­той из них — Telebot. Что­бы уста­новить его, набери

pip install pytelegrambotapi

В Linux, воз­можно, понадо­бит­ся написать pip3 вмес­то pip , что­бы ука­зать, что мы хотим работать с треть­ей вер­сией Python.

Эхо-бот

Для начала реали­зуем так называ­емо­го эхо‑бота. Он будет получать от поль­зовате­ля тек­сто­вое сооб­щение и воз­вра­щать его.

Источник: xakep.ru

Рейтинг
( Пока оценок нет )
Загрузка ...