Найти тему
Lerrmar

Пони бот для ВК. колхозим..

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

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

https://github.com/Lerrmar/Ponybot

И еще скажу что код как франкенштейн, сшит из разных кусков, так что может быть страшен и не оптимизирован.

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

-2

Поихали. Тут короче импортируемые модули. Версия АПИ в вк, тут всё просто.

# -*- coding: utf-8 -*-
# Версия API: 5:100
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.utils import get_random_id
import random
import requests
import time
from bs4 import BeautifulSoup
import requests
from fake_useragent import UserAgent

#
полезные ссылки
#
полезные ссылки
#
полезные ссылки
#
про парсинг
Заходим в группу(Управление, работа с API), получаем токен, вставляем в код и номер группы типа vk.com/club
112312312 нужны только цифры
def main():
while True: # цикл если бот где то сломается, то он перезапустится
try:

vk_session = vk_api.VkApi(
token='
Ваш токен группы')

longpoll = VkBotLongPoll(vk_session, '
ваш id группы')
vk = vk_session.get_api()
for event in longpoll.listen(): # получает событие от сервера
print(longpoll)
print("longpoll")

if event.type == VkBotEventType.MESSAGE_NEW:
print('Новое сообщение') # для отслеживания работоспособности
print(event) # данные от сервера с которыми работает бот

if event.obj.text == event.obj.text: # если боту написали определенный текст
print(event.obj.text)
print('Просят пони')

UserAgent().chrome # что бы ваш парсинг выглядел не как хулиганство от бота, кстати не знаю срабатывает ли он

numsi = random.randrange(1, 4500) # рандомно выбирает число
numsist = str(numsi)
print(numsi)
print("numsi " * 5)

main_pagest =
'сайт который вы хотите парсить, естественно парсинг придется изменить немного/' + numsist # случайная страница из 4500 страниц
main_page = str(main_pagest)
print(main_page)
print("main_page " * 5)
response = requests.get(main_page)
html = response.content
soup = BeautifulSoup(response.text, "html.parser")
issues = soup.find_all("div", {"class": "image"}) # парсим страницу, всё то где есть ссылки на картинки
print(issues)
print("issues " * 5)
obj23 = [] #
про добавление в список
for issue in issues:
try:
obj2 = issue.find("a")["href"] # очищаем ссылки на картинки и заносим в список
except:
pass
obj23.append(obj2)
itogpony = random.choice(obj23) # выбираем случайную ссылку из нашего списка ссылок
print(itogpony)
print("itogpony " * 5)
print()

url = [itogpony] # начинаем скачивание и загрузку картинки

def get_file(url):
response = requests.get(url, stream=True)
return response

def save_data(name, file_data):
file = open(name, 'bw') # Бинарный режим, изображение передається байтами
for chunk in file_data.iter_content(4096): # Записываем в файл по блочно данные
file.write(chunk)

def get_name(url):
name = 'pony.jpg'
return name

for name in url:
save_data(get_name(name), get_file(name)) # сохраняем картинку на диск
time.sleep(1) # спим, время отдыха, а картинка пока скачивается, если инет у вас слабый ставьте больше времени

uploader = vk_api.upload.VkUpload(vk) # загружаем картинку на сервера вк
img = uploader.photo_messages("pony.jpg")
media_id = str(img[0]['id'])
owner_id = str(img[0]['owner_id'])

vk.messages.send(
peer_id=event.obj.peer_id, # peer_id уникальное ид для чата, from_id ид того кто написал
random_id=get_random_id(),
message=("Держи пони"),
# message=("Держи пони - " + event.obj.text),
attachment=("photo" + owner_id + "_" + media_id)
)

else:
print(event.type)
print()


except:
pass



if __name__ == '__main__':
main()

-3

Да уж, не всегда пони выглядят как пони)